@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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timesheets service for the Basecamp API.
|
|
3
|
+
*
|
|
4
|
+
* @generated from OpenAPI spec - do not edit directly
|
|
5
|
+
*/
|
|
6
|
+
import { BaseService } from "../../services/base.js";
|
|
7
|
+
import type { components } from "../schema.js";
|
|
8
|
+
/**
|
|
9
|
+
* Options for forProject.
|
|
10
|
+
*/
|
|
11
|
+
export interface ForProjectTimesheetOptions {
|
|
12
|
+
/** From */
|
|
13
|
+
from?: string;
|
|
14
|
+
/** To */
|
|
15
|
+
to?: string;
|
|
16
|
+
/** Person id */
|
|
17
|
+
personId?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Options for forRecording.
|
|
21
|
+
*/
|
|
22
|
+
export interface ForRecordingTimesheetOptions {
|
|
23
|
+
/** From */
|
|
24
|
+
from?: string;
|
|
25
|
+
/** To */
|
|
26
|
+
to?: string;
|
|
27
|
+
/** Person id */
|
|
28
|
+
personId?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Request parameters for create.
|
|
32
|
+
*/
|
|
33
|
+
export interface CreateTimesheetRequest {
|
|
34
|
+
/** Date */
|
|
35
|
+
date: string;
|
|
36
|
+
/** Hours */
|
|
37
|
+
hours: string;
|
|
38
|
+
/** Rich text description (HTML) */
|
|
39
|
+
description?: string;
|
|
40
|
+
/** Person id */
|
|
41
|
+
personId?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Options for report.
|
|
45
|
+
*/
|
|
46
|
+
export interface ReportTimesheetOptions {
|
|
47
|
+
/** From */
|
|
48
|
+
from?: string;
|
|
49
|
+
/** To */
|
|
50
|
+
to?: string;
|
|
51
|
+
/** Person id */
|
|
52
|
+
personId?: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Request parameters for update.
|
|
56
|
+
*/
|
|
57
|
+
export interface UpdateTimesheetRequest {
|
|
58
|
+
/** Date */
|
|
59
|
+
date?: string;
|
|
60
|
+
/** Hours */
|
|
61
|
+
hours?: string;
|
|
62
|
+
/** Rich text description (HTML) */
|
|
63
|
+
description?: string;
|
|
64
|
+
/** Person id */
|
|
65
|
+
personId?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Service for Timesheets operations.
|
|
69
|
+
*/
|
|
70
|
+
export declare class TimesheetsService extends BaseService {
|
|
71
|
+
/**
|
|
72
|
+
* Get timesheet for a specific project
|
|
73
|
+
* @param projectId - The project ID
|
|
74
|
+
* @param options - Optional query parameters
|
|
75
|
+
* @returns Array of results
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* const result = await client.timesheets.forProject(123);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
forProject(projectId: number, options?: ForProjectTimesheetOptions): Promise<components["schemas"]["GetProjectTimesheetResponseContent"]>;
|
|
83
|
+
/**
|
|
84
|
+
* Get timesheet for a specific recording
|
|
85
|
+
* @param recordingId - The recording ID
|
|
86
|
+
* @param options - Optional query parameters
|
|
87
|
+
* @returns Array of results
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* const result = await client.timesheets.forRecording(123);
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
forRecording(recordingId: number, options?: ForRecordingTimesheetOptions): Promise<components["schemas"]["GetRecordingTimesheetResponseContent"]>;
|
|
95
|
+
/**
|
|
96
|
+
* Create a timesheet entry on a recording
|
|
97
|
+
* @param recordingId - The recording ID
|
|
98
|
+
* @param req - Timesheet_entry creation parameters
|
|
99
|
+
* @returns The timesheet_entry
|
|
100
|
+
* @throws {BasecampError} If required fields are missing or invalid
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* const result = await client.timesheets.create(123, { date: "example", hours: "example" });
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
create(recordingId: number, req: CreateTimesheetRequest): Promise<components["schemas"]["CreateTimesheetEntryResponseContent"]>;
|
|
108
|
+
/**
|
|
109
|
+
* Get account-wide timesheet report
|
|
110
|
+
* @param options - Optional query parameters
|
|
111
|
+
* @returns Array of results
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* const result = await client.timesheets.report();
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
report(options?: ReportTimesheetOptions): Promise<components["schemas"]["GetTimesheetReportResponseContent"]>;
|
|
119
|
+
/**
|
|
120
|
+
* Get a single timesheet entry
|
|
121
|
+
* @param entryId - The entry ID
|
|
122
|
+
* @returns The timesheet_entry
|
|
123
|
+
* @throws {BasecampError} If the resource is not found
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const result = await client.timesheets.get(123);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
get(entryId: number): Promise<components["schemas"]["GetTimesheetEntryResponseContent"]>;
|
|
131
|
+
/**
|
|
132
|
+
* Update a timesheet entry
|
|
133
|
+
* @param entryId - The entry ID
|
|
134
|
+
* @param req - Timesheet_entry update parameters
|
|
135
|
+
* @returns The timesheet_entry
|
|
136
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* const result = await client.timesheets.update(123, { });
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
update(entryId: number, req: UpdateTimesheetRequest): Promise<components["schemas"]["UpdateTimesheetEntryResponseContent"]>;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=timesheets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timesheets.d.ts","sourceRoot":"","sources":["../../../src/generated/services/timesheets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ/C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS;IACT,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS;IACT,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS;IACT,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAEhD;;;;;;;;;;OAUG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAoB/I;;;;;;;;;;OAUG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAoBvJ;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,qCAAqC,CAAC,CAAC;IA+BrI;;;;;;;;;OASG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,mCAAmC,CAAC,CAAC;IAkBnH;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAmB9F;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,qCAAqC,CAAC,CAAC;CAwBlI"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timesheets service for the Basecamp API.
|
|
3
|
+
*
|
|
4
|
+
* @generated from OpenAPI spec - do not edit directly
|
|
5
|
+
*/
|
|
6
|
+
import { BaseService } from "../../services/base.js";
|
|
7
|
+
import { Errors } from "../../errors.js";
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Service
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Service for Timesheets operations.
|
|
13
|
+
*/
|
|
14
|
+
export class TimesheetsService extends BaseService {
|
|
15
|
+
/**
|
|
16
|
+
* Get timesheet for a specific project
|
|
17
|
+
* @param projectId - The project ID
|
|
18
|
+
* @param options - Optional query parameters
|
|
19
|
+
* @returns Array of results
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const result = await client.timesheets.forProject(123);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
async forProject(projectId, options) {
|
|
27
|
+
const response = await this.request({
|
|
28
|
+
service: "Timesheets",
|
|
29
|
+
operation: "GetProjectTimesheet",
|
|
30
|
+
resourceType: "project_timesheet",
|
|
31
|
+
isMutation: false,
|
|
32
|
+
projectId,
|
|
33
|
+
}, () => this.client.GET("/projects/{projectId}/timesheet.json", {
|
|
34
|
+
params: {
|
|
35
|
+
path: { projectId },
|
|
36
|
+
query: { from: options?.from, to: options?.to, "person_id": options?.personId },
|
|
37
|
+
},
|
|
38
|
+
}));
|
|
39
|
+
return response ?? [];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get timesheet for a specific recording
|
|
43
|
+
* @param recordingId - The recording ID
|
|
44
|
+
* @param options - Optional query parameters
|
|
45
|
+
* @returns Array of results
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const result = await client.timesheets.forRecording(123);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
async forRecording(recordingId, options) {
|
|
53
|
+
const response = await this.request({
|
|
54
|
+
service: "Timesheets",
|
|
55
|
+
operation: "GetRecordingTimesheet",
|
|
56
|
+
resourceType: "recording_timesheet",
|
|
57
|
+
isMutation: false,
|
|
58
|
+
resourceId: recordingId,
|
|
59
|
+
}, () => this.client.GET("/recordings/{recordingId}/timesheet.json", {
|
|
60
|
+
params: {
|
|
61
|
+
path: { recordingId },
|
|
62
|
+
query: { from: options?.from, to: options?.to, "person_id": options?.personId },
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
65
|
+
return response ?? [];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create a timesheet entry on a recording
|
|
69
|
+
* @param recordingId - The recording ID
|
|
70
|
+
* @param req - Timesheet_entry creation parameters
|
|
71
|
+
* @returns The timesheet_entry
|
|
72
|
+
* @throws {BasecampError} If required fields are missing or invalid
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* const result = await client.timesheets.create(123, { date: "example", hours: "example" });
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
async create(recordingId, req) {
|
|
80
|
+
if (!req.date) {
|
|
81
|
+
throw Errors.validation("Date is required");
|
|
82
|
+
}
|
|
83
|
+
if (!req.hours) {
|
|
84
|
+
throw Errors.validation("Hours is required");
|
|
85
|
+
}
|
|
86
|
+
const response = await this.request({
|
|
87
|
+
service: "Timesheets",
|
|
88
|
+
operation: "CreateTimesheetEntry",
|
|
89
|
+
resourceType: "timesheet_entry",
|
|
90
|
+
isMutation: true,
|
|
91
|
+
resourceId: recordingId,
|
|
92
|
+
}, () => this.client.POST("/recordings/{recordingId}/timesheet/entries.json", {
|
|
93
|
+
params: {
|
|
94
|
+
path: { recordingId },
|
|
95
|
+
},
|
|
96
|
+
body: {
|
|
97
|
+
date: req.date,
|
|
98
|
+
hours: req.hours,
|
|
99
|
+
description: req.description,
|
|
100
|
+
person_id: req.personId,
|
|
101
|
+
},
|
|
102
|
+
}));
|
|
103
|
+
return response;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get account-wide timesheet report
|
|
107
|
+
* @param options - Optional query parameters
|
|
108
|
+
* @returns Array of results
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```ts
|
|
112
|
+
* const result = await client.timesheets.report();
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
async report(options) {
|
|
116
|
+
const response = await this.request({
|
|
117
|
+
service: "Timesheets",
|
|
118
|
+
operation: "GetTimesheetReport",
|
|
119
|
+
resourceType: "timesheet_report",
|
|
120
|
+
isMutation: false,
|
|
121
|
+
}, () => this.client.GET("/reports/timesheet.json", {
|
|
122
|
+
params: {
|
|
123
|
+
query: { from: options?.from, to: options?.to, "person_id": options?.personId },
|
|
124
|
+
},
|
|
125
|
+
}));
|
|
126
|
+
return response ?? [];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get a single timesheet entry
|
|
130
|
+
* @param entryId - The entry ID
|
|
131
|
+
* @returns The timesheet_entry
|
|
132
|
+
* @throws {BasecampError} If the resource is not found
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```ts
|
|
136
|
+
* const result = await client.timesheets.get(123);
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
async get(entryId) {
|
|
140
|
+
const response = await this.request({
|
|
141
|
+
service: "Timesheets",
|
|
142
|
+
operation: "GetTimesheetEntry",
|
|
143
|
+
resourceType: "timesheet_entry",
|
|
144
|
+
isMutation: false,
|
|
145
|
+
resourceId: entryId,
|
|
146
|
+
}, () => this.client.GET("/timesheet_entries/{entryId}", {
|
|
147
|
+
params: {
|
|
148
|
+
path: { entryId },
|
|
149
|
+
},
|
|
150
|
+
}));
|
|
151
|
+
return response;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Update a timesheet entry
|
|
155
|
+
* @param entryId - The entry ID
|
|
156
|
+
* @param req - Timesheet_entry update parameters
|
|
157
|
+
* @returns The timesheet_entry
|
|
158
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```ts
|
|
162
|
+
* const result = await client.timesheets.update(123, { });
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
async update(entryId, req) {
|
|
166
|
+
const response = await this.request({
|
|
167
|
+
service: "Timesheets",
|
|
168
|
+
operation: "UpdateTimesheetEntry",
|
|
169
|
+
resourceType: "timesheet_entry",
|
|
170
|
+
isMutation: true,
|
|
171
|
+
resourceId: entryId,
|
|
172
|
+
}, () => this.client.PUT("/timesheet_entries/{entryId}", {
|
|
173
|
+
params: {
|
|
174
|
+
path: { entryId },
|
|
175
|
+
},
|
|
176
|
+
body: {
|
|
177
|
+
date: req.date,
|
|
178
|
+
hours: req.hours,
|
|
179
|
+
description: req.description,
|
|
180
|
+
person_id: req.personId,
|
|
181
|
+
},
|
|
182
|
+
}));
|
|
183
|
+
return response;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=timesheets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timesheets.js","sourceRoot":"","sources":["../../../src/generated/services/timesheets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timesheets 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
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Options for forProject.
|
|
18
|
+
*/
|
|
19
|
+
export interface ForProjectTimesheetOptions {
|
|
20
|
+
/** From */
|
|
21
|
+
from?: string;
|
|
22
|
+
/** To */
|
|
23
|
+
to?: string;
|
|
24
|
+
/** Person id */
|
|
25
|
+
personId?: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Options for forRecording.
|
|
30
|
+
*/
|
|
31
|
+
export interface ForRecordingTimesheetOptions {
|
|
32
|
+
/** From */
|
|
33
|
+
from?: string;
|
|
34
|
+
/** To */
|
|
35
|
+
to?: string;
|
|
36
|
+
/** Person id */
|
|
37
|
+
personId?: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Request parameters for create.
|
|
42
|
+
*/
|
|
43
|
+
export interface CreateTimesheetRequest {
|
|
44
|
+
/** Date */
|
|
45
|
+
date: string;
|
|
46
|
+
/** Hours */
|
|
47
|
+
hours: string;
|
|
48
|
+
/** Rich text description (HTML) */
|
|
49
|
+
description?: string;
|
|
50
|
+
/** Person id */
|
|
51
|
+
personId?: number;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Options for report.
|
|
56
|
+
*/
|
|
57
|
+
export interface ReportTimesheetOptions {
|
|
58
|
+
/** From */
|
|
59
|
+
from?: string;
|
|
60
|
+
/** To */
|
|
61
|
+
to?: string;
|
|
62
|
+
/** Person id */
|
|
63
|
+
personId?: number;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Request parameters for update.
|
|
68
|
+
*/
|
|
69
|
+
export interface UpdateTimesheetRequest {
|
|
70
|
+
/** Date */
|
|
71
|
+
date?: string;
|
|
72
|
+
/** Hours */
|
|
73
|
+
hours?: string;
|
|
74
|
+
/** Rich text description (HTML) */
|
|
75
|
+
description?: string;
|
|
76
|
+
/** Person id */
|
|
77
|
+
personId?: number;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// Service
|
|
83
|
+
// =============================================================================
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Service for Timesheets operations.
|
|
87
|
+
*/
|
|
88
|
+
export class TimesheetsService extends BaseService {
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Get timesheet for a specific project
|
|
92
|
+
* @param projectId - The project ID
|
|
93
|
+
* @param options - Optional query parameters
|
|
94
|
+
* @returns Array of results
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* const result = await client.timesheets.forProject(123);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
async forProject(projectId: number, options?: ForProjectTimesheetOptions): Promise<components["schemas"]["GetProjectTimesheetResponseContent"]> {
|
|
102
|
+
const response = await this.request(
|
|
103
|
+
{
|
|
104
|
+
service: "Timesheets",
|
|
105
|
+
operation: "GetProjectTimesheet",
|
|
106
|
+
resourceType: "project_timesheet",
|
|
107
|
+
isMutation: false,
|
|
108
|
+
projectId,
|
|
109
|
+
},
|
|
110
|
+
() =>
|
|
111
|
+
this.client.GET("/projects/{projectId}/timesheet.json", {
|
|
112
|
+
params: {
|
|
113
|
+
path: { projectId },
|
|
114
|
+
query: { from: options?.from, to: options?.to, "person_id": options?.personId },
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
);
|
|
118
|
+
return response ?? [];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Get timesheet for a specific recording
|
|
123
|
+
* @param recordingId - The recording ID
|
|
124
|
+
* @param options - Optional query parameters
|
|
125
|
+
* @returns Array of results
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* const result = await client.timesheets.forRecording(123);
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
async forRecording(recordingId: number, options?: ForRecordingTimesheetOptions): Promise<components["schemas"]["GetRecordingTimesheetResponseContent"]> {
|
|
133
|
+
const response = await this.request(
|
|
134
|
+
{
|
|
135
|
+
service: "Timesheets",
|
|
136
|
+
operation: "GetRecordingTimesheet",
|
|
137
|
+
resourceType: "recording_timesheet",
|
|
138
|
+
isMutation: false,
|
|
139
|
+
resourceId: recordingId,
|
|
140
|
+
},
|
|
141
|
+
() =>
|
|
142
|
+
this.client.GET("/recordings/{recordingId}/timesheet.json", {
|
|
143
|
+
params: {
|
|
144
|
+
path: { recordingId },
|
|
145
|
+
query: { from: options?.from, to: options?.to, "person_id": options?.personId },
|
|
146
|
+
},
|
|
147
|
+
})
|
|
148
|
+
);
|
|
149
|
+
return response ?? [];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Create a timesheet entry on a recording
|
|
154
|
+
* @param recordingId - The recording ID
|
|
155
|
+
* @param req - Timesheet_entry creation parameters
|
|
156
|
+
* @returns The timesheet_entry
|
|
157
|
+
* @throws {BasecampError} If required fields are missing or invalid
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```ts
|
|
161
|
+
* const result = await client.timesheets.create(123, { date: "example", hours: "example" });
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
async create(recordingId: number, req: CreateTimesheetRequest): Promise<components["schemas"]["CreateTimesheetEntryResponseContent"]> {
|
|
165
|
+
if (!req.date) {
|
|
166
|
+
throw Errors.validation("Date is required");
|
|
167
|
+
}
|
|
168
|
+
if (!req.hours) {
|
|
169
|
+
throw Errors.validation("Hours is required");
|
|
170
|
+
}
|
|
171
|
+
const response = await this.request(
|
|
172
|
+
{
|
|
173
|
+
service: "Timesheets",
|
|
174
|
+
operation: "CreateTimesheetEntry",
|
|
175
|
+
resourceType: "timesheet_entry",
|
|
176
|
+
isMutation: true,
|
|
177
|
+
resourceId: recordingId,
|
|
178
|
+
},
|
|
179
|
+
() =>
|
|
180
|
+
this.client.POST("/recordings/{recordingId}/timesheet/entries.json", {
|
|
181
|
+
params: {
|
|
182
|
+
path: { recordingId },
|
|
183
|
+
},
|
|
184
|
+
body: {
|
|
185
|
+
date: req.date,
|
|
186
|
+
hours: req.hours,
|
|
187
|
+
description: req.description,
|
|
188
|
+
person_id: req.personId,
|
|
189
|
+
},
|
|
190
|
+
})
|
|
191
|
+
);
|
|
192
|
+
return response;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Get account-wide timesheet report
|
|
197
|
+
* @param options - Optional query parameters
|
|
198
|
+
* @returns Array of results
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* const result = await client.timesheets.report();
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
async report(options?: ReportTimesheetOptions): Promise<components["schemas"]["GetTimesheetReportResponseContent"]> {
|
|
206
|
+
const response = await this.request(
|
|
207
|
+
{
|
|
208
|
+
service: "Timesheets",
|
|
209
|
+
operation: "GetTimesheetReport",
|
|
210
|
+
resourceType: "timesheet_report",
|
|
211
|
+
isMutation: false,
|
|
212
|
+
},
|
|
213
|
+
() =>
|
|
214
|
+
this.client.GET("/reports/timesheet.json", {
|
|
215
|
+
params: {
|
|
216
|
+
query: { from: options?.from, to: options?.to, "person_id": options?.personId },
|
|
217
|
+
},
|
|
218
|
+
})
|
|
219
|
+
);
|
|
220
|
+
return response ?? [];
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Get a single timesheet entry
|
|
225
|
+
* @param entryId - The entry ID
|
|
226
|
+
* @returns The timesheet_entry
|
|
227
|
+
* @throws {BasecampError} If the resource is not found
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* const result = await client.timesheets.get(123);
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
async get(entryId: number): Promise<components["schemas"]["GetTimesheetEntryResponseContent"]> {
|
|
235
|
+
const response = await this.request(
|
|
236
|
+
{
|
|
237
|
+
service: "Timesheets",
|
|
238
|
+
operation: "GetTimesheetEntry",
|
|
239
|
+
resourceType: "timesheet_entry",
|
|
240
|
+
isMutation: false,
|
|
241
|
+
resourceId: entryId,
|
|
242
|
+
},
|
|
243
|
+
() =>
|
|
244
|
+
this.client.GET("/timesheet_entries/{entryId}", {
|
|
245
|
+
params: {
|
|
246
|
+
path: { entryId },
|
|
247
|
+
},
|
|
248
|
+
})
|
|
249
|
+
);
|
|
250
|
+
return response;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Update a timesheet entry
|
|
255
|
+
* @param entryId - The entry ID
|
|
256
|
+
* @param req - Timesheet_entry update parameters
|
|
257
|
+
* @returns The timesheet_entry
|
|
258
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```ts
|
|
262
|
+
* const result = await client.timesheets.update(123, { });
|
|
263
|
+
* ```
|
|
264
|
+
*/
|
|
265
|
+
async update(entryId: number, req: UpdateTimesheetRequest): Promise<components["schemas"]["UpdateTimesheetEntryResponseContent"]> {
|
|
266
|
+
const response = await this.request(
|
|
267
|
+
{
|
|
268
|
+
service: "Timesheets",
|
|
269
|
+
operation: "UpdateTimesheetEntry",
|
|
270
|
+
resourceType: "timesheet_entry",
|
|
271
|
+
isMutation: true,
|
|
272
|
+
resourceId: entryId,
|
|
273
|
+
},
|
|
274
|
+
() =>
|
|
275
|
+
this.client.PUT("/timesheet_entries/{entryId}", {
|
|
276
|
+
params: {
|
|
277
|
+
path: { entryId },
|
|
278
|
+
},
|
|
279
|
+
body: {
|
|
280
|
+
date: req.date,
|
|
281
|
+
hours: req.hours,
|
|
282
|
+
description: req.description,
|
|
283
|
+
person_id: req.personId,
|
|
284
|
+
},
|
|
285
|
+
})
|
|
286
|
+
);
|
|
287
|
+
return response;
|
|
288
|
+
}
|
|
289
|
+
}
|