@37signals/basecamp 0.2.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 +600 -0
- package/dist/auth-strategy.d.ts +36 -0
- package/dist/auth-strategy.d.ts.map +1 -0
- package/dist/auth-strategy.js +33 -0
- package/dist/auth-strategy.js.map +1 -0
- package/dist/client.d.ts +224 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +715 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +137 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +269 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/metadata.json +2281 -0
- package/dist/generated/openapi-stripped.json +21268 -0
- package/dist/generated/path-mapping.d.ts +8 -0
- package/dist/generated/path-mapping.d.ts.map +1 -0
- package/dist/generated/path-mapping.js +192 -0
- package/dist/generated/path-mapping.js.map +1 -0
- package/dist/generated/path-mapping.ts +199 -0
- package/dist/generated/schema.d.ts +14883 -0
- package/dist/generated/services/attachments.d.ts +27 -0
- package/dist/generated/services/attachments.d.ts.map +1 -0
- package/dist/generated/services/attachments.js +49 -0
- package/dist/generated/services/attachments.js.map +1 -0
- package/dist/generated/services/attachments.ts +59 -0
- package/dist/generated/services/boosts.d.ts +114 -0
- package/dist/generated/services/boosts.d.ts.map +1 -0
- package/dist/generated/services/boosts.js +179 -0
- package/dist/generated/services/boosts.js.map +1 -0
- package/dist/generated/services/boosts.ts +250 -0
- package/dist/generated/services/campfires.d.ts +202 -0
- package/dist/generated/services/campfires.d.ts.map +1 -0
- package/dist/generated/services/campfires.js +309 -0
- package/dist/generated/services/campfires.js.map +1 -0
- package/dist/generated/services/campfires.ts +433 -0
- package/dist/generated/services/card-columns.d.ts +163 -0
- package/dist/generated/services/card-columns.d.ts.map +1 -0
- package/dist/generated/services/card-columns.js +264 -0
- package/dist/generated/services/card-columns.js.map +1 -0
- package/dist/generated/services/card-columns.ts +360 -0
- package/dist/generated/services/card-steps.d.ts +105 -0
- package/dist/generated/services/card-steps.d.ts.map +1 -0
- package/dist/generated/services/card-steps.js +148 -0
- package/dist/generated/services/card-steps.js.map +1 -0
- package/dist/generated/services/card-steps.ts +221 -0
- package/dist/generated/services/card-tables.d.ts +27 -0
- package/dist/generated/services/card-tables.d.ts.map +1 -0
- package/dist/generated/services/card-tables.js +40 -0
- package/dist/generated/services/card-tables.js.map +1 -0
- package/dist/generated/services/card-tables.ts +55 -0
- package/dist/generated/services/cards.d.ts +118 -0
- package/dist/generated/services/cards.d.ts.map +1 -0
- package/dist/generated/services/cards.js +166 -0
- package/dist/generated/services/cards.js.map +1 -0
- package/dist/generated/services/cards.ts +247 -0
- package/dist/generated/services/checkins.d.ts +278 -0
- package/dist/generated/services/checkins.d.ts.map +1 -0
- package/dist/generated/services/checkins.js +420 -0
- package/dist/generated/services/checkins.js.map +1 -0
- package/dist/generated/services/checkins.ts +600 -0
- package/dist/generated/services/client-approvals.d.ts +45 -0
- package/dist/generated/services/client-approvals.d.ts.map +1 -0
- package/dist/generated/services/client-approvals.js +58 -0
- package/dist/generated/services/client-approvals.js.map +1 -0
- package/dist/generated/services/client-approvals.ts +89 -0
- package/dist/generated/services/client-correspondences.d.ts +45 -0
- package/dist/generated/services/client-correspondences.d.ts.map +1 -0
- package/dist/generated/services/client-correspondences.js +58 -0
- package/dist/generated/services/client-correspondences.js.map +1 -0
- package/dist/generated/services/client-correspondences.ts +89 -0
- package/dist/generated/services/client-replies.d.ts +47 -0
- package/dist/generated/services/client-replies.d.ts.map +1 -0
- package/dist/generated/services/client-replies.js +65 -0
- package/dist/generated/services/client-replies.js.map +1 -0
- package/dist/generated/services/client-replies.ts +95 -0
- package/dist/generated/services/client-visibility.d.ts +35 -0
- package/dist/generated/services/client-visibility.d.ts.map +1 -0
- package/dist/generated/services/client-visibility.js +44 -0
- package/dist/generated/services/client-visibility.js.map +1 -0
- package/dist/generated/services/client-visibility.ts +68 -0
- package/dist/generated/services/comments.d.ts +86 -0
- package/dist/generated/services/comments.d.ts.map +1 -0
- package/dist/generated/services/comments.js +129 -0
- package/dist/generated/services/comments.js.map +1 -0
- package/dist/generated/services/comments.ts +185 -0
- package/dist/generated/services/documents.d.ts +92 -0
- package/dist/generated/services/documents.d.ts.map +1 -0
- package/dist/generated/services/documents.js +129 -0
- package/dist/generated/services/documents.js.map +1 -0
- package/dist/generated/services/documents.ts +191 -0
- package/dist/generated/services/events.d.ts +34 -0
- package/dist/generated/services/events.d.ts.map +1 -0
- package/dist/generated/services/events.js +39 -0
- package/dist/generated/services/events.js.map +1 -0
- package/dist/generated/services/events.ts +64 -0
- package/dist/generated/services/forwards.d.ts +112 -0
- package/dist/generated/services/forwards.d.ts.map +1 -0
- package/dist/generated/services/forwards.js +172 -0
- package/dist/generated/services/forwards.js.map +1 -0
- package/dist/generated/services/forwards.ts +241 -0
- package/dist/generated/services/index.d.ts +39 -0
- package/dist/generated/services/index.d.ts.map +1 -0
- package/dist/generated/services/index.js +39 -0
- package/dist/generated/services/index.js.map +1 -0
- package/dist/generated/services/index.ts +38 -0
- package/dist/generated/services/lineup.d.ts +67 -0
- package/dist/generated/services/lineup.d.ts.map +1 -0
- package/dist/generated/services/lineup.js +99 -0
- package/dist/generated/services/lineup.js.map +1 -0
- package/dist/generated/services/lineup.ts +143 -0
- package/dist/generated/services/message-boards.d.ts +27 -0
- package/dist/generated/services/message-boards.d.ts.map +1 -0
- package/dist/generated/services/message-boards.js +40 -0
- package/dist/generated/services/message-boards.js.map +1 -0
- package/dist/generated/services/message-boards.ts +55 -0
- package/dist/generated/services/message-types.d.ts +100 -0
- package/dist/generated/services/message-types.d.ts.map +1 -0
- package/dist/generated/services/message-types.js +144 -0
- package/dist/generated/services/message-types.js.map +1 -0
- package/dist/generated/services/message-types.ts +210 -0
- package/dist/generated/services/messages.d.ts +122 -0
- package/dist/generated/services/messages.d.ts.map +1 -0
- package/dist/generated/services/messages.js +180 -0
- package/dist/generated/services/messages.js.map +1 -0
- package/dist/generated/services/messages.ts +258 -0
- package/dist/generated/services/people.d.ts +122 -0
- package/dist/generated/services/people.d.ts.map +1 -0
- package/dist/generated/services/people.js +167 -0
- package/dist/generated/services/people.js.map +1 -0
- package/dist/generated/services/people.ts +252 -0
- package/dist/generated/services/projects.d.ts +109 -0
- package/dist/generated/services/projects.d.ts.map +1 -0
- package/dist/generated/services/projects.js +153 -0
- package/dist/generated/services/projects.js.map +1 -0
- package/dist/generated/services/projects.ts +224 -0
- package/dist/generated/services/recordings.d.ts +93 -0
- package/dist/generated/services/recordings.d.ts.map +1 -0
- package/dist/generated/services/recordings.js +138 -0
- package/dist/generated/services/recordings.js.map +1 -0
- package/dist/generated/services/recordings.ts +191 -0
- package/dist/generated/services/reports.d.ts +90 -0
- package/dist/generated/services/reports.d.ts.map +1 -0
- package/dist/generated/services/reports.js +124 -0
- package/dist/generated/services/reports.js.map +1 -0
- package/dist/generated/services/reports.ts +187 -0
- package/dist/generated/services/schedules.d.ts +162 -0
- package/dist/generated/services/schedules.d.ts.map +1 -0
- package/dist/generated/services/schedules.js +228 -0
- package/dist/generated/services/schedules.js.map +1 -0
- package/dist/generated/services/schedules.ts +335 -0
- package/dist/generated/services/search.d.ts +45 -0
- package/dist/generated/services/search.d.ts.map +1 -0
- package/dist/generated/services/search.js +56 -0
- package/dist/generated/services/search.js.map +1 -0
- package/dist/generated/services/search.ts +89 -0
- package/dist/generated/services/subscriptions.d.ts +73 -0
- package/dist/generated/services/subscriptions.d.ts.map +1 -0
- package/dist/generated/services/subscriptions.js +119 -0
- package/dist/generated/services/subscriptions.js.map +1 -0
- package/dist/generated/services/subscriptions.ts +160 -0
- package/dist/generated/services/templates.d.ts +140 -0
- package/dist/generated/services/templates.d.ts.map +1 -0
- package/dist/generated/services/templates.js +207 -0
- package/dist/generated/services/templates.js.map +1 -0
- package/dist/generated/services/templates.ts +294 -0
- package/dist/generated/services/timeline.d.ts +31 -0
- package/dist/generated/services/timeline.d.ts.map +1 -0
- package/dist/generated/services/timeline.js +39 -0
- package/dist/generated/services/timeline.js.map +1 -0
- package/dist/generated/services/timeline.ts +62 -0
- package/dist/generated/services/timesheets.d.ts +145 -0
- package/dist/generated/services/timesheets.d.ts.map +1 -0
- package/dist/generated/services/timesheets.js +186 -0
- package/dist/generated/services/timesheets.js.map +1 -0
- package/dist/generated/services/timesheets.ts +289 -0
- package/dist/generated/services/todolist-groups.d.ts +74 -0
- package/dist/generated/services/todolist-groups.d.ts.map +1 -0
- package/dist/generated/services/todolist-groups.js +100 -0
- package/dist/generated/services/todolist-groups.js.map +1 -0
- package/dist/generated/services/todolist-groups.ts +151 -0
- package/dist/generated/services/todolists.d.ts +95 -0
- package/dist/generated/services/todolists.d.ts.map +1 -0
- package/dist/generated/services/todolists.js +130 -0
- package/dist/generated/services/todolists.js.map +1 -0
- package/dist/generated/services/todolists.ts +192 -0
- package/dist/generated/services/todos.d.ts +175 -0
- package/dist/generated/services/todos.d.ts.map +1 -0
- package/dist/generated/services/todos.js +255 -0
- package/dist/generated/services/todos.js.map +1 -0
- package/dist/generated/services/todos.ts +369 -0
- package/dist/generated/services/todosets.d.ts +27 -0
- package/dist/generated/services/todosets.d.ts.map +1 -0
- package/dist/generated/services/todosets.js +40 -0
- package/dist/generated/services/todosets.js.map +1 -0
- package/dist/generated/services/todosets.ts +55 -0
- package/dist/generated/services/tools.d.ts +122 -0
- package/dist/generated/services/tools.d.ts.map +1 -0
- package/dist/generated/services/tools.js +197 -0
- package/dist/generated/services/tools.js.map +1 -0
- package/dist/generated/services/tools.ts +267 -0
- package/dist/generated/services/uploads.d.ts +109 -0
- package/dist/generated/services/uploads.d.ts.map +1 -0
- package/dist/generated/services/uploads.js +153 -0
- package/dist/generated/services/uploads.js.map +1 -0
- package/dist/generated/services/uploads.ts +227 -0
- package/dist/generated/services/vaults.d.ts +86 -0
- package/dist/generated/services/vaults.d.ts.map +1 -0
- package/dist/generated/services/vaults.js +126 -0
- package/dist/generated/services/vaults.js.map +1 -0
- package/dist/generated/services/vaults.ts +182 -0
- package/dist/generated/services/webhooks.d.ts +106 -0
- package/dist/generated/services/webhooks.d.ts.map +1 -0
- package/dist/generated/services/webhooks.js +157 -0
- package/dist/generated/services/webhooks.js.map +1 -0
- package/dist/generated/services/webhooks.ts +226 -0
- package/dist/hooks/otel.d.ts +136 -0
- package/dist/hooks/otel.d.ts.map +1 -0
- package/dist/hooks/otel.js +240 -0
- package/dist/hooks/otel.js.map +1 -0
- package/dist/hooks.d.ts +171 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +196 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth/authorize.d.ts +48 -0
- package/dist/oauth/authorize.d.ts.map +1 -0
- package/dist/oauth/authorize.js +56 -0
- package/dist/oauth/authorize.js.map +1 -0
- package/dist/oauth/callback-server.d.ts +56 -0
- package/dist/oauth/callback-server.d.ts.map +1 -0
- package/dist/oauth/callback-server.js +150 -0
- package/dist/oauth/callback-server.js.map +1 -0
- package/dist/oauth/discovery.d.ts +54 -0
- package/dist/oauth/discovery.d.ts.map +1 -0
- package/dist/oauth/discovery.js +116 -0
- package/dist/oauth/discovery.js.map +1 -0
- package/dist/oauth/exchange.d.ts +96 -0
- package/dist/oauth/exchange.d.ts.map +1 -0
- package/dist/oauth/exchange.js +324 -0
- package/dist/oauth/exchange.js.map +1 -0
- package/dist/oauth/identity.d.ts +30 -0
- package/dist/oauth/identity.d.ts.map +1 -0
- package/dist/oauth/identity.js +82 -0
- package/dist/oauth/identity.js.map +1 -0
- package/dist/oauth/index.d.ts +50 -0
- package/dist/oauth/index.d.ts.map +1 -0
- package/dist/oauth/index.js +58 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/interactive-login.d.ts +62 -0
- package/dist/oauth/interactive-login.d.ts.map +1 -0
- package/dist/oauth/interactive-login.js +106 -0
- package/dist/oauth/interactive-login.js.map +1 -0
- package/dist/oauth/pkce.d.ts +68 -0
- package/dist/oauth/pkce.d.ts.map +1 -0
- package/dist/oauth/pkce.js +80 -0
- package/dist/oauth/pkce.js.map +1 -0
- package/dist/oauth/token-manager.d.ts +92 -0
- package/dist/oauth/token-manager.d.ts.map +1 -0
- package/dist/oauth/token-manager.js +126 -0
- package/dist/oauth/token-manager.js.map +1 -0
- package/dist/oauth/token-store.d.ts +45 -0
- package/dist/oauth/token-store.d.ts.map +1 -0
- package/dist/oauth/token-store.js +105 -0
- package/dist/oauth/token-store.js.map +1 -0
- package/dist/oauth/types.d.ts +98 -0
- package/dist/oauth/types.d.ts.map +1 -0
- package/dist/oauth/types.js +8 -0
- package/dist/oauth/types.js.map +1 -0
- package/dist/pagination-utils.d.ts +27 -0
- package/dist/pagination-utils.d.ts.map +1 -0
- package/dist/pagination-utils.js +54 -0
- package/dist/pagination-utils.js.map +1 -0
- package/dist/pagination.d.ts +56 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +57 -0
- package/dist/pagination.js.map +1 -0
- package/dist/security.d.ts +68 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +107 -0
- package/dist/security.js.map +1 -0
- package/dist/services/authorization.d.ts +124 -0
- package/dist/services/authorization.d.ts.map +1 -0
- package/dist/services/authorization.js +117 -0
- package/dist/services/authorization.js.map +1 -0
- package/dist/services/base.d.ts +102 -0
- package/dist/services/base.d.ts.map +1 -0
- package/dist/services/base.js +230 -0
- package/dist/services/base.js.map +1 -0
- package/dist/webhooks/adapters/node-http.d.ts +14 -0
- package/dist/webhooks/adapters/node-http.d.ts.map +1 -0
- package/dist/webhooks/adapters/node-http.js +60 -0
- package/dist/webhooks/adapters/node-http.js.map +1 -0
- package/dist/webhooks/events.d.ts +52 -0
- package/dist/webhooks/events.d.ts.map +1 -0
- package/dist/webhooks/events.js +52 -0
- package/dist/webhooks/events.js.map +1 -0
- package/dist/webhooks/handler.d.ts +62 -0
- package/dist/webhooks/handler.d.ts.map +1 -0
- package/dist/webhooks/handler.js +226 -0
- package/dist/webhooks/handler.js.map +1 -0
- package/dist/webhooks/index.d.ts +5 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +5 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/verify.d.ts +11 -0
- package/dist/webhooks/verify.d.ts.map +1 -0
- package/dist/webhooks/verify.js +25 -0
- package/dist/webhooks/verify.js.map +1 -0
- package/package.json +70 -0
- package/src/generated/metadata.json +2281 -0
- package/src/generated/openapi-stripped.json +21268 -0
- package/src/generated/path-mapping.ts +199 -0
- package/src/generated/schema.d.ts +14883 -0
- package/src/generated/services/attachments.ts +59 -0
- package/src/generated/services/boosts.ts +250 -0
- package/src/generated/services/campfires.ts +433 -0
- package/src/generated/services/card-columns.ts +360 -0
- package/src/generated/services/card-steps.ts +221 -0
- package/src/generated/services/card-tables.ts +55 -0
- package/src/generated/services/cards.ts +247 -0
- package/src/generated/services/checkins.ts +600 -0
- package/src/generated/services/client-approvals.ts +89 -0
- package/src/generated/services/client-correspondences.ts +89 -0
- package/src/generated/services/client-replies.ts +95 -0
- package/src/generated/services/client-visibility.ts +68 -0
- package/src/generated/services/comments.ts +185 -0
- package/src/generated/services/documents.ts +191 -0
- package/src/generated/services/events.ts +64 -0
- package/src/generated/services/forwards.ts +241 -0
- package/src/generated/services/index.ts +38 -0
- package/src/generated/services/lineup.ts +143 -0
- package/src/generated/services/message-boards.ts +55 -0
- package/src/generated/services/message-types.ts +210 -0
- package/src/generated/services/messages.ts +258 -0
- package/src/generated/services/people.ts +252 -0
- package/src/generated/services/projects.ts +224 -0
- package/src/generated/services/recordings.ts +191 -0
- package/src/generated/services/reports.ts +187 -0
- package/src/generated/services/schedules.ts +335 -0
- package/src/generated/services/search.ts +89 -0
- package/src/generated/services/subscriptions.ts +160 -0
- package/src/generated/services/templates.ts +294 -0
- package/src/generated/services/timeline.ts +62 -0
- package/src/generated/services/timesheets.ts +289 -0
- package/src/generated/services/todolist-groups.ts +151 -0
- package/src/generated/services/todolists.ts +192 -0
- package/src/generated/services/todos.ts +369 -0
- package/src/generated/services/todosets.ts +55 -0
- package/src/generated/services/tools.ts +267 -0
- package/src/generated/services/uploads.ts +227 -0
- package/src/generated/services/vaults.ts +182 -0
- package/src/generated/services/webhooks.ts +226 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects 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 { ListResult } from "../../pagination.js";
|
|
10
|
+
import type { PaginationOptions } from "../../pagination.js";
|
|
11
|
+
import { Errors } from "../../errors.js";
|
|
12
|
+
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Types
|
|
15
|
+
// =============================================================================
|
|
16
|
+
|
|
17
|
+
/** Project entity from the Basecamp API. */
|
|
18
|
+
export type Project = components["schemas"]["Project"];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Options for list.
|
|
22
|
+
*/
|
|
23
|
+
export interface ListProjectOptions extends PaginationOptions {
|
|
24
|
+
/** Filter by status */
|
|
25
|
+
status?: "active" | "archived" | "trashed";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Request parameters for create.
|
|
30
|
+
*/
|
|
31
|
+
export interface CreateProjectRequest {
|
|
32
|
+
/** Display name */
|
|
33
|
+
name: string;
|
|
34
|
+
/** Rich text description (HTML) */
|
|
35
|
+
description?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Request parameters for update.
|
|
40
|
+
*/
|
|
41
|
+
export interface UpdateProjectRequest {
|
|
42
|
+
/** Display name */
|
|
43
|
+
name: string;
|
|
44
|
+
/** Rich text description (HTML) */
|
|
45
|
+
description?: string;
|
|
46
|
+
/** Admissions */
|
|
47
|
+
admissions?: "invite" | "employee" | "team";
|
|
48
|
+
/** Schedule date range settings */
|
|
49
|
+
scheduleAttributes?: components["schemas"]["ScheduleAttributes"];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
// =============================================================================
|
|
54
|
+
// Service
|
|
55
|
+
// =============================================================================
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Service for Projects operations.
|
|
59
|
+
*/
|
|
60
|
+
export class ProjectsService extends BaseService {
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* List projects (active by default; optionally archived/trashed)
|
|
64
|
+
* @param options - Optional query parameters
|
|
65
|
+
* @returns All Project across all pages, with .meta.totalCount
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const result = await client.projects.list();
|
|
70
|
+
*
|
|
71
|
+
* // With options
|
|
72
|
+
* const filtered = await client.projects.list({ status: "active" });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
async list(options?: ListProjectOptions): Promise<ListResult<Project>> {
|
|
76
|
+
return this.requestPaginated(
|
|
77
|
+
{
|
|
78
|
+
service: "Projects",
|
|
79
|
+
operation: "ListProjects",
|
|
80
|
+
resourceType: "project",
|
|
81
|
+
isMutation: false,
|
|
82
|
+
},
|
|
83
|
+
() =>
|
|
84
|
+
this.client.GET("/projects.json", {
|
|
85
|
+
params: {
|
|
86
|
+
query: { status: options?.status },
|
|
87
|
+
},
|
|
88
|
+
})
|
|
89
|
+
, options
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Create a new project
|
|
95
|
+
* @param req - Project creation parameters
|
|
96
|
+
* @returns The Project
|
|
97
|
+
* @throws {BasecampError} If required fields are missing or invalid
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* const result = await client.projects.create({ name: "My example" });
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
async create(req: CreateProjectRequest): Promise<Project> {
|
|
105
|
+
if (!req.name) {
|
|
106
|
+
throw Errors.validation("Name is required");
|
|
107
|
+
}
|
|
108
|
+
const response = await this.request(
|
|
109
|
+
{
|
|
110
|
+
service: "Projects",
|
|
111
|
+
operation: "CreateProject",
|
|
112
|
+
resourceType: "project",
|
|
113
|
+
isMutation: true,
|
|
114
|
+
},
|
|
115
|
+
() =>
|
|
116
|
+
this.client.POST("/projects.json", {
|
|
117
|
+
body: {
|
|
118
|
+
name: req.name,
|
|
119
|
+
description: req.description,
|
|
120
|
+
},
|
|
121
|
+
})
|
|
122
|
+
);
|
|
123
|
+
return response;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Get a single project by id
|
|
128
|
+
* @param projectId - The project ID
|
|
129
|
+
* @returns The Project
|
|
130
|
+
* @throws {BasecampError} If the resource is not found
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* const result = await client.projects.get(123);
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
async get(projectId: number): Promise<Project> {
|
|
138
|
+
const response = await this.request(
|
|
139
|
+
{
|
|
140
|
+
service: "Projects",
|
|
141
|
+
operation: "GetProject",
|
|
142
|
+
resourceType: "project",
|
|
143
|
+
isMutation: false,
|
|
144
|
+
projectId,
|
|
145
|
+
},
|
|
146
|
+
() =>
|
|
147
|
+
this.client.GET("/projects/{projectId}", {
|
|
148
|
+
params: {
|
|
149
|
+
path: { projectId },
|
|
150
|
+
},
|
|
151
|
+
})
|
|
152
|
+
);
|
|
153
|
+
return response;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Update an existing project
|
|
158
|
+
* @param projectId - The project ID
|
|
159
|
+
* @param req - Project update parameters
|
|
160
|
+
* @returns The Project
|
|
161
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* const result = await client.projects.update(123, { name: "My example" });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
async update(projectId: number, req: UpdateProjectRequest): Promise<Project> {
|
|
169
|
+
if (!req.name) {
|
|
170
|
+
throw Errors.validation("Name is required");
|
|
171
|
+
}
|
|
172
|
+
const response = await this.request(
|
|
173
|
+
{
|
|
174
|
+
service: "Projects",
|
|
175
|
+
operation: "UpdateProject",
|
|
176
|
+
resourceType: "project",
|
|
177
|
+
isMutation: true,
|
|
178
|
+
projectId,
|
|
179
|
+
},
|
|
180
|
+
() =>
|
|
181
|
+
this.client.PUT("/projects/{projectId}", {
|
|
182
|
+
params: {
|
|
183
|
+
path: { projectId },
|
|
184
|
+
},
|
|
185
|
+
body: {
|
|
186
|
+
name: req.name,
|
|
187
|
+
description: req.description,
|
|
188
|
+
admissions: req.admissions,
|
|
189
|
+
schedule_attributes: req.scheduleAttributes,
|
|
190
|
+
},
|
|
191
|
+
})
|
|
192
|
+
);
|
|
193
|
+
return response;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Trash a project. Trashed items can be recovered.
|
|
198
|
+
* @param projectId - The project ID
|
|
199
|
+
* @returns void
|
|
200
|
+
* @throws {BasecampError} If the request fails
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* ```ts
|
|
204
|
+
* await client.projects.trash(123);
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
async trash(projectId: number): Promise<void> {
|
|
208
|
+
await this.request(
|
|
209
|
+
{
|
|
210
|
+
service: "Projects",
|
|
211
|
+
operation: "TrashProject",
|
|
212
|
+
resourceType: "project",
|
|
213
|
+
isMutation: true,
|
|
214
|
+
projectId,
|
|
215
|
+
},
|
|
216
|
+
() =>
|
|
217
|
+
this.client.DELETE("/projects/{projectId}", {
|
|
218
|
+
params: {
|
|
219
|
+
path: { projectId },
|
|
220
|
+
},
|
|
221
|
+
})
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recordings 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 { ListResult } from "../../pagination.js";
|
|
10
|
+
import type { PaginationOptions } from "../../pagination.js";
|
|
11
|
+
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Types
|
|
14
|
+
// =============================================================================
|
|
15
|
+
|
|
16
|
+
/** Recording entity from the Basecamp API. */
|
|
17
|
+
export type Recording = components["schemas"]["Recording"];
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Options for list.
|
|
21
|
+
*/
|
|
22
|
+
export interface ListRecordingOptions extends PaginationOptions {
|
|
23
|
+
/** Project IDs to filter by */
|
|
24
|
+
bucket?: number[];
|
|
25
|
+
/** Filter by status */
|
|
26
|
+
status?: "active" | "archived" | "trashed";
|
|
27
|
+
/** Filter by sort */
|
|
28
|
+
sort?: "created_at" | "updated_at";
|
|
29
|
+
/** Filter by direction */
|
|
30
|
+
direction?: "asc" | "desc";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// Service
|
|
36
|
+
// =============================================================================
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Service for Recordings operations.
|
|
40
|
+
*/
|
|
41
|
+
export class RecordingsService extends BaseService {
|
|
42
|
+
|
|
43
|
+
/**
|
|
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
|
|
46
|
+
* @param options - Optional query parameters
|
|
47
|
+
* @returns All Recording across all pages, with .meta.totalCount
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const result = await client.recordings.list("type");
|
|
52
|
+
*
|
|
53
|
+
* // With options
|
|
54
|
+
* const filtered = await client.recordings.list("type", { bucket: [123] });
|
|
55
|
+
* ```
|
|
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>> {
|
|
58
|
+
return this.requestPaginated(
|
|
59
|
+
{
|
|
60
|
+
service: "Recordings",
|
|
61
|
+
operation: "ListRecordings",
|
|
62
|
+
resourceType: "recording",
|
|
63
|
+
isMutation: false,
|
|
64
|
+
},
|
|
65
|
+
() =>
|
|
66
|
+
this.client.GET("/projects/recordings.json", {
|
|
67
|
+
params: {
|
|
68
|
+
query: { type: type, bucket: options?.bucket?.join(","), status: options?.status, sort: options?.sort, direction: options?.direction },
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
, options
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Get a single recording by id
|
|
77
|
+
* @param recordingId - The recording ID
|
|
78
|
+
* @returns The Recording
|
|
79
|
+
* @throws {BasecampError} If the resource is not found
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* const result = await client.recordings.get(123);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
async get(recordingId: number): Promise<Recording> {
|
|
87
|
+
const response = await this.request(
|
|
88
|
+
{
|
|
89
|
+
service: "Recordings",
|
|
90
|
+
operation: "GetRecording",
|
|
91
|
+
resourceType: "recording",
|
|
92
|
+
isMutation: false,
|
|
93
|
+
resourceId: recordingId,
|
|
94
|
+
},
|
|
95
|
+
() =>
|
|
96
|
+
this.client.GET("/recordings/{recordingId}", {
|
|
97
|
+
params: {
|
|
98
|
+
path: { recordingId },
|
|
99
|
+
},
|
|
100
|
+
})
|
|
101
|
+
);
|
|
102
|
+
return response;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Unarchive a recording (restore to active status)
|
|
107
|
+
* @param recordingId - The recording ID
|
|
108
|
+
* @returns void
|
|
109
|
+
* @throws {BasecampError} If the request fails
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* await client.recordings.unarchive(123);
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
async unarchive(recordingId: number): Promise<void> {
|
|
117
|
+
await this.request(
|
|
118
|
+
{
|
|
119
|
+
service: "Recordings",
|
|
120
|
+
operation: "UnarchiveRecording",
|
|
121
|
+
resourceType: "recording",
|
|
122
|
+
isMutation: true,
|
|
123
|
+
resourceId: recordingId,
|
|
124
|
+
},
|
|
125
|
+
() =>
|
|
126
|
+
this.client.PUT("/recordings/{recordingId}/status/active.json", {
|
|
127
|
+
params: {
|
|
128
|
+
path: { recordingId },
|
|
129
|
+
},
|
|
130
|
+
})
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Archive a recording
|
|
136
|
+
* @param recordingId - The recording ID
|
|
137
|
+
* @returns void
|
|
138
|
+
* @throws {BasecampError} If the request fails
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* await client.recordings.archive(123);
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
async archive(recordingId: number): Promise<void> {
|
|
146
|
+
await this.request(
|
|
147
|
+
{
|
|
148
|
+
service: "Recordings",
|
|
149
|
+
operation: "ArchiveRecording",
|
|
150
|
+
resourceType: "recording",
|
|
151
|
+
isMutation: true,
|
|
152
|
+
resourceId: recordingId,
|
|
153
|
+
},
|
|
154
|
+
() =>
|
|
155
|
+
this.client.PUT("/recordings/{recordingId}/status/archived.json", {
|
|
156
|
+
params: {
|
|
157
|
+
path: { recordingId },
|
|
158
|
+
},
|
|
159
|
+
})
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Trash a recording. Trashed items can be recovered.
|
|
165
|
+
* @param recordingId - The recording ID
|
|
166
|
+
* @returns void
|
|
167
|
+
* @throws {BasecampError} If the request fails
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts
|
|
171
|
+
* await client.recordings.trash(123);
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
async trash(recordingId: number): Promise<void> {
|
|
175
|
+
await this.request(
|
|
176
|
+
{
|
|
177
|
+
service: "Recordings",
|
|
178
|
+
operation: "TrashRecording",
|
|
179
|
+
resourceType: "recording",
|
|
180
|
+
isMutation: true,
|
|
181
|
+
resourceId: recordingId,
|
|
182
|
+
},
|
|
183
|
+
() =>
|
|
184
|
+
this.client.PUT("/recordings/{recordingId}/status/trashed.json", {
|
|
185
|
+
params: {
|
|
186
|
+
path: { recordingId },
|
|
187
|
+
},
|
|
188
|
+
})
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reports 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 { ListResult } from "../../pagination.js";
|
|
10
|
+
import type { PaginationOptions } from "../../pagination.js";
|
|
11
|
+
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Types
|
|
14
|
+
// =============================================================================
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Options for progress.
|
|
19
|
+
*/
|
|
20
|
+
export interface ProgressReportOptions extends PaginationOptions {
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Options for upcoming.
|
|
25
|
+
*/
|
|
26
|
+
export interface UpcomingReportOptions {
|
|
27
|
+
/** Window starts on */
|
|
28
|
+
windowStartsOn?: string;
|
|
29
|
+
/** Window ends on */
|
|
30
|
+
windowEndsOn?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Options for assigned.
|
|
35
|
+
*/
|
|
36
|
+
export interface AssignedReportOptions {
|
|
37
|
+
/** Group by "bucket" or "date" */
|
|
38
|
+
groupBy?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// =============================================================================
|
|
43
|
+
// Service
|
|
44
|
+
// =============================================================================
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Service for Reports operations.
|
|
48
|
+
*/
|
|
49
|
+
export class ReportsService extends BaseService {
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get account-wide activity feed (progress report)
|
|
53
|
+
* @param options - Optional query parameters
|
|
54
|
+
* @returns All results across all pages, with .meta.totalCount
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const result = await client.reports.progress();
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
async progress(options?: ProgressReportOptions): Promise<components["schemas"]["GetProgressReportResponseContent"]> {
|
|
62
|
+
return this.requestPaginated(
|
|
63
|
+
{
|
|
64
|
+
service: "Reports",
|
|
65
|
+
operation: "GetProgressReport",
|
|
66
|
+
resourceType: "progress_report",
|
|
67
|
+
isMutation: false,
|
|
68
|
+
},
|
|
69
|
+
() =>
|
|
70
|
+
this.client.GET("/reports/progress.json", {
|
|
71
|
+
})
|
|
72
|
+
, options
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Get upcoming schedule entries within a date window
|
|
78
|
+
* @param options - Optional query parameters
|
|
79
|
+
* @returns The upcoming_schedule
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* const result = await client.reports.upcoming();
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
async upcoming(options?: UpcomingReportOptions): Promise<components["schemas"]["GetUpcomingScheduleResponseContent"]> {
|
|
87
|
+
const response = await this.request(
|
|
88
|
+
{
|
|
89
|
+
service: "Reports",
|
|
90
|
+
operation: "GetUpcomingSchedule",
|
|
91
|
+
resourceType: "upcoming_schedule",
|
|
92
|
+
isMutation: false,
|
|
93
|
+
},
|
|
94
|
+
() =>
|
|
95
|
+
this.client.GET("/reports/schedules/upcoming.json", {
|
|
96
|
+
params: {
|
|
97
|
+
query: { "window_starts_on": options?.windowStartsOn, "window_ends_on": options?.windowEndsOn },
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
);
|
|
101
|
+
return response;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Get todos assigned to a specific person
|
|
106
|
+
* @param personId - The person ID
|
|
107
|
+
* @param options - Optional query parameters
|
|
108
|
+
* @returns The assigned_todo
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* const result = await client.reports.assigned(123);
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
async assigned(personId: number, options?: AssignedReportOptions): Promise<components["schemas"]["GetAssignedTodosResponseContent"]> {
|
|
116
|
+
const response = await this.request(
|
|
117
|
+
{
|
|
118
|
+
service: "Reports",
|
|
119
|
+
operation: "GetAssignedTodos",
|
|
120
|
+
resourceType: "assigned_todo",
|
|
121
|
+
isMutation: false,
|
|
122
|
+
resourceId: personId,
|
|
123
|
+
},
|
|
124
|
+
() =>
|
|
125
|
+
this.client.GET("/reports/todos/assigned/{personId}", {
|
|
126
|
+
params: {
|
|
127
|
+
path: { personId },
|
|
128
|
+
query: { "group_by": options?.groupBy },
|
|
129
|
+
},
|
|
130
|
+
})
|
|
131
|
+
);
|
|
132
|
+
return response;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get overdue todos grouped by lateness
|
|
137
|
+
* @returns The overdue_todo
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```ts
|
|
141
|
+
* const result = await client.reports.overdue();
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
async overdue(): Promise<components["schemas"]["GetOverdueTodosResponseContent"]> {
|
|
145
|
+
const response = await this.request(
|
|
146
|
+
{
|
|
147
|
+
service: "Reports",
|
|
148
|
+
operation: "GetOverdueTodos",
|
|
149
|
+
resourceType: "overdue_todo",
|
|
150
|
+
isMutation: false,
|
|
151
|
+
},
|
|
152
|
+
() =>
|
|
153
|
+
this.client.GET("/reports/todos/overdue.json", {
|
|
154
|
+
})
|
|
155
|
+
);
|
|
156
|
+
return response;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get a person's activity timeline
|
|
161
|
+
* @param personId - The person ID
|
|
162
|
+
* @returns The person_progress
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```ts
|
|
166
|
+
* const result = await client.reports.personProgress(123);
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
async personProgress(personId: number): Promise<components["schemas"]["GetPersonProgressResponseContent"]> {
|
|
170
|
+
const response = await this.request(
|
|
171
|
+
{
|
|
172
|
+
service: "Reports",
|
|
173
|
+
operation: "GetPersonProgress",
|
|
174
|
+
resourceType: "person_progress",
|
|
175
|
+
isMutation: false,
|
|
176
|
+
resourceId: personId,
|
|
177
|
+
},
|
|
178
|
+
() =>
|
|
179
|
+
this.client.GET("/reports/users/progress/{personId}", {
|
|
180
|
+
params: {
|
|
181
|
+
path: { personId },
|
|
182
|
+
},
|
|
183
|
+
})
|
|
184
|
+
);
|
|
185
|
+
return response;
|
|
186
|
+
}
|
|
187
|
+
}
|