@37signals/basecamp 0.7.3 → 0.9.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 (162) hide show
  1. package/README.md +82 -2
  2. package/dist/client.d.ts +7 -4
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +32 -23
  5. package/dist/client.js.map +1 -1
  6. package/dist/download.d.ts.map +1 -1
  7. package/dist/errors.d.ts +10 -0
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +7 -1
  10. package/dist/errors.js.map +1 -1
  11. package/dist/generated/metadata.d.ts +32 -0
  12. package/dist/generated/metadata.d.ts.map +1 -0
  13. package/dist/generated/metadata.js +2723 -0
  14. package/dist/generated/metadata.js.map +1 -0
  15. package/dist/generated/{metadata.json → metadata.ts} +141 -35
  16. package/dist/generated/openapi-stripped.json +1713 -478
  17. package/dist/generated/path-mapping.d.ts.map +1 -1
  18. package/dist/generated/path-mapping.js +10 -5
  19. package/dist/generated/path-mapping.js.map +1 -1
  20. package/dist/generated/path-mapping.ts +10 -5
  21. package/dist/generated/schema.d.ts +1027 -265
  22. package/dist/generated/services/campfires.d.ts +22 -1
  23. package/dist/generated/services/campfires.d.ts.map +1 -1
  24. package/dist/generated/services/campfires.js +33 -1
  25. package/dist/generated/services/campfires.js.map +1 -1
  26. package/dist/generated/services/campfires.ts +46 -1
  27. package/dist/generated/services/card-columns.d.ts +31 -28
  28. package/dist/generated/services/card-columns.d.ts.map +1 -1
  29. package/dist/generated/services/card-columns.js +57 -51
  30. package/dist/generated/services/card-columns.js.map +1 -1
  31. package/dist/generated/services/card-columns.ts +65 -59
  32. package/dist/generated/services/checkins.d.ts +3 -1
  33. package/dist/generated/services/checkins.d.ts.map +1 -1
  34. package/dist/generated/services/checkins.js +2 -1
  35. package/dist/generated/services/checkins.js.map +1 -1
  36. package/dist/generated/services/checkins.ts +4 -1
  37. package/dist/generated/services/documents.d.ts +2 -0
  38. package/dist/generated/services/documents.d.ts.map +1 -1
  39. package/dist/generated/services/documents.js +1 -0
  40. package/dist/generated/services/documents.js.map +1 -1
  41. package/dist/generated/services/documents.ts +3 -0
  42. package/dist/generated/services/gauges.d.ts +2 -2
  43. package/dist/generated/services/gauges.js +2 -2
  44. package/dist/generated/services/gauges.ts +2 -2
  45. package/dist/generated/services/index.d.ts +3 -2
  46. package/dist/generated/services/index.d.ts.map +1 -1
  47. package/dist/generated/services/index.js +3 -2
  48. package/dist/generated/services/index.js.map +1 -1
  49. package/dist/generated/services/index.ts +3 -2
  50. package/dist/generated/services/messages.d.ts +2 -0
  51. package/dist/generated/services/messages.d.ts.map +1 -1
  52. package/dist/generated/services/messages.js +1 -0
  53. package/dist/generated/services/messages.js.map +1 -1
  54. package/dist/generated/services/messages.ts +3 -0
  55. package/dist/generated/services/people.d.ts +2 -2
  56. package/dist/generated/services/people.js +2 -2
  57. package/dist/generated/services/people.ts +2 -2
  58. package/dist/generated/services/reports.d.ts +1 -1
  59. package/dist/generated/services/reports.js +1 -1
  60. package/dist/generated/services/reports.ts +1 -1
  61. package/dist/generated/services/schedules.d.ts +2 -0
  62. package/dist/generated/services/schedules.d.ts.map +1 -1
  63. package/dist/generated/services/schedules.js +1 -0
  64. package/dist/generated/services/schedules.js.map +1 -1
  65. package/dist/generated/services/schedules.ts +3 -0
  66. package/dist/generated/services/search.d.ts +30 -1
  67. package/dist/generated/services/search.d.ts.map +1 -1
  68. package/dist/generated/services/search.js +1 -1
  69. package/dist/generated/services/search.js.map +1 -1
  70. package/dist/generated/services/search.ts +31 -2
  71. package/dist/generated/services/templates.d.ts +3 -5
  72. package/dist/generated/services/templates.d.ts.map +1 -1
  73. package/dist/generated/services/templates.js +4 -5
  74. package/dist/generated/services/templates.js.map +1 -1
  75. package/dist/generated/services/templates.ts +6 -9
  76. package/dist/generated/services/todolists.d.ts +22 -0
  77. package/dist/generated/services/todolists.d.ts.map +1 -1
  78. package/dist/generated/services/todolists.js +31 -0
  79. package/dist/generated/services/todolists.js.map +1 -1
  80. package/dist/generated/services/todolists.ts +46 -0
  81. package/dist/generated/services/todos.d.ts +8 -8
  82. package/dist/generated/services/todos.d.ts.map +1 -1
  83. package/dist/generated/services/todos.js +9 -6
  84. package/dist/generated/services/todos.js.map +1 -1
  85. package/dist/generated/services/todos.ts +12 -9
  86. package/dist/generated/services/tools.d.ts +11 -10
  87. package/dist/generated/services/tools.d.ts.map +1 -1
  88. package/dist/generated/services/tools.js +16 -8
  89. package/dist/generated/services/tools.js.map +1 -1
  90. package/dist/generated/services/tools.ts +21 -13
  91. package/dist/generated/services/uploads.d.ts +2 -0
  92. package/dist/generated/services/uploads.d.ts.map +1 -1
  93. package/dist/generated/services/uploads.js +1 -0
  94. package/dist/generated/services/uploads.js.map +1 -1
  95. package/dist/generated/services/uploads.ts +3 -0
  96. package/dist/generated/services/webhooks.js +2 -2
  97. package/dist/generated/services/webhooks.js.map +1 -1
  98. package/dist/generated/services/webhooks.ts +2 -2
  99. package/dist/generated/services/wormholes.d.ts +70 -0
  100. package/dist/generated/services/wormholes.d.ts.map +1 -0
  101. package/dist/generated/services/wormholes.js +103 -0
  102. package/dist/generated/services/wormholes.js.map +1 -0
  103. package/dist/generated/services/wormholes.ts +145 -0
  104. package/dist/index.d.ts +8 -5
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +4 -3
  107. package/dist/index.js.map +1 -1
  108. package/dist/oauth/discovery.d.ts +105 -23
  109. package/dist/oauth/discovery.d.ts.map +1 -1
  110. package/dist/oauth/discovery.js +453 -61
  111. package/dist/oauth/discovery.js.map +1 -1
  112. package/dist/oauth/index.d.ts +2 -2
  113. package/dist/oauth/index.d.ts.map +1 -1
  114. package/dist/oauth/index.js +1 -1
  115. package/dist/oauth/index.js.map +1 -1
  116. package/dist/oauth/interactive-login.d.ts +20 -2
  117. package/dist/oauth/interactive-login.d.ts.map +1 -1
  118. package/dist/oauth/interactive-login.js +58 -4
  119. package/dist/oauth/interactive-login.js.map +1 -1
  120. package/dist/oauth/types.d.ts +54 -2
  121. package/dist/oauth/types.d.ts.map +1 -1
  122. package/dist/security.d.ts +22 -0
  123. package/dist/security.d.ts.map +1 -1
  124. package/dist/security.js +56 -1
  125. package/dist/security.js.map +1 -1
  126. package/dist/services/authorization.d.ts.map +1 -1
  127. package/dist/services/authorization.js +3 -0
  128. package/dist/services/authorization.js.map +1 -1
  129. package/dist/services/base.d.ts.map +1 -1
  130. package/dist/services/base.js +1 -3
  131. package/dist/services/base.js.map +1 -1
  132. package/dist/services/todos-extensions.d.ts +118 -0
  133. package/dist/services/todos-extensions.d.ts.map +1 -0
  134. package/dist/services/todos-extensions.js +113 -0
  135. package/dist/services/todos-extensions.js.map +1 -0
  136. package/dist/services/uploads-extensions.d.ts +33 -0
  137. package/dist/services/uploads-extensions.d.ts.map +1 -0
  138. package/dist/services/uploads-extensions.js +48 -0
  139. package/dist/services/uploads-extensions.js.map +1 -0
  140. package/package.json +7 -4
  141. package/src/generated/{metadata.json → metadata.ts} +141 -35
  142. package/src/generated/openapi-stripped.json +1713 -478
  143. package/src/generated/path-mapping.ts +10 -5
  144. package/src/generated/schema.d.ts +1027 -265
  145. package/src/generated/services/campfires.ts +46 -1
  146. package/src/generated/services/card-columns.ts +65 -59
  147. package/src/generated/services/checkins.ts +4 -1
  148. package/src/generated/services/documents.ts +3 -0
  149. package/src/generated/services/gauges.ts +2 -2
  150. package/src/generated/services/index.ts +3 -2
  151. package/src/generated/services/messages.ts +3 -0
  152. package/src/generated/services/people.ts +2 -2
  153. package/src/generated/services/reports.ts +1 -1
  154. package/src/generated/services/schedules.ts +3 -0
  155. package/src/generated/services/search.ts +31 -2
  156. package/src/generated/services/templates.ts +6 -9
  157. package/src/generated/services/todolists.ts +46 -0
  158. package/src/generated/services/todos.ts +12 -9
  159. package/src/generated/services/tools.ts +21 -13
  160. package/src/generated/services/uploads.ts +3 -0
  161. package/src/generated/services/webhooks.ts +2 -2
  162. package/src/generated/services/wormholes.ts +145 -0
@@ -16,12 +16,12 @@ import { Errors } from "../../errors.js";
16
16
  export type Tool = components["schemas"]["Tool"];
17
17
 
18
18
  /**
19
- * Request parameters for clone.
19
+ * Request parameters for create.
20
20
  */
21
- export interface CloneToolRequest {
22
- /** Source recording id */
23
- sourceRecordingId: number;
24
- /** Title */
21
+ export interface CreateToolRequest {
22
+ /** Tool type to add to the project dock. Values: Chat::Transcript|Inbox|Kanban::Board|Message::Board|Questionnaire|Schedule|Todoset|Vault. */
23
+ toolType: string;
24
+ /** Title for the new tool. When omitted, Basecamp assigns the next available default title for the tool type. */
25
25
  title?: string;
26
26
  }
27
27
 
@@ -52,28 +52,36 @@ export interface RepositionToolRequest {
52
52
  export class ToolsService extends BaseService {
53
53
 
54
54
  /**
55
- * Clone an existing tool to create a new one
56
- * @param req - Tool request parameters
55
+ * Create a tool in a project dock
56
+ * @param bucketId - The bucket ID
57
+ * @param req - Tool creation parameters
57
58
  * @returns The Tool
58
- * @throws {BasecampError} If the request fails
59
+ * @throws {BasecampError} If required fields are missing or invalid
59
60
  *
60
61
  * @example
61
62
  * ```ts
62
- * const result = await client.tools.clone({ sourceRecordingId: 1 });
63
+ * const result = await client.tools.create(123, { toolType: "example" });
63
64
  * ```
64
65
  */
65
- async clone(req: CloneToolRequest): Promise<Tool> {
66
+ async create(bucketId: number, req: CreateToolRequest): Promise<Tool> {
67
+ if (!req.toolType) {
68
+ throw Errors.validation("Tool type is required");
69
+ }
66
70
  const response = await this.request(
67
71
  {
68
72
  service: "Tools",
69
- operation: "CloneTool",
73
+ operation: "CreateTool",
70
74
  resourceType: "tool",
71
75
  isMutation: true,
76
+ projectId: bucketId,
72
77
  },
73
78
  () =>
74
- this.client.POST("/dock/tools.json", {
79
+ this.client.POST("/buckets/{bucketId}/dock/tools.json", {
80
+ params: {
81
+ path: { bucketId },
82
+ },
75
83
  body: {
76
- source_recording_id: req.sourceRecordingId,
84
+ tool_type: req.toolType,
77
85
  title: req.title,
78
86
  },
79
87
  })
@@ -51,6 +51,8 @@ export interface CreateUploadRequest {
51
51
  baseName?: string;
52
52
  /** Subscriptions */
53
53
  subscriptions?: number[];
54
+ /** Visible to clients */
55
+ visibleToClients?: boolean;
54
56
  }
55
57
 
56
58
 
@@ -222,6 +224,7 @@ export class UploadsService extends BaseService {
222
224
  description: req.description,
223
225
  base_name: req.baseName,
224
226
  subscriptions: req.subscriptions,
227
+ visible_to_clients: req.visibleToClients,
225
228
  },
226
229
  })
227
230
  );
@@ -75,7 +75,7 @@ export class WebhooksService extends BaseService {
75
75
  operation: "ListWebhooks",
76
76
  resourceType: "webhook",
77
77
  isMutation: false,
78
- resourceId: bucketId,
78
+ projectId: bucketId,
79
79
  },
80
80
  () =>
81
81
  this.client.GET("/buckets/{bucketId}/webhooks.json", {
@@ -112,7 +112,7 @@ export class WebhooksService extends BaseService {
112
112
  operation: "CreateWebhook",
113
113
  resourceType: "webhook",
114
114
  isMutation: true,
115
- resourceId: bucketId,
115
+ projectId: bucketId,
116
116
  },
117
117
  () =>
118
118
  this.client.POST("/buckets/{bucketId}/webhooks.json", {
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Wormholes 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
+
10
+ // =============================================================================
11
+ // Types
12
+ // =============================================================================
13
+
14
+ /** Wormhole entity from the Basecamp API. */
15
+ export type Wormhole = components["schemas"]["Wormhole"];
16
+
17
+ /**
18
+ * Request parameters for update.
19
+ */
20
+ export interface UpdateWormholeRequest {
21
+ /** Id of the new destination column (on another accessible card table). */
22
+ destinationRecordingId: number;
23
+ }
24
+
25
+ /**
26
+ * Request parameters for create.
27
+ */
28
+ export interface CreateWormholeRequest {
29
+ /** Id of the destination column (on another accessible card table) to link to. */
30
+ destinationRecordingId: number;
31
+ }
32
+
33
+
34
+ // =============================================================================
35
+ // Service
36
+ // =============================================================================
37
+
38
+ /**
39
+ * Service for Wormholes operations.
40
+ */
41
+ export class WormholesService extends BaseService {
42
+
43
+ /**
44
+ * Update a wormhole's destination column
45
+ * @param bucketId - The bucket ID
46
+ * @param wormholeId - The wormhole ID
47
+ * @param req - Wormhole update parameters
48
+ * @returns The Wormhole
49
+ * @throws {BasecampError} If the resource is not found or fields are invalid
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const result = await client.wormholes.update(123, 123, { destinationRecordingId: 1 });
54
+ * ```
55
+ */
56
+ async update(bucketId: number, wormholeId: number, req: UpdateWormholeRequest): Promise<Wormhole> {
57
+ const response = await this.request(
58
+ {
59
+ service: "Wormholes",
60
+ operation: "UpdateWormhole",
61
+ resourceType: "wormhole",
62
+ isMutation: true,
63
+ projectId: bucketId,
64
+ resourceId: wormholeId,
65
+ },
66
+ () =>
67
+ this.client.PUT("/buckets/{bucketId}/card_tables/wormholes/{wormholeId}", {
68
+ params: {
69
+ path: { bucketId, wormholeId },
70
+ },
71
+ body: {
72
+ destination_recording_id: req.destinationRecordingId,
73
+ },
74
+ })
75
+ );
76
+ return response;
77
+ }
78
+
79
+ /**
80
+ * Delete a wormhole
81
+ * @param bucketId - The bucket ID
82
+ * @param wormholeId - The wormhole ID
83
+ * @returns void
84
+ * @throws {BasecampError} If the request fails
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * await client.wormholes.delete(123, 123);
89
+ * ```
90
+ */
91
+ async delete(bucketId: number, wormholeId: number): Promise<void> {
92
+ await this.request(
93
+ {
94
+ service: "Wormholes",
95
+ operation: "DeleteWormhole",
96
+ resourceType: "wormhole",
97
+ isMutation: true,
98
+ projectId: bucketId,
99
+ resourceId: wormholeId,
100
+ },
101
+ () =>
102
+ this.client.DELETE("/buckets/{bucketId}/card_tables/wormholes/{wormholeId}", {
103
+ params: {
104
+ path: { bucketId, wormholeId },
105
+ },
106
+ })
107
+ );
108
+ }
109
+
110
+ /**
111
+ * Create a wormhole linking this card table to a column on another card table.
112
+ * @param bucketId - The bucket ID
113
+ * @param cardTableId - The card table ID
114
+ * @param req - Wormhole creation parameters
115
+ * @returns The Wormhole
116
+ * @throws {BasecampError} If required fields are missing or invalid
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const result = await client.wormholes.create(123, 123, { destinationRecordingId: 1 });
121
+ * ```
122
+ */
123
+ async create(bucketId: number, cardTableId: number, req: CreateWormholeRequest): Promise<Wormhole> {
124
+ const response = await this.request(
125
+ {
126
+ service: "Wormholes",
127
+ operation: "CreateWormhole",
128
+ resourceType: "wormhole",
129
+ isMutation: true,
130
+ projectId: bucketId,
131
+ resourceId: cardTableId,
132
+ },
133
+ () =>
134
+ this.client.POST("/buckets/{bucketId}/card_tables/{cardTableId}/wormholes.json", {
135
+ params: {
136
+ path: { bucketId, cardTableId },
137
+ },
138
+ body: {
139
+ destination_recording_id: req.destinationRecordingId,
140
+ },
141
+ })
142
+ );
143
+ return response;
144
+ }
145
+ }