@37signals/basecamp 0.20.0 → 0.22.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.
Files changed (179) hide show
  1. package/README.md +1 -0
  2. package/dist/client.d.ts +5 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +5 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/generated/metadata.d.ts.map +1 -1
  7. package/dist/generated/metadata.js +176 -2
  8. package/dist/generated/metadata.js.map +1 -1
  9. package/dist/generated/metadata.ts +176 -2
  10. package/dist/generated/openapi-stripped.json +2882 -1276
  11. package/dist/generated/path-mapping.d.ts.map +1 -1
  12. package/dist/generated/path-mapping.js +15 -1
  13. package/dist/generated/path-mapping.js.map +1 -1
  14. package/dist/generated/path-mapping.ts +15 -1
  15. package/dist/generated/person-id-sites.d.ts.map +1 -1
  16. package/dist/generated/person-id-sites.js +61 -2
  17. package/dist/generated/person-id-sites.js.map +1 -1
  18. package/dist/generated/person-id-sites.ts +61 -2
  19. package/dist/generated/schema.d.ts +1406 -92
  20. package/dist/generated/services/bookmarks.d.ts +1 -1
  21. package/dist/generated/services/bookmarks.js +1 -1
  22. package/dist/generated/services/bookmarks.ts +1 -1
  23. package/dist/generated/services/boosts.d.ts +2 -2
  24. package/dist/generated/services/boosts.js +2 -2
  25. package/dist/generated/services/boosts.ts +2 -2
  26. package/dist/generated/services/campfires.d.ts +4 -4
  27. package/dist/generated/services/campfires.js +4 -4
  28. package/dist/generated/services/campfires.ts +4 -4
  29. package/dist/generated/services/card-steps.d.ts +15 -11
  30. package/dist/generated/services/card-steps.d.ts.map +1 -1
  31. package/dist/generated/services/card-steps.js +4 -4
  32. package/dist/generated/services/card-steps.js.map +1 -1
  33. package/dist/generated/services/card-steps.ts +15 -11
  34. package/dist/generated/services/cards.d.ts +1 -1
  35. package/dist/generated/services/cards.js +1 -1
  36. package/dist/generated/services/cards.ts +1 -1
  37. package/dist/generated/services/checkins.d.ts +9 -8
  38. package/dist/generated/services/checkins.d.ts.map +1 -1
  39. package/dist/generated/services/checkins.js +6 -6
  40. package/dist/generated/services/checkins.js.map +1 -1
  41. package/dist/generated/services/checkins.ts +11 -10
  42. package/dist/generated/services/client-approvals.d.ts +1 -1
  43. package/dist/generated/services/client-approvals.js +1 -1
  44. package/dist/generated/services/client-approvals.ts +1 -1
  45. package/dist/generated/services/client-correspondences.d.ts +1 -1
  46. package/dist/generated/services/client-correspondences.js +1 -1
  47. package/dist/generated/services/client-correspondences.ts +1 -1
  48. package/dist/generated/services/client-replies.d.ts +1 -1
  49. package/dist/generated/services/client-replies.js +1 -1
  50. package/dist/generated/services/client-replies.ts +1 -1
  51. package/dist/generated/services/comments.d.ts +1 -1
  52. package/dist/generated/services/comments.js +1 -1
  53. package/dist/generated/services/comments.ts +1 -1
  54. package/dist/generated/services/documents.d.ts +1 -1
  55. package/dist/generated/services/documents.js +1 -1
  56. package/dist/generated/services/documents.ts +1 -1
  57. package/dist/generated/services/drafts.d.ts +1 -1
  58. package/dist/generated/services/drafts.js +1 -1
  59. package/dist/generated/services/drafts.ts +1 -1
  60. package/dist/generated/services/events.d.ts +1 -1
  61. package/dist/generated/services/events.js +1 -1
  62. package/dist/generated/services/events.ts +1 -1
  63. package/dist/generated/services/everything.d.ts +14 -14
  64. package/dist/generated/services/everything.js +14 -14
  65. package/dist/generated/services/everything.ts +14 -14
  66. package/dist/generated/services/forwards.d.ts +2 -2
  67. package/dist/generated/services/forwards.js +2 -2
  68. package/dist/generated/services/forwards.ts +2 -2
  69. package/dist/generated/services/index.d.ts +2 -1
  70. package/dist/generated/services/index.d.ts.map +1 -1
  71. package/dist/generated/services/index.js +2 -1
  72. package/dist/generated/services/index.js.map +1 -1
  73. package/dist/generated/services/index.ts +2 -1
  74. package/dist/generated/services/message-types.d.ts +1 -1
  75. package/dist/generated/services/message-types.js +1 -1
  76. package/dist/generated/services/message-types.ts +1 -1
  77. package/dist/generated/services/messages.d.ts +1 -1
  78. package/dist/generated/services/messages.js +1 -1
  79. package/dist/generated/services/messages.ts +1 -1
  80. package/dist/generated/services/my-notifications.d.ts +3 -2
  81. package/dist/generated/services/my-notifications.d.ts.map +1 -1
  82. package/dist/generated/services/my-notifications.js +1 -1
  83. package/dist/generated/services/my-notifications.js.map +1 -1
  84. package/dist/generated/services/my-notifications.ts +3 -2
  85. package/dist/generated/services/people.d.ts +3 -3
  86. package/dist/generated/services/people.js +3 -3
  87. package/dist/generated/services/people.ts +3 -3
  88. package/dist/generated/services/projects.d.ts +1 -1
  89. package/dist/generated/services/projects.js +1 -1
  90. package/dist/generated/services/projects.ts +1 -1
  91. package/dist/generated/services/recordings.d.ts +27 -3
  92. package/dist/generated/services/recordings.d.ts.map +1 -1
  93. package/dist/generated/services/recordings.js +32 -3
  94. package/dist/generated/services/recordings.js.map +1 -1
  95. package/dist/generated/services/recordings.ts +49 -3
  96. package/dist/generated/services/reports.d.ts +1 -1
  97. package/dist/generated/services/reports.js +1 -1
  98. package/dist/generated/services/reports.ts +1 -1
  99. package/dist/generated/services/schedules.d.ts +1 -1
  100. package/dist/generated/services/schedules.js +1 -1
  101. package/dist/generated/services/schedules.ts +1 -1
  102. package/dist/generated/services/subtasks.d.ts +157 -0
  103. package/dist/generated/services/subtasks.d.ts.map +1 -0
  104. package/dist/generated/services/subtasks.js +240 -0
  105. package/dist/generated/services/subtasks.js.map +1 -0
  106. package/dist/generated/services/subtasks.ts +336 -0
  107. package/dist/generated/services/templates.d.ts +114 -10
  108. package/dist/generated/services/templates.d.ts.map +1 -1
  109. package/dist/generated/services/templates.js +147 -10
  110. package/dist/generated/services/templates.js.map +1 -1
  111. package/dist/generated/services/templates.ts +220 -13
  112. package/dist/generated/services/timeline.d.ts +1 -1
  113. package/dist/generated/services/timeline.js +1 -1
  114. package/dist/generated/services/timeline.ts +1 -1
  115. package/dist/generated/services/timesheets.d.ts +3 -3
  116. package/dist/generated/services/timesheets.js +3 -3
  117. package/dist/generated/services/timesheets.ts +3 -3
  118. package/dist/generated/services/todolist-groups.d.ts +1 -1
  119. package/dist/generated/services/todolist-groups.js +1 -1
  120. package/dist/generated/services/todolist-groups.ts +1 -1
  121. package/dist/generated/services/todolists.d.ts +1 -1
  122. package/dist/generated/services/todolists.js +1 -1
  123. package/dist/generated/services/todolists.ts +1 -1
  124. package/dist/generated/services/todos.d.ts +1 -1
  125. package/dist/generated/services/todos.js +1 -1
  126. package/dist/generated/services/todos.ts +1 -1
  127. package/dist/generated/services/uploads.d.ts +2 -2
  128. package/dist/generated/services/uploads.js +2 -2
  129. package/dist/generated/services/uploads.ts +2 -2
  130. package/dist/generated/services/vaults.d.ts +1 -1
  131. package/dist/generated/services/vaults.js +1 -1
  132. package/dist/generated/services/vaults.ts +1 -1
  133. package/dist/generated/services/webhooks.d.ts +1 -1
  134. package/dist/generated/services/webhooks.js +1 -1
  135. package/dist/generated/services/webhooks.ts +1 -1
  136. package/dist/index.d.ts +3 -2
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +3 -0
  139. package/dist/index.js.map +1 -1
  140. package/package.json +3 -3
  141. package/src/generated/metadata.ts +176 -2
  142. package/src/generated/openapi-stripped.json +2882 -1276
  143. package/src/generated/path-mapping.ts +15 -1
  144. package/src/generated/person-id-sites.ts +61 -2
  145. package/src/generated/schema.d.ts +1406 -92
  146. package/src/generated/services/bookmarks.ts +1 -1
  147. package/src/generated/services/boosts.ts +2 -2
  148. package/src/generated/services/campfires.ts +4 -4
  149. package/src/generated/services/card-steps.ts +15 -11
  150. package/src/generated/services/cards.ts +1 -1
  151. package/src/generated/services/checkins.ts +11 -10
  152. package/src/generated/services/client-approvals.ts +1 -1
  153. package/src/generated/services/client-correspondences.ts +1 -1
  154. package/src/generated/services/client-replies.ts +1 -1
  155. package/src/generated/services/comments.ts +1 -1
  156. package/src/generated/services/documents.ts +1 -1
  157. package/src/generated/services/drafts.ts +1 -1
  158. package/src/generated/services/events.ts +1 -1
  159. package/src/generated/services/everything.ts +14 -14
  160. package/src/generated/services/forwards.ts +2 -2
  161. package/src/generated/services/index.ts +2 -1
  162. package/src/generated/services/message-types.ts +1 -1
  163. package/src/generated/services/messages.ts +1 -1
  164. package/src/generated/services/my-notifications.ts +3 -2
  165. package/src/generated/services/people.ts +3 -3
  166. package/src/generated/services/projects.ts +1 -1
  167. package/src/generated/services/recordings.ts +49 -3
  168. package/src/generated/services/reports.ts +1 -1
  169. package/src/generated/services/schedules.ts +1 -1
  170. package/src/generated/services/subtasks.ts +336 -0
  171. package/src/generated/services/templates.ts +220 -13
  172. package/src/generated/services/timeline.ts +1 -1
  173. package/src/generated/services/timesheets.ts +3 -3
  174. package/src/generated/services/todolist-groups.ts +1 -1
  175. package/src/generated/services/todolists.ts +1 -1
  176. package/src/generated/services/todos.ts +1 -1
  177. package/src/generated/services/uploads.ts +2 -2
  178. package/src/generated/services/vaults.ts +1 -1
  179. package/src/generated/services/webhooks.ts +1 -1
@@ -39,7 +39,7 @@ export declare class ReportsService extends BaseService {
39
39
  /**
40
40
  * Get account-wide activity feed (progress report)
41
41
  * @param options - Optional query parameters
42
- * @returns All TimelineEvent across all pages, with .meta.totalCount
42
+ * @returns Every TimelineEvent across all pages, with .meta.totalCount
43
43
  *
44
44
  * @example
45
45
  * ```ts
@@ -14,7 +14,7 @@ export class ReportsService extends BaseService {
14
14
  /**
15
15
  * Get account-wide activity feed (progress report)
16
16
  * @param options - Optional query parameters
17
- * @returns All TimelineEvent across all pages, with .meta.totalCount
17
+ * @returns Every TimelineEvent across all pages, with .meta.totalCount
18
18
  *
19
19
  * @example
20
20
  * ```ts
@@ -55,7 +55,7 @@ export class ReportsService extends BaseService {
55
55
  /**
56
56
  * Get account-wide activity feed (progress report)
57
57
  * @param options - Optional query parameters
58
- * @returns All TimelineEvent across all pages, with .meta.totalCount
58
+ * @returns Every TimelineEvent across all pages, with .meta.totalCount
59
59
  *
60
60
  * @example
61
61
  * ```ts
@@ -225,7 +225,7 @@ export declare class SchedulesService extends BaseService {
225
225
  * List entries on a schedule
226
226
  * @param scheduleId - The schedule ID
227
227
  * @param options - Optional query parameters
228
- * @returns All ScheduleEntry across all pages, with .meta.totalCount
228
+ * @returns Every ScheduleEntry across all pages, with .meta.totalCount
229
229
  *
230
230
  * @example
231
231
  * ```ts
@@ -164,7 +164,7 @@ export class SchedulesService extends BaseService {
164
164
  * List entries on a schedule
165
165
  * @param scheduleId - The schedule ID
166
166
  * @param options - Optional query parameters
167
- * @returns All ScheduleEntry across all pages, with .meta.totalCount
167
+ * @returns Every ScheduleEntry across all pages, with .meta.totalCount
168
168
  *
169
169
  * @example
170
170
  * ```ts
@@ -353,7 +353,7 @@ export class SchedulesService extends BaseService {
353
353
  * List entries on a schedule
354
354
  * @param scheduleId - The schedule ID
355
355
  * @param options - Optional query parameters
356
- * @returns All ScheduleEntry across all pages, with .meta.totalCount
356
+ * @returns Every ScheduleEntry across all pages, with .meta.totalCount
357
357
  *
358
358
  * @example
359
359
  * ```ts
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Subtasks 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
+ import { ListResult } from "../../pagination.js";
9
+ import type { PaginationOptions } from "../../pagination.js";
10
+ /** Subtask entity from the Basecamp API. */
11
+ export type Subtask = components["schemas"]["Subtask"];
12
+ /** @deprecated renamed to Subtask, the same Kanban::Step record. */
13
+ export type CardStep = Subtask;
14
+ /**
15
+ * Options for list.
16
+ */
17
+ export interface ListSubtaskOptions extends PaginationOptions {
18
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
19
+ page?: number;
20
+ }
21
+ /**
22
+ * Request parameters for create.
23
+ */
24
+ export interface CreateSubtaskRequest {
25
+ /** Title */
26
+ title: string;
27
+ /** Due date (YYYY-MM-DD) */
28
+ dueOn?: string;
29
+ /** Person IDs to assign to */
30
+ assigneeIds?: number[];
31
+ }
32
+ /**
33
+ * Request parameters for update.
34
+ */
35
+ export interface UpdateSubtaskRequest {
36
+ /** Title */
37
+ title?: string;
38
+ /** Due date (YYYY-MM-DD) */
39
+ dueOn?: string;
40
+ /** Person IDs to assign to */
41
+ assigneeIds?: number[];
42
+ }
43
+ /**
44
+ * Request parameters for reposition.
45
+ */
46
+ export interface RepositionSubtaskRequest {
47
+ /** The 1-based position to move it to */
48
+ position: number;
49
+ }
50
+ /**
51
+ * Service for Subtasks operations.
52
+ */
53
+ export declare class SubtasksService extends BaseService {
54
+ /**
55
+ * List a recording's subtasks, in position order
56
+ * @param recordingId - The recording ID
57
+ * @param options - Optional query parameters
58
+ * @returns Every Subtask across all pages, with .meta.totalCount
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * const result = await client.subtasks.list(123);
63
+ *
64
+ * // With options
65
+ * const filtered = await client.subtasks.list(123, { page: 1 });
66
+ * ```
67
+ */
68
+ list(recordingId: number, options?: ListSubtaskOptions): Promise<ListResult<Subtask>>;
69
+ /**
70
+ * Create a subtask under a to-do or a card
71
+ * @param recordingId - The recording ID
72
+ * @param req - Subtask creation parameters
73
+ * @returns The Subtask
74
+ * @throws {BasecampError} If required fields are missing or invalid
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const result = await client.subtasks.create(123, { title: "example" });
79
+ * ```
80
+ */
81
+ create(recordingId: number, req: CreateSubtaskRequest): Promise<Subtask>;
82
+ /**
83
+ * Get a subtask by ID
84
+ * @param subtaskId - The subtask ID
85
+ * @returns The Subtask
86
+ * @throws {BasecampError} If the resource is not found
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const result = await client.subtasks.get(123);
91
+ * ```
92
+ */
93
+ get(subtaskId: number): Promise<Subtask>;
94
+ /**
95
+ * Update a subtask
96
+ * @param subtaskId - The subtask ID
97
+ * @param req - Subtask update parameters
98
+ * @returns The Subtask
99
+ * @throws {BasecampError} If the resource is not found or fields are invalid
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const result = await client.subtasks.update(123, { });
104
+ * ```
105
+ */
106
+ update(subtaskId: number, req: UpdateSubtaskRequest): Promise<Subtask>;
107
+ /**
108
+ * Delete a subtask
109
+ * @param subtaskId - The subtask ID
110
+ * @returns void
111
+ * @throws {BasecampError} If the request fails
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * await client.subtasks.delete(123);
116
+ * ```
117
+ */
118
+ delete(subtaskId: number): Promise<void>;
119
+ /**
120
+ * Mark a subtask as completed
121
+ * @param subtaskId - The subtask ID
122
+ * @returns void
123
+ * @throws {BasecampError} If the request fails
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * await client.subtasks.complete(123);
128
+ * ```
129
+ */
130
+ complete(subtaskId: number): Promise<void>;
131
+ /**
132
+ * Mark a subtask as not completed
133
+ * @param subtaskId - The subtask ID
134
+ * @returns void
135
+ * @throws {BasecampError} If the request fails
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * await client.subtasks.uncomplete(123);
140
+ * ```
141
+ */
142
+ uncomplete(subtaskId: number): Promise<void>;
143
+ /**
144
+ * Move a subtask to a new position among its siblings
145
+ * @param subtaskId - The subtask ID
146
+ * @param req - Subtask request parameters
147
+ * @returns void
148
+ * @throws {BasecampError} If the request fails
149
+ *
150
+ * @example
151
+ * ```ts
152
+ * await client.subtasks.reposition(123, { position: 1 });
153
+ * ```
154
+ */
155
+ reposition(subtaskId: number, req: RepositionSubtaskRequest): Promise<void>;
156
+ }
157
+ //# sourceMappingURL=subtasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtasks.d.ts","sourceRoot":"","sources":["../../../src/generated/services/subtasks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AACvD,oEAAoE;AACpE,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,wJAAwJ;IACxJ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAE9C;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAoB3F;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B9E;;;;;;;;;;OAUG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9C;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B5E;;;;;;;;;;OAUG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9C;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD;;;;;;;;;;OAUG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlD;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBlF"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Subtasks 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 Subtasks operations.
13
+ */
14
+ export class SubtasksService extends BaseService {
15
+ /**
16
+ * List a recording's subtasks, in position order
17
+ * @param recordingId - The recording ID
18
+ * @param options - Optional query parameters
19
+ * @returns Every Subtask across all pages, with .meta.totalCount
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const result = await client.subtasks.list(123);
24
+ *
25
+ * // With options
26
+ * const filtered = await client.subtasks.list(123, { page: 1 });
27
+ * ```
28
+ */
29
+ async list(recordingId, options) {
30
+ return this.requestPaginated({
31
+ service: "Subtasks",
32
+ operation: "ListSubtasks",
33
+ resourceType: "subtask",
34
+ isMutation: false,
35
+ resourceId: recordingId,
36
+ }, () => this.client.GET("/recordings/{recordingId}/subtasks.json", {
37
+ params: {
38
+ path: { recordingId },
39
+ query: { page: options?.page },
40
+ },
41
+ }), options);
42
+ }
43
+ /**
44
+ * Create a subtask under a to-do or a card
45
+ * @param recordingId - The recording ID
46
+ * @param req - Subtask creation parameters
47
+ * @returns The Subtask
48
+ * @throws {BasecampError} If required fields are missing or invalid
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const result = await client.subtasks.create(123, { title: "example" });
53
+ * ```
54
+ */
55
+ async create(recordingId, req) {
56
+ if (!req.title) {
57
+ throw Errors.validation("Title is required");
58
+ }
59
+ if (req.dueOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.dueOn)) {
60
+ throw Errors.validation("Due on must be in YYYY-MM-DD format");
61
+ }
62
+ const response = await this.request({
63
+ service: "Subtasks",
64
+ operation: "CreateSubtask",
65
+ resourceType: "subtask",
66
+ isMutation: true,
67
+ resourceId: recordingId,
68
+ }, () => this.client.POST("/recordings/{recordingId}/subtasks.json", {
69
+ params: {
70
+ path: { recordingId },
71
+ },
72
+ body: {
73
+ title: req.title,
74
+ due_on: req.dueOn,
75
+ assignee_ids: req.assigneeIds,
76
+ },
77
+ }));
78
+ return response;
79
+ }
80
+ /**
81
+ * Get a subtask by ID
82
+ * @param subtaskId - The subtask ID
83
+ * @returns The Subtask
84
+ * @throws {BasecampError} If the resource is not found
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * const result = await client.subtasks.get(123);
89
+ * ```
90
+ */
91
+ async get(subtaskId) {
92
+ const response = await this.request({
93
+ service: "Subtasks",
94
+ operation: "GetSubtask",
95
+ resourceType: "subtask",
96
+ isMutation: false,
97
+ resourceId: subtaskId,
98
+ }, () => this.client.GET("/subtasks/{subtaskId}", {
99
+ params: {
100
+ path: { subtaskId },
101
+ },
102
+ }));
103
+ return response;
104
+ }
105
+ /**
106
+ * Update a subtask
107
+ * @param subtaskId - The subtask ID
108
+ * @param req - Subtask update parameters
109
+ * @returns The Subtask
110
+ * @throws {BasecampError} If the resource is not found or fields are invalid
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const result = await client.subtasks.update(123, { });
115
+ * ```
116
+ */
117
+ async update(subtaskId, req) {
118
+ if (req.dueOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.dueOn)) {
119
+ throw Errors.validation("Due on must be in YYYY-MM-DD format");
120
+ }
121
+ const response = await this.request({
122
+ service: "Subtasks",
123
+ operation: "UpdateSubtask",
124
+ resourceType: "subtask",
125
+ isMutation: true,
126
+ resourceId: subtaskId,
127
+ }, () => this.client.PUT("/subtasks/{subtaskId}", {
128
+ params: {
129
+ path: { subtaskId },
130
+ },
131
+ body: {
132
+ title: req.title,
133
+ due_on: req.dueOn,
134
+ assignee_ids: req.assigneeIds,
135
+ },
136
+ }));
137
+ return response;
138
+ }
139
+ /**
140
+ * Delete a subtask
141
+ * @param subtaskId - The subtask ID
142
+ * @returns void
143
+ * @throws {BasecampError} If the request fails
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * await client.subtasks.delete(123);
148
+ * ```
149
+ */
150
+ async delete(subtaskId) {
151
+ await this.request({
152
+ service: "Subtasks",
153
+ operation: "DeleteSubtask",
154
+ resourceType: "subtask",
155
+ isMutation: true,
156
+ resourceId: subtaskId,
157
+ }, () => this.client.DELETE("/subtasks/{subtaskId}", {
158
+ params: {
159
+ path: { subtaskId },
160
+ },
161
+ }));
162
+ }
163
+ /**
164
+ * Mark a subtask as completed
165
+ * @param subtaskId - The subtask ID
166
+ * @returns void
167
+ * @throws {BasecampError} If the request fails
168
+ *
169
+ * @example
170
+ * ```ts
171
+ * await client.subtasks.complete(123);
172
+ * ```
173
+ */
174
+ async complete(subtaskId) {
175
+ await this.request({
176
+ service: "Subtasks",
177
+ operation: "CompleteSubtask",
178
+ resourceType: "subtask",
179
+ isMutation: true,
180
+ resourceId: subtaskId,
181
+ }, () => this.client.POST("/subtasks/{subtaskId}/completion.json", {
182
+ params: {
183
+ path: { subtaskId },
184
+ },
185
+ }));
186
+ }
187
+ /**
188
+ * Mark a subtask as not completed
189
+ * @param subtaskId - The subtask ID
190
+ * @returns void
191
+ * @throws {BasecampError} If the request fails
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * await client.subtasks.uncomplete(123);
196
+ * ```
197
+ */
198
+ async uncomplete(subtaskId) {
199
+ await this.request({
200
+ service: "Subtasks",
201
+ operation: "UncompleteSubtask",
202
+ resourceType: "subtask",
203
+ isMutation: true,
204
+ resourceId: subtaskId,
205
+ }, () => this.client.DELETE("/subtasks/{subtaskId}/completion.json", {
206
+ params: {
207
+ path: { subtaskId },
208
+ },
209
+ }));
210
+ }
211
+ /**
212
+ * Move a subtask to a new position among its siblings
213
+ * @param subtaskId - The subtask ID
214
+ * @param req - Subtask request parameters
215
+ * @returns void
216
+ * @throws {BasecampError} If the request fails
217
+ *
218
+ * @example
219
+ * ```ts
220
+ * await client.subtasks.reposition(123, { position: 1 });
221
+ * ```
222
+ */
223
+ async reposition(subtaskId, req) {
224
+ await this.request({
225
+ service: "Subtasks",
226
+ operation: "RepositionSubtask",
227
+ resourceType: "subtask",
228
+ isMutation: true,
229
+ resourceId: subtaskId,
230
+ }, () => this.client.PUT("/subtasks/{subtaskId}/position.json", {
231
+ params: {
232
+ path: { subtaskId },
233
+ },
234
+ body: {
235
+ position: req.position,
236
+ },
237
+ }));
238
+ }
239
+ }
240
+ //# sourceMappingURL=subtasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtasks.js","sourceRoot":"","sources":["../../../src/generated/services/subtasks.ts"],"names":[],"mappings":"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"}