@37signals/basecamp 0.4.0 → 0.6.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 (81) hide show
  1. package/dist/client.d.ts +7 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +13 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/download.d.ts +40 -0
  6. package/dist/download.d.ts.map +1 -0
  7. package/dist/download.js +182 -0
  8. package/dist/download.js.map +1 -0
  9. package/dist/generated/metadata.json +12 -1
  10. package/dist/generated/openapi-stripped.json +239 -10
  11. package/dist/generated/path-mapping.d.ts.map +1 -1
  12. package/dist/generated/path-mapping.js +2 -0
  13. package/dist/generated/path-mapping.js.map +1 -1
  14. package/dist/generated/path-mapping.ts +2 -0
  15. package/dist/generated/schema.d.ts +136 -4
  16. package/dist/generated/services/automation.d.ts +25 -0
  17. package/dist/generated/services/automation.d.ts.map +1 -0
  18. package/dist/generated/services/automation.js +33 -0
  19. package/dist/generated/services/automation.js.map +1 -0
  20. package/dist/generated/services/automation.ts +49 -0
  21. package/dist/generated/services/boosts.js +2 -2
  22. package/dist/generated/services/boosts.js.map +1 -1
  23. package/dist/generated/services/boosts.ts +2 -2
  24. package/dist/generated/services/campfires.js +5 -5
  25. package/dist/generated/services/campfires.js.map +1 -1
  26. package/dist/generated/services/campfires.ts +5 -5
  27. package/dist/generated/services/card-steps.d.ts +12 -0
  28. package/dist/generated/services/card-steps.d.ts.map +1 -1
  29. package/dist/generated/services/card-steps.js +25 -0
  30. package/dist/generated/services/card-steps.js.map +1 -1
  31. package/dist/generated/services/card-steps.ts +30 -0
  32. package/dist/generated/services/checkins.js +1 -1
  33. package/dist/generated/services/checkins.js.map +1 -1
  34. package/dist/generated/services/checkins.ts +1 -1
  35. package/dist/generated/services/client-replies.js +1 -1
  36. package/dist/generated/services/client-replies.js.map +1 -1
  37. package/dist/generated/services/client-replies.ts +1 -1
  38. package/dist/generated/services/forwards.js +1 -1
  39. package/dist/generated/services/forwards.js.map +1 -1
  40. package/dist/generated/services/forwards.ts +1 -1
  41. package/dist/generated/services/index.d.ts +1 -0
  42. package/dist/generated/services/index.d.ts.map +1 -1
  43. package/dist/generated/services/index.js +1 -0
  44. package/dist/generated/services/index.js.map +1 -1
  45. package/dist/generated/services/index.ts +1 -0
  46. package/dist/generated/services/messages.d.ts +7 -0
  47. package/dist/generated/services/messages.d.ts.map +1 -1
  48. package/dist/generated/services/messages.js +4 -0
  49. package/dist/generated/services/messages.js.map +1 -1
  50. package/dist/generated/services/messages.ts +8 -0
  51. package/dist/generated/services/search.d.ts +1 -1
  52. package/dist/generated/services/search.ts +1 -1
  53. package/dist/generated/services/templates.js +1 -1
  54. package/dist/generated/services/templates.js.map +1 -1
  55. package/dist/generated/services/templates.ts +1 -1
  56. package/dist/generated/services/tools.d.ts +2 -0
  57. package/dist/generated/services/tools.d.ts.map +1 -1
  58. package/dist/generated/services/tools.js +1 -0
  59. package/dist/generated/services/tools.js.map +1 -1
  60. package/dist/generated/services/tools.ts +3 -0
  61. package/dist/index.d.ts +2 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +4 -0
  64. package/dist/index.js.map +1 -1
  65. package/package.json +1 -1
  66. package/src/generated/metadata.json +12 -1
  67. package/src/generated/openapi-stripped.json +239 -10
  68. package/src/generated/path-mapping.ts +2 -0
  69. package/src/generated/schema.d.ts +136 -4
  70. package/src/generated/services/automation.ts +49 -0
  71. package/src/generated/services/boosts.ts +2 -2
  72. package/src/generated/services/campfires.ts +5 -5
  73. package/src/generated/services/card-steps.ts +30 -0
  74. package/src/generated/services/checkins.ts +1 -1
  75. package/src/generated/services/client-replies.ts +1 -1
  76. package/src/generated/services/forwards.ts +1 -1
  77. package/src/generated/services/index.ts +1 -0
  78. package/src/generated/services/messages.ts +8 -0
  79. package/src/generated/services/search.ts +1 -1
  80. package/src/generated/services/templates.ts +1 -1
  81. package/src/generated/services/tools.ts +3 -0
@@ -232,7 +232,8 @@ export interface paths {
232
232
  path?: never;
233
233
  cookie?: never;
234
234
  };
235
- get?: never;
235
+ /** @description Get a step by ID */
236
+ get: operations["GetCardStep"];
236
237
  /** @description Update an existing step */
237
238
  put: operations["UpdateCardStep"];
238
239
  post?: never;
@@ -811,7 +812,8 @@ export interface paths {
811
812
  path?: never;
812
813
  cookie?: never;
813
814
  };
814
- get?: never;
815
+ /** @description List all lineup markers for the account */
816
+ get: operations["ListLineupMarkers"];
815
817
  put?: never;
816
818
  /** @description Create a new lineup marker */
817
819
  post: operations["CreateLineupMarker"];
@@ -2505,6 +2507,7 @@ export interface components {
2505
2507
  CloneToolRequestContent: {
2506
2508
  /** Format: int64 */
2507
2509
  source_recording_id: number;
2510
+ title?: string;
2508
2511
  };
2509
2512
  CloneToolResponseContent: components["schemas"]["Tool"];
2510
2513
  Comment: {
@@ -2814,6 +2817,7 @@ export interface components {
2814
2817
  GetCampfireResponseContent: components["schemas"]["Campfire"];
2815
2818
  GetCardColumnResponseContent: components["schemas"]["CardColumn"];
2816
2819
  GetCardResponseContent: components["schemas"]["Card"];
2820
+ GetCardStepResponseContent: components["schemas"]["CardStep"];
2817
2821
  GetCardTableResponseContent: components["schemas"]["CardTable"];
2818
2822
  GetChatbotResponseContent: components["schemas"]["Chatbot"];
2819
2823
  GetClientApprovalResponseContent: components["schemas"]["ClientApproval"];
@@ -2894,6 +2898,14 @@ export interface components {
2894
2898
  error: string;
2895
2899
  message?: string;
2896
2900
  };
2901
+ LineupMarker: {
2902
+ /** Format: int64 */
2903
+ id: number;
2904
+ name: string;
2905
+ date: string;
2906
+ created_at: string;
2907
+ updated_at: string;
2908
+ };
2897
2909
  ListAnswersResponseContent: components["schemas"]["QuestionAnswer"][];
2898
2910
  ListAssignablePeopleResponseContent: components["schemas"]["Person"][];
2899
2911
  ListCampfireLinesResponseContent: components["schemas"]["CampfireLine"][];
@@ -2910,6 +2922,7 @@ export interface components {
2910
2922
  ListEventsResponseContent: components["schemas"]["Event"][];
2911
2923
  ListForwardRepliesResponseContent: components["schemas"]["ForwardReply"][];
2912
2924
  ListForwardsResponseContent: components["schemas"]["Forward"][];
2925
+ ListLineupMarkersResponseContent: components["schemas"]["LineupMarker"][];
2913
2926
  ListMessageTypesResponseContent: components["schemas"]["MessageType"][];
2914
2927
  ListMessagesResponseContent: components["schemas"]["Message"][];
2915
2928
  ListPeopleResponseContent: components["schemas"]["Person"][];
@@ -5090,6 +5103,64 @@ export interface operations {
5090
5103
  };
5091
5104
  };
5092
5105
  };
5106
+ GetCardStep: {
5107
+ parameters: {
5108
+ query?: never;
5109
+ header?: never;
5110
+ path: {
5111
+ stepId: number;
5112
+ };
5113
+ cookie?: never;
5114
+ };
5115
+ requestBody?: never;
5116
+ responses: {
5117
+ /** @description GetCardStep 200 response */
5118
+ 200: {
5119
+ headers: {
5120
+ [name: string]: unknown;
5121
+ };
5122
+ content: {
5123
+ "application/json": components["schemas"]["GetCardStepResponseContent"];
5124
+ };
5125
+ };
5126
+ /** @description UnauthorizedError 401 response */
5127
+ 401: {
5128
+ headers: {
5129
+ [name: string]: unknown;
5130
+ };
5131
+ content: {
5132
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
5133
+ };
5134
+ };
5135
+ /** @description ForbiddenError 403 response */
5136
+ 403: {
5137
+ headers: {
5138
+ [name: string]: unknown;
5139
+ };
5140
+ content: {
5141
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
5142
+ };
5143
+ };
5144
+ /** @description NotFoundError 404 response */
5145
+ 404: {
5146
+ headers: {
5147
+ [name: string]: unknown;
5148
+ };
5149
+ content: {
5150
+ "application/json": components["schemas"]["NotFoundErrorResponseContent"];
5151
+ };
5152
+ };
5153
+ /** @description InternalServerError 500 response */
5154
+ 500: {
5155
+ headers: {
5156
+ [name: string]: unknown;
5157
+ };
5158
+ content: {
5159
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
5160
+ };
5161
+ };
5162
+ };
5163
+ };
5093
5164
  UpdateCardStep: {
5094
5165
  parameters: {
5095
5166
  query?: never;
@@ -7823,6 +7894,62 @@ export interface operations {
7823
7894
  };
7824
7895
  };
7825
7896
  };
7897
+ ListLineupMarkers: {
7898
+ parameters: {
7899
+ query?: never;
7900
+ header?: never;
7901
+ path?: never;
7902
+ cookie?: never;
7903
+ };
7904
+ requestBody?: never;
7905
+ responses: {
7906
+ /** @description ListLineupMarkers 200 response */
7907
+ 200: {
7908
+ headers: {
7909
+ [name: string]: unknown;
7910
+ };
7911
+ content: {
7912
+ "application/json": components["schemas"]["ListLineupMarkersResponseContent"];
7913
+ };
7914
+ };
7915
+ /** @description UnauthorizedError 401 response */
7916
+ 401: {
7917
+ headers: {
7918
+ [name: string]: unknown;
7919
+ };
7920
+ content: {
7921
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
7922
+ };
7923
+ };
7924
+ /** @description ForbiddenError 403 response */
7925
+ 403: {
7926
+ headers: {
7927
+ [name: string]: unknown;
7928
+ };
7929
+ content: {
7930
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
7931
+ };
7932
+ };
7933
+ /** @description RateLimitError 429 response */
7934
+ 429: {
7935
+ headers: {
7936
+ [name: string]: unknown;
7937
+ };
7938
+ content: {
7939
+ "application/json": components["schemas"]["RateLimitErrorResponseContent"];
7940
+ };
7941
+ };
7942
+ /** @description InternalServerError 500 response */
7943
+ 500: {
7944
+ headers: {
7945
+ [name: string]: unknown;
7946
+ };
7947
+ content: {
7948
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
7949
+ };
7950
+ };
7951
+ };
7952
+ };
7826
7953
  CreateLineupMarker: {
7827
7954
  parameters: {
7828
7955
  query?: never;
@@ -8075,7 +8202,12 @@ export interface operations {
8075
8202
  };
8076
8203
  ListMessages: {
8077
8204
  parameters: {
8078
- query?: never;
8205
+ query?: {
8206
+ /** @description created_at|updated_at */
8207
+ sort?: string;
8208
+ /** @description asc|desc */
8209
+ direction?: string;
8210
+ };
8079
8211
  header?: never;
8080
8212
  path: {
8081
8213
  boardId: number;
@@ -12450,7 +12582,7 @@ export interface operations {
12450
12582
  parameters: {
12451
12583
  query: {
12452
12584
  q: string;
12453
- /** @description created_at|updated_at */
12585
+ /** @description best_match|created_at */
12454
12586
  sort?: string;
12455
12587
  };
12456
12588
  header?: never;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Automation 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
+ /** LineupMarker entity from the Basecamp API. */
15
+ export type LineupMarker = components["schemas"]["LineupMarker"];
16
+
17
+ // =============================================================================
18
+ // Service
19
+ // =============================================================================
20
+
21
+ /**
22
+ * Service for Automation operations.
23
+ */
24
+ export class AutomationService extends BaseService {
25
+
26
+ /**
27
+ * List all lineup markers for the account
28
+ * @returns Array of LineupMarker
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const result = await client.automation.listLineupMarkers();
33
+ * ```
34
+ */
35
+ async listLineupMarkers(): Promise<LineupMarker[]> {
36
+ const response = await this.request(
37
+ {
38
+ service: "Automation",
39
+ operation: "ListLineupMarkers",
40
+ resourceType: "lineup_marker",
41
+ isMutation: false,
42
+ },
43
+ () =>
44
+ this.client.GET("/lineup/markers.json", {
45
+ })
46
+ );
47
+ return response ?? [];
48
+ }
49
+ }
@@ -198,7 +198,7 @@ export class BoostsService extends BaseService {
198
198
  operation: "ListEventBoosts",
199
199
  resourceType: "event_boost",
200
200
  isMutation: false,
201
- resourceId: recordingId,
201
+ resourceId: eventId,
202
202
  },
203
203
  () =>
204
204
  this.client.GET("/recordings/{recordingId}/events/{eventId}/boosts.json", {
@@ -233,7 +233,7 @@ export class BoostsService extends BaseService {
233
233
  operation: "CreateEventBoost",
234
234
  resourceType: "event_boost",
235
235
  isMutation: true,
236
- resourceId: recordingId,
236
+ resourceId: eventId,
237
237
  },
238
238
  () =>
239
239
  this.client.POST("/recordings/{recordingId}/events/{eventId}/boosts.json", {
@@ -227,7 +227,7 @@ export class CampfiresService extends BaseService {
227
227
  operation: "GetChatbot",
228
228
  resourceType: "chatbot",
229
229
  isMutation: false,
230
- resourceId: campfireId,
230
+ resourceId: chatbotId,
231
231
  },
232
232
  () =>
233
233
  this.client.GET("/chats/{campfireId}/integrations/{chatbotId}", {
@@ -262,7 +262,7 @@ export class CampfiresService extends BaseService {
262
262
  operation: "UpdateChatbot",
263
263
  resourceType: "chatbot",
264
264
  isMutation: true,
265
- resourceId: campfireId,
265
+ resourceId: chatbotId,
266
266
  },
267
267
  () =>
268
268
  this.client.PUT("/chats/{campfireId}/integrations/{chatbotId}", {
@@ -297,7 +297,7 @@ export class CampfiresService extends BaseService {
297
297
  operation: "DeleteChatbot",
298
298
  resourceType: "chatbot",
299
299
  isMutation: true,
300
- resourceId: campfireId,
300
+ resourceId: chatbotId,
301
301
  },
302
302
  () =>
303
303
  this.client.DELETE("/chats/{campfireId}/integrations/{chatbotId}", {
@@ -395,7 +395,7 @@ export class CampfiresService extends BaseService {
395
395
  operation: "GetCampfireLine",
396
396
  resourceType: "campfire_line",
397
397
  isMutation: false,
398
- resourceId: campfireId,
398
+ resourceId: lineId,
399
399
  },
400
400
  () =>
401
401
  this.client.GET("/chats/{campfireId}/lines/{lineId}", {
@@ -426,7 +426,7 @@ export class CampfiresService extends BaseService {
426
426
  operation: "DeleteCampfireLine",
427
427
  resourceType: "campfire_line",
428
428
  isMutation: true,
429
- resourceId: campfireId,
429
+ resourceId: lineId,
430
430
  },
431
431
  () =>
432
432
  this.client.DELETE("/chats/{campfireId}/lines/{lineId}", {
@@ -143,6 +143,36 @@ export class CardStepsService extends BaseService {
143
143
  return response;
144
144
  }
145
145
 
146
+ /**
147
+ * Get a step by ID
148
+ * @param stepId - The step ID
149
+ * @returns The CardStep
150
+ * @throws {BasecampError} If the resource is not found
151
+ *
152
+ * @example
153
+ * ```ts
154
+ * const result = await client.cardSteps.get(123);
155
+ * ```
156
+ */
157
+ async get(stepId: number): Promise<CardStep> {
158
+ const response = await this.request(
159
+ {
160
+ service: "CardSteps",
161
+ operation: "GetCardStep",
162
+ resourceType: "card_step",
163
+ isMutation: false,
164
+ resourceId: stepId,
165
+ },
166
+ () =>
167
+ this.client.GET("/card_tables/steps/{stepId}", {
168
+ params: {
169
+ path: { stepId },
170
+ },
171
+ })
172
+ );
173
+ return response;
174
+ }
175
+
146
176
  /**
147
177
  * Update an existing step
148
178
  * @param stepId - The step ID
@@ -491,7 +491,7 @@ export class CheckinsService extends BaseService {
491
491
  operation: "GetAnswersByPerson",
492
492
  resourceType: "answers_by_person",
493
493
  isMutation: false,
494
- resourceId: questionId,
494
+ resourceId: personId,
495
495
  },
496
496
  () =>
497
497
  this.client.GET("/questions/{questionId}/answers/by/{personId}", {
@@ -81,7 +81,7 @@ export class ClientRepliesService extends BaseService {
81
81
  operation: "GetClientReply",
82
82
  resourceType: "client_reply",
83
83
  isMutation: false,
84
- resourceId: recordingId,
84
+ resourceId: replyId,
85
85
  },
86
86
  () =>
87
87
  this.client.GET("/client/recordings/{recordingId}/replies/{replyId}", {
@@ -167,7 +167,7 @@ export class ForwardsService extends BaseService {
167
167
  operation: "GetForwardReply",
168
168
  resourceType: "forward_reply",
169
169
  isMutation: false,
170
- resourceId: forwardId,
170
+ resourceId: replyId,
171
171
  },
172
172
  () =>
173
173
  this.client.GET("/inbox_forwards/{forwardId}/replies/{replyId}", {
@@ -15,6 +15,7 @@ export { CommentsService } from "./comments.js";
15
15
  export { ToolsService } from "./tools.js";
16
16
  export { DocumentsService } from "./documents.js";
17
17
  export { ForwardsService } from "./forwards.js";
18
+ export { AutomationService } from "./automation.js";
18
19
  export { LineupService } from "./lineup.js";
19
20
  export { MessageBoardsService } from "./message-boards.js";
20
21
  export { MessagesService } from "./messages.js";
@@ -21,6 +21,10 @@ export type Message = components["schemas"]["Message"];
21
21
  * Options for list.
22
22
  */
23
23
  export interface ListMessageOptions extends PaginationOptions {
24
+ /** Filter by sort */
25
+ sort?: "created_at" | "updated_at";
26
+ /** Filter by direction */
27
+ direction?: "asc" | "desc";
24
28
  }
25
29
 
26
30
  /**
@@ -72,6 +76,9 @@ export class MessagesService extends BaseService {
72
76
  * @example
73
77
  * ```ts
74
78
  * const result = await client.messages.list(123);
79
+ *
80
+ * // With options
81
+ * const filtered = await client.messages.list(123, { sort: "created_at" });
75
82
  * ```
76
83
  */
77
84
  async list(boardId: number, options?: ListMessageOptions): Promise<ListResult<Message>> {
@@ -87,6 +94,7 @@ export class MessagesService extends BaseService {
87
94
  this.client.GET("/message_boards/{boardId}/messages.json", {
88
95
  params: {
89
96
  path: { boardId },
97
+ query: { sort: options?.sort, direction: options?.direction },
90
98
  },
91
99
  })
92
100
  , options
@@ -19,7 +19,7 @@ import type { PaginationOptions } from "../../pagination.js";
19
19
  */
20
20
  export interface SearchSearchOptions extends PaginationOptions {
21
21
  /** Filter by sort */
22
- sort?: "created_at" | "updated_at";
22
+ sort?: "best_match" | "created_at";
23
23
  }
24
24
 
25
25
 
@@ -280,7 +280,7 @@ export class TemplatesService extends BaseService {
280
280
  operation: "GetProjectConstruction",
281
281
  resourceType: "project_construction",
282
282
  isMutation: false,
283
- resourceId: templateId,
283
+ resourceId: constructionId,
284
284
  },
285
285
  () =>
286
286
  this.client.GET("/templates/{templateId}/project_constructions/{constructionId}", {
@@ -21,6 +21,8 @@ export type Tool = components["schemas"]["Tool"];
21
21
  export interface CloneToolRequest {
22
22
  /** Source recording id */
23
23
  sourceRecordingId: number;
24
+ /** Title */
25
+ title?: string;
24
26
  }
25
27
 
26
28
  /**
@@ -72,6 +74,7 @@ export class ToolsService extends BaseService {
72
74
  this.client.POST("/dock/tools.json", {
73
75
  body: {
74
76
  source_recording_id: req.sourceRecordingId,
77
+ title: req.title,
75
78
  },
76
79
  })
77
80
  );