@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.
Files changed (356) hide show
  1. package/README.md +600 -0
  2. package/dist/auth-strategy.d.ts +36 -0
  3. package/dist/auth-strategy.d.ts.map +1 -0
  4. package/dist/auth-strategy.js +33 -0
  5. package/dist/auth-strategy.js.map +1 -0
  6. package/dist/client.d.ts +224 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +715 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/errors.d.ts +137 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +269 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/generated/metadata.json +2281 -0
  15. package/dist/generated/openapi-stripped.json +21268 -0
  16. package/dist/generated/path-mapping.d.ts +8 -0
  17. package/dist/generated/path-mapping.d.ts.map +1 -0
  18. package/dist/generated/path-mapping.js +192 -0
  19. package/dist/generated/path-mapping.js.map +1 -0
  20. package/dist/generated/path-mapping.ts +199 -0
  21. package/dist/generated/schema.d.ts +14883 -0
  22. package/dist/generated/services/attachments.d.ts +27 -0
  23. package/dist/generated/services/attachments.d.ts.map +1 -0
  24. package/dist/generated/services/attachments.js +49 -0
  25. package/dist/generated/services/attachments.js.map +1 -0
  26. package/dist/generated/services/attachments.ts +59 -0
  27. package/dist/generated/services/boosts.d.ts +114 -0
  28. package/dist/generated/services/boosts.d.ts.map +1 -0
  29. package/dist/generated/services/boosts.js +179 -0
  30. package/dist/generated/services/boosts.js.map +1 -0
  31. package/dist/generated/services/boosts.ts +250 -0
  32. package/dist/generated/services/campfires.d.ts +202 -0
  33. package/dist/generated/services/campfires.d.ts.map +1 -0
  34. package/dist/generated/services/campfires.js +309 -0
  35. package/dist/generated/services/campfires.js.map +1 -0
  36. package/dist/generated/services/campfires.ts +433 -0
  37. package/dist/generated/services/card-columns.d.ts +163 -0
  38. package/dist/generated/services/card-columns.d.ts.map +1 -0
  39. package/dist/generated/services/card-columns.js +264 -0
  40. package/dist/generated/services/card-columns.js.map +1 -0
  41. package/dist/generated/services/card-columns.ts +360 -0
  42. package/dist/generated/services/card-steps.d.ts +105 -0
  43. package/dist/generated/services/card-steps.d.ts.map +1 -0
  44. package/dist/generated/services/card-steps.js +148 -0
  45. package/dist/generated/services/card-steps.js.map +1 -0
  46. package/dist/generated/services/card-steps.ts +221 -0
  47. package/dist/generated/services/card-tables.d.ts +27 -0
  48. package/dist/generated/services/card-tables.d.ts.map +1 -0
  49. package/dist/generated/services/card-tables.js +40 -0
  50. package/dist/generated/services/card-tables.js.map +1 -0
  51. package/dist/generated/services/card-tables.ts +55 -0
  52. package/dist/generated/services/cards.d.ts +118 -0
  53. package/dist/generated/services/cards.d.ts.map +1 -0
  54. package/dist/generated/services/cards.js +166 -0
  55. package/dist/generated/services/cards.js.map +1 -0
  56. package/dist/generated/services/cards.ts +247 -0
  57. package/dist/generated/services/checkins.d.ts +278 -0
  58. package/dist/generated/services/checkins.d.ts.map +1 -0
  59. package/dist/generated/services/checkins.js +420 -0
  60. package/dist/generated/services/checkins.js.map +1 -0
  61. package/dist/generated/services/checkins.ts +600 -0
  62. package/dist/generated/services/client-approvals.d.ts +45 -0
  63. package/dist/generated/services/client-approvals.d.ts.map +1 -0
  64. package/dist/generated/services/client-approvals.js +58 -0
  65. package/dist/generated/services/client-approvals.js.map +1 -0
  66. package/dist/generated/services/client-approvals.ts +89 -0
  67. package/dist/generated/services/client-correspondences.d.ts +45 -0
  68. package/dist/generated/services/client-correspondences.d.ts.map +1 -0
  69. package/dist/generated/services/client-correspondences.js +58 -0
  70. package/dist/generated/services/client-correspondences.js.map +1 -0
  71. package/dist/generated/services/client-correspondences.ts +89 -0
  72. package/dist/generated/services/client-replies.d.ts +47 -0
  73. package/dist/generated/services/client-replies.d.ts.map +1 -0
  74. package/dist/generated/services/client-replies.js +65 -0
  75. package/dist/generated/services/client-replies.js.map +1 -0
  76. package/dist/generated/services/client-replies.ts +95 -0
  77. package/dist/generated/services/client-visibility.d.ts +35 -0
  78. package/dist/generated/services/client-visibility.d.ts.map +1 -0
  79. package/dist/generated/services/client-visibility.js +44 -0
  80. package/dist/generated/services/client-visibility.js.map +1 -0
  81. package/dist/generated/services/client-visibility.ts +68 -0
  82. package/dist/generated/services/comments.d.ts +86 -0
  83. package/dist/generated/services/comments.d.ts.map +1 -0
  84. package/dist/generated/services/comments.js +129 -0
  85. package/dist/generated/services/comments.js.map +1 -0
  86. package/dist/generated/services/comments.ts +185 -0
  87. package/dist/generated/services/documents.d.ts +92 -0
  88. package/dist/generated/services/documents.d.ts.map +1 -0
  89. package/dist/generated/services/documents.js +129 -0
  90. package/dist/generated/services/documents.js.map +1 -0
  91. package/dist/generated/services/documents.ts +191 -0
  92. package/dist/generated/services/events.d.ts +34 -0
  93. package/dist/generated/services/events.d.ts.map +1 -0
  94. package/dist/generated/services/events.js +39 -0
  95. package/dist/generated/services/events.js.map +1 -0
  96. package/dist/generated/services/events.ts +64 -0
  97. package/dist/generated/services/forwards.d.ts +112 -0
  98. package/dist/generated/services/forwards.d.ts.map +1 -0
  99. package/dist/generated/services/forwards.js +172 -0
  100. package/dist/generated/services/forwards.js.map +1 -0
  101. package/dist/generated/services/forwards.ts +241 -0
  102. package/dist/generated/services/index.d.ts +39 -0
  103. package/dist/generated/services/index.d.ts.map +1 -0
  104. package/dist/generated/services/index.js +39 -0
  105. package/dist/generated/services/index.js.map +1 -0
  106. package/dist/generated/services/index.ts +38 -0
  107. package/dist/generated/services/lineup.d.ts +67 -0
  108. package/dist/generated/services/lineup.d.ts.map +1 -0
  109. package/dist/generated/services/lineup.js +99 -0
  110. package/dist/generated/services/lineup.js.map +1 -0
  111. package/dist/generated/services/lineup.ts +143 -0
  112. package/dist/generated/services/message-boards.d.ts +27 -0
  113. package/dist/generated/services/message-boards.d.ts.map +1 -0
  114. package/dist/generated/services/message-boards.js +40 -0
  115. package/dist/generated/services/message-boards.js.map +1 -0
  116. package/dist/generated/services/message-boards.ts +55 -0
  117. package/dist/generated/services/message-types.d.ts +100 -0
  118. package/dist/generated/services/message-types.d.ts.map +1 -0
  119. package/dist/generated/services/message-types.js +144 -0
  120. package/dist/generated/services/message-types.js.map +1 -0
  121. package/dist/generated/services/message-types.ts +210 -0
  122. package/dist/generated/services/messages.d.ts +122 -0
  123. package/dist/generated/services/messages.d.ts.map +1 -0
  124. package/dist/generated/services/messages.js +180 -0
  125. package/dist/generated/services/messages.js.map +1 -0
  126. package/dist/generated/services/messages.ts +258 -0
  127. package/dist/generated/services/people.d.ts +122 -0
  128. package/dist/generated/services/people.d.ts.map +1 -0
  129. package/dist/generated/services/people.js +167 -0
  130. package/dist/generated/services/people.js.map +1 -0
  131. package/dist/generated/services/people.ts +252 -0
  132. package/dist/generated/services/projects.d.ts +109 -0
  133. package/dist/generated/services/projects.d.ts.map +1 -0
  134. package/dist/generated/services/projects.js +153 -0
  135. package/dist/generated/services/projects.js.map +1 -0
  136. package/dist/generated/services/projects.ts +224 -0
  137. package/dist/generated/services/recordings.d.ts +93 -0
  138. package/dist/generated/services/recordings.d.ts.map +1 -0
  139. package/dist/generated/services/recordings.js +138 -0
  140. package/dist/generated/services/recordings.js.map +1 -0
  141. package/dist/generated/services/recordings.ts +191 -0
  142. package/dist/generated/services/reports.d.ts +90 -0
  143. package/dist/generated/services/reports.d.ts.map +1 -0
  144. package/dist/generated/services/reports.js +124 -0
  145. package/dist/generated/services/reports.js.map +1 -0
  146. package/dist/generated/services/reports.ts +187 -0
  147. package/dist/generated/services/schedules.d.ts +162 -0
  148. package/dist/generated/services/schedules.d.ts.map +1 -0
  149. package/dist/generated/services/schedules.js +228 -0
  150. package/dist/generated/services/schedules.js.map +1 -0
  151. package/dist/generated/services/schedules.ts +335 -0
  152. package/dist/generated/services/search.d.ts +45 -0
  153. package/dist/generated/services/search.d.ts.map +1 -0
  154. package/dist/generated/services/search.js +56 -0
  155. package/dist/generated/services/search.js.map +1 -0
  156. package/dist/generated/services/search.ts +89 -0
  157. package/dist/generated/services/subscriptions.d.ts +73 -0
  158. package/dist/generated/services/subscriptions.d.ts.map +1 -0
  159. package/dist/generated/services/subscriptions.js +119 -0
  160. package/dist/generated/services/subscriptions.js.map +1 -0
  161. package/dist/generated/services/subscriptions.ts +160 -0
  162. package/dist/generated/services/templates.d.ts +140 -0
  163. package/dist/generated/services/templates.d.ts.map +1 -0
  164. package/dist/generated/services/templates.js +207 -0
  165. package/dist/generated/services/templates.js.map +1 -0
  166. package/dist/generated/services/templates.ts +294 -0
  167. package/dist/generated/services/timeline.d.ts +31 -0
  168. package/dist/generated/services/timeline.d.ts.map +1 -0
  169. package/dist/generated/services/timeline.js +39 -0
  170. package/dist/generated/services/timeline.js.map +1 -0
  171. package/dist/generated/services/timeline.ts +62 -0
  172. package/dist/generated/services/timesheets.d.ts +145 -0
  173. package/dist/generated/services/timesheets.d.ts.map +1 -0
  174. package/dist/generated/services/timesheets.js +186 -0
  175. package/dist/generated/services/timesheets.js.map +1 -0
  176. package/dist/generated/services/timesheets.ts +289 -0
  177. package/dist/generated/services/todolist-groups.d.ts +74 -0
  178. package/dist/generated/services/todolist-groups.d.ts.map +1 -0
  179. package/dist/generated/services/todolist-groups.js +100 -0
  180. package/dist/generated/services/todolist-groups.js.map +1 -0
  181. package/dist/generated/services/todolist-groups.ts +151 -0
  182. package/dist/generated/services/todolists.d.ts +95 -0
  183. package/dist/generated/services/todolists.d.ts.map +1 -0
  184. package/dist/generated/services/todolists.js +130 -0
  185. package/dist/generated/services/todolists.js.map +1 -0
  186. package/dist/generated/services/todolists.ts +192 -0
  187. package/dist/generated/services/todos.d.ts +175 -0
  188. package/dist/generated/services/todos.d.ts.map +1 -0
  189. package/dist/generated/services/todos.js +255 -0
  190. package/dist/generated/services/todos.js.map +1 -0
  191. package/dist/generated/services/todos.ts +369 -0
  192. package/dist/generated/services/todosets.d.ts +27 -0
  193. package/dist/generated/services/todosets.d.ts.map +1 -0
  194. package/dist/generated/services/todosets.js +40 -0
  195. package/dist/generated/services/todosets.js.map +1 -0
  196. package/dist/generated/services/todosets.ts +55 -0
  197. package/dist/generated/services/tools.d.ts +122 -0
  198. package/dist/generated/services/tools.d.ts.map +1 -0
  199. package/dist/generated/services/tools.js +197 -0
  200. package/dist/generated/services/tools.js.map +1 -0
  201. package/dist/generated/services/tools.ts +267 -0
  202. package/dist/generated/services/uploads.d.ts +109 -0
  203. package/dist/generated/services/uploads.d.ts.map +1 -0
  204. package/dist/generated/services/uploads.js +153 -0
  205. package/dist/generated/services/uploads.js.map +1 -0
  206. package/dist/generated/services/uploads.ts +227 -0
  207. package/dist/generated/services/vaults.d.ts +86 -0
  208. package/dist/generated/services/vaults.d.ts.map +1 -0
  209. package/dist/generated/services/vaults.js +126 -0
  210. package/dist/generated/services/vaults.js.map +1 -0
  211. package/dist/generated/services/vaults.ts +182 -0
  212. package/dist/generated/services/webhooks.d.ts +106 -0
  213. package/dist/generated/services/webhooks.d.ts.map +1 -0
  214. package/dist/generated/services/webhooks.js +157 -0
  215. package/dist/generated/services/webhooks.js.map +1 -0
  216. package/dist/generated/services/webhooks.ts +226 -0
  217. package/dist/hooks/otel.d.ts +136 -0
  218. package/dist/hooks/otel.d.ts.map +1 -0
  219. package/dist/hooks/otel.js +240 -0
  220. package/dist/hooks/otel.js.map +1 -0
  221. package/dist/hooks.d.ts +171 -0
  222. package/dist/hooks.d.ts.map +1 -0
  223. package/dist/hooks.js +196 -0
  224. package/dist/hooks.js.map +1 -0
  225. package/dist/index.d.ts +90 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +122 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/oauth/authorize.d.ts +48 -0
  230. package/dist/oauth/authorize.d.ts.map +1 -0
  231. package/dist/oauth/authorize.js +56 -0
  232. package/dist/oauth/authorize.js.map +1 -0
  233. package/dist/oauth/callback-server.d.ts +56 -0
  234. package/dist/oauth/callback-server.d.ts.map +1 -0
  235. package/dist/oauth/callback-server.js +150 -0
  236. package/dist/oauth/callback-server.js.map +1 -0
  237. package/dist/oauth/discovery.d.ts +54 -0
  238. package/dist/oauth/discovery.d.ts.map +1 -0
  239. package/dist/oauth/discovery.js +116 -0
  240. package/dist/oauth/discovery.js.map +1 -0
  241. package/dist/oauth/exchange.d.ts +96 -0
  242. package/dist/oauth/exchange.d.ts.map +1 -0
  243. package/dist/oauth/exchange.js +324 -0
  244. package/dist/oauth/exchange.js.map +1 -0
  245. package/dist/oauth/identity.d.ts +30 -0
  246. package/dist/oauth/identity.d.ts.map +1 -0
  247. package/dist/oauth/identity.js +82 -0
  248. package/dist/oauth/identity.js.map +1 -0
  249. package/dist/oauth/index.d.ts +50 -0
  250. package/dist/oauth/index.d.ts.map +1 -0
  251. package/dist/oauth/index.js +58 -0
  252. package/dist/oauth/index.js.map +1 -0
  253. package/dist/oauth/interactive-login.d.ts +62 -0
  254. package/dist/oauth/interactive-login.d.ts.map +1 -0
  255. package/dist/oauth/interactive-login.js +106 -0
  256. package/dist/oauth/interactive-login.js.map +1 -0
  257. package/dist/oauth/pkce.d.ts +68 -0
  258. package/dist/oauth/pkce.d.ts.map +1 -0
  259. package/dist/oauth/pkce.js +80 -0
  260. package/dist/oauth/pkce.js.map +1 -0
  261. package/dist/oauth/token-manager.d.ts +92 -0
  262. package/dist/oauth/token-manager.d.ts.map +1 -0
  263. package/dist/oauth/token-manager.js +126 -0
  264. package/dist/oauth/token-manager.js.map +1 -0
  265. package/dist/oauth/token-store.d.ts +45 -0
  266. package/dist/oauth/token-store.d.ts.map +1 -0
  267. package/dist/oauth/token-store.js +105 -0
  268. package/dist/oauth/token-store.js.map +1 -0
  269. package/dist/oauth/types.d.ts +98 -0
  270. package/dist/oauth/types.d.ts.map +1 -0
  271. package/dist/oauth/types.js +8 -0
  272. package/dist/oauth/types.js.map +1 -0
  273. package/dist/pagination-utils.d.ts +27 -0
  274. package/dist/pagination-utils.d.ts.map +1 -0
  275. package/dist/pagination-utils.js +54 -0
  276. package/dist/pagination-utils.js.map +1 -0
  277. package/dist/pagination.d.ts +56 -0
  278. package/dist/pagination.d.ts.map +1 -0
  279. package/dist/pagination.js +57 -0
  280. package/dist/pagination.js.map +1 -0
  281. package/dist/security.d.ts +68 -0
  282. package/dist/security.d.ts.map +1 -0
  283. package/dist/security.js +107 -0
  284. package/dist/security.js.map +1 -0
  285. package/dist/services/authorization.d.ts +124 -0
  286. package/dist/services/authorization.d.ts.map +1 -0
  287. package/dist/services/authorization.js +117 -0
  288. package/dist/services/authorization.js.map +1 -0
  289. package/dist/services/base.d.ts +102 -0
  290. package/dist/services/base.d.ts.map +1 -0
  291. package/dist/services/base.js +230 -0
  292. package/dist/services/base.js.map +1 -0
  293. package/dist/webhooks/adapters/node-http.d.ts +14 -0
  294. package/dist/webhooks/adapters/node-http.d.ts.map +1 -0
  295. package/dist/webhooks/adapters/node-http.js +60 -0
  296. package/dist/webhooks/adapters/node-http.js.map +1 -0
  297. package/dist/webhooks/events.d.ts +52 -0
  298. package/dist/webhooks/events.d.ts.map +1 -0
  299. package/dist/webhooks/events.js +52 -0
  300. package/dist/webhooks/events.js.map +1 -0
  301. package/dist/webhooks/handler.d.ts +62 -0
  302. package/dist/webhooks/handler.d.ts.map +1 -0
  303. package/dist/webhooks/handler.js +226 -0
  304. package/dist/webhooks/handler.js.map +1 -0
  305. package/dist/webhooks/index.d.ts +5 -0
  306. package/dist/webhooks/index.d.ts.map +1 -0
  307. package/dist/webhooks/index.js +5 -0
  308. package/dist/webhooks/index.js.map +1 -0
  309. package/dist/webhooks/verify.d.ts +11 -0
  310. package/dist/webhooks/verify.d.ts.map +1 -0
  311. package/dist/webhooks/verify.js +25 -0
  312. package/dist/webhooks/verify.js.map +1 -0
  313. package/package.json +70 -0
  314. package/src/generated/metadata.json +2281 -0
  315. package/src/generated/openapi-stripped.json +21268 -0
  316. package/src/generated/path-mapping.ts +199 -0
  317. package/src/generated/schema.d.ts +14883 -0
  318. package/src/generated/services/attachments.ts +59 -0
  319. package/src/generated/services/boosts.ts +250 -0
  320. package/src/generated/services/campfires.ts +433 -0
  321. package/src/generated/services/card-columns.ts +360 -0
  322. package/src/generated/services/card-steps.ts +221 -0
  323. package/src/generated/services/card-tables.ts +55 -0
  324. package/src/generated/services/cards.ts +247 -0
  325. package/src/generated/services/checkins.ts +600 -0
  326. package/src/generated/services/client-approvals.ts +89 -0
  327. package/src/generated/services/client-correspondences.ts +89 -0
  328. package/src/generated/services/client-replies.ts +95 -0
  329. package/src/generated/services/client-visibility.ts +68 -0
  330. package/src/generated/services/comments.ts +185 -0
  331. package/src/generated/services/documents.ts +191 -0
  332. package/src/generated/services/events.ts +64 -0
  333. package/src/generated/services/forwards.ts +241 -0
  334. package/src/generated/services/index.ts +38 -0
  335. package/src/generated/services/lineup.ts +143 -0
  336. package/src/generated/services/message-boards.ts +55 -0
  337. package/src/generated/services/message-types.ts +210 -0
  338. package/src/generated/services/messages.ts +258 -0
  339. package/src/generated/services/people.ts +252 -0
  340. package/src/generated/services/projects.ts +224 -0
  341. package/src/generated/services/recordings.ts +191 -0
  342. package/src/generated/services/reports.ts +187 -0
  343. package/src/generated/services/schedules.ts +335 -0
  344. package/src/generated/services/search.ts +89 -0
  345. package/src/generated/services/subscriptions.ts +160 -0
  346. package/src/generated/services/templates.ts +294 -0
  347. package/src/generated/services/timeline.ts +62 -0
  348. package/src/generated/services/timesheets.ts +289 -0
  349. package/src/generated/services/todolist-groups.ts +151 -0
  350. package/src/generated/services/todolists.ts +192 -0
  351. package/src/generated/services/todos.ts +369 -0
  352. package/src/generated/services/todosets.ts +55 -0
  353. package/src/generated/services/tools.ts +267 -0
  354. package/src/generated/services/uploads.ts +227 -0
  355. package/src/generated/services/vaults.ts +182 -0
  356. package/src/generated/services/webhooks.ts +226 -0
@@ -0,0 +1,433 @@
1
+ /**
2
+ * Campfires service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+
7
+ import { BaseService } from "../../services/base.js";
8
+ import type { components } from "../schema.js";
9
+ import { ListResult } from "../../pagination.js";
10
+ import type { PaginationOptions } from "../../pagination.js";
11
+ import { Errors } from "../../errors.js";
12
+
13
+ // =============================================================================
14
+ // Types
15
+ // =============================================================================
16
+
17
+ /** Campfire entity from the Basecamp API. */
18
+ export type Campfire = components["schemas"]["Campfire"];
19
+ /** Chatbot entity from the Basecamp API. */
20
+ export type Chatbot = components["schemas"]["Chatbot"];
21
+ /** CampfireLine entity from the Basecamp API. */
22
+ export type CampfireLine = components["schemas"]["CampfireLine"];
23
+
24
+ /**
25
+ * Options for list.
26
+ */
27
+ export interface ListCampfireOptions extends PaginationOptions {
28
+ }
29
+
30
+ /**
31
+ * Options for listChatbots.
32
+ */
33
+ export interface ListChatbotsCampfireOptions extends PaginationOptions {
34
+ }
35
+
36
+ /**
37
+ * Request parameters for createChatbot.
38
+ */
39
+ export interface CreateChatbotCampfireRequest {
40
+ /** Service name */
41
+ serviceName: string;
42
+ /** Command url */
43
+ commandUrl?: string;
44
+ }
45
+
46
+ /**
47
+ * Request parameters for updateChatbot.
48
+ */
49
+ export interface UpdateChatbotCampfireRequest {
50
+ /** Service name */
51
+ serviceName: string;
52
+ /** Command url */
53
+ commandUrl?: string;
54
+ }
55
+
56
+ /**
57
+ * Options for listLines.
58
+ */
59
+ export interface ListLinesCampfireOptions extends PaginationOptions {
60
+ }
61
+
62
+ /**
63
+ * Request parameters for createLine.
64
+ */
65
+ export interface CreateLineCampfireRequest {
66
+ /** Text content */
67
+ content: string;
68
+ /** Content type */
69
+ contentType?: string;
70
+ }
71
+
72
+
73
+ // =============================================================================
74
+ // Service
75
+ // =============================================================================
76
+
77
+ /**
78
+ * Service for Campfires operations.
79
+ */
80
+ export class CampfiresService extends BaseService {
81
+
82
+ /**
83
+ * List all campfires across the account
84
+ * @param options - Optional query parameters
85
+ * @returns All Campfire across all pages, with .meta.totalCount
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const result = await client.campfires.list();
90
+ * ```
91
+ */
92
+ async list(options?: ListCampfireOptions): Promise<ListResult<Campfire>> {
93
+ return this.requestPaginated(
94
+ {
95
+ service: "Campfires",
96
+ operation: "ListCampfires",
97
+ resourceType: "campfire",
98
+ isMutation: false,
99
+ },
100
+ () =>
101
+ this.client.GET("/chats.json", {
102
+ })
103
+ , options
104
+ );
105
+ }
106
+
107
+ /**
108
+ * Get a campfire by ID
109
+ * @param campfireId - The campfire ID
110
+ * @returns The Campfire
111
+ * @throws {BasecampError} If the resource is not found
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * const result = await client.campfires.get(123);
116
+ * ```
117
+ */
118
+ async get(campfireId: number): Promise<Campfire> {
119
+ const response = await this.request(
120
+ {
121
+ service: "Campfires",
122
+ operation: "GetCampfire",
123
+ resourceType: "campfire",
124
+ isMutation: false,
125
+ resourceId: campfireId,
126
+ },
127
+ () =>
128
+ this.client.GET("/chats/{campfireId}", {
129
+ params: {
130
+ path: { campfireId },
131
+ },
132
+ })
133
+ );
134
+ return response;
135
+ }
136
+
137
+ /**
138
+ * List all chatbots for a campfire
139
+ * @param campfireId - The campfire ID
140
+ * @param options - Optional query parameters
141
+ * @returns All Chatbot across all pages, with .meta.totalCount
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * const result = await client.campfires.listChatbots(123);
146
+ * ```
147
+ */
148
+ async listChatbots(campfireId: number, options?: ListChatbotsCampfireOptions): Promise<ListResult<Chatbot>> {
149
+ return this.requestPaginated(
150
+ {
151
+ service: "Campfires",
152
+ operation: "ListChatbots",
153
+ resourceType: "chatbot",
154
+ isMutation: false,
155
+ resourceId: campfireId,
156
+ },
157
+ () =>
158
+ this.client.GET("/chats/{campfireId}/integrations.json", {
159
+ params: {
160
+ path: { campfireId },
161
+ },
162
+ })
163
+ , options
164
+ );
165
+ }
166
+
167
+ /**
168
+ * Create a new chatbot for a campfire
169
+ * @param campfireId - The campfire ID
170
+ * @param req - Chatbot creation parameters
171
+ * @returns The Chatbot
172
+ * @throws {BasecampError} If required fields are missing or invalid
173
+ *
174
+ * @example
175
+ * ```ts
176
+ * const result = await client.campfires.createChatbot(123, { serviceName: "example" });
177
+ * ```
178
+ */
179
+ async createChatbot(campfireId: number, req: CreateChatbotCampfireRequest): Promise<Chatbot> {
180
+ if (!req.serviceName) {
181
+ throw Errors.validation("Service name is required");
182
+ }
183
+ const response = await this.request(
184
+ {
185
+ service: "Campfires",
186
+ operation: "CreateChatbot",
187
+ resourceType: "chatbot",
188
+ isMutation: true,
189
+ resourceId: campfireId,
190
+ },
191
+ () =>
192
+ this.client.POST("/chats/{campfireId}/integrations.json", {
193
+ params: {
194
+ path: { campfireId },
195
+ },
196
+ body: {
197
+ service_name: req.serviceName,
198
+ command_url: req.commandUrl,
199
+ },
200
+ })
201
+ );
202
+ return response;
203
+ }
204
+
205
+ /**
206
+ * Get a chatbot by ID
207
+ * @param campfireId - The campfire ID
208
+ * @param chatbotId - The chatbot ID
209
+ * @returns The Chatbot
210
+ * @throws {BasecampError} If the resource is not found
211
+ *
212
+ * @example
213
+ * ```ts
214
+ * const result = await client.campfires.getChatbot(123, 123);
215
+ * ```
216
+ */
217
+ async getChatbot(campfireId: number, chatbotId: number): Promise<Chatbot> {
218
+ const response = await this.request(
219
+ {
220
+ service: "Campfires",
221
+ operation: "GetChatbot",
222
+ resourceType: "chatbot",
223
+ isMutation: false,
224
+ resourceId: campfireId,
225
+ },
226
+ () =>
227
+ this.client.GET("/chats/{campfireId}/integrations/{chatbotId}", {
228
+ params: {
229
+ path: { campfireId, chatbotId },
230
+ },
231
+ })
232
+ );
233
+ return response;
234
+ }
235
+
236
+ /**
237
+ * Update an existing chatbot
238
+ * @param campfireId - The campfire ID
239
+ * @param chatbotId - The chatbot ID
240
+ * @param req - Chatbot update parameters
241
+ * @returns The Chatbot
242
+ * @throws {BasecampError} If the resource is not found or fields are invalid
243
+ *
244
+ * @example
245
+ * ```ts
246
+ * const result = await client.campfires.updateChatbot(123, 123, { serviceName: "example" });
247
+ * ```
248
+ */
249
+ async updateChatbot(campfireId: number, chatbotId: number, req: UpdateChatbotCampfireRequest): Promise<Chatbot> {
250
+ if (!req.serviceName) {
251
+ throw Errors.validation("Service name is required");
252
+ }
253
+ const response = await this.request(
254
+ {
255
+ service: "Campfires",
256
+ operation: "UpdateChatbot",
257
+ resourceType: "chatbot",
258
+ isMutation: true,
259
+ resourceId: campfireId,
260
+ },
261
+ () =>
262
+ this.client.PUT("/chats/{campfireId}/integrations/{chatbotId}", {
263
+ params: {
264
+ path: { campfireId, chatbotId },
265
+ },
266
+ body: {
267
+ service_name: req.serviceName,
268
+ command_url: req.commandUrl,
269
+ },
270
+ })
271
+ );
272
+ return response;
273
+ }
274
+
275
+ /**
276
+ * Delete a chatbot
277
+ * @param campfireId - The campfire ID
278
+ * @param chatbotId - The chatbot ID
279
+ * @returns void
280
+ * @throws {BasecampError} If the request fails
281
+ *
282
+ * @example
283
+ * ```ts
284
+ * await client.campfires.deleteChatbot(123, 123);
285
+ * ```
286
+ */
287
+ async deleteChatbot(campfireId: number, chatbotId: number): Promise<void> {
288
+ await this.request(
289
+ {
290
+ service: "Campfires",
291
+ operation: "DeleteChatbot",
292
+ resourceType: "chatbot",
293
+ isMutation: true,
294
+ resourceId: campfireId,
295
+ },
296
+ () =>
297
+ this.client.DELETE("/chats/{campfireId}/integrations/{chatbotId}", {
298
+ params: {
299
+ path: { campfireId, chatbotId },
300
+ },
301
+ })
302
+ );
303
+ }
304
+
305
+ /**
306
+ * List all lines (messages) in a campfire
307
+ * @param campfireId - The campfire ID
308
+ * @param options - Optional query parameters
309
+ * @returns All CampfireLine across all pages, with .meta.totalCount
310
+ *
311
+ * @example
312
+ * ```ts
313
+ * const result = await client.campfires.listLines(123);
314
+ * ```
315
+ */
316
+ async listLines(campfireId: number, options?: ListLinesCampfireOptions): Promise<ListResult<CampfireLine>> {
317
+ return this.requestPaginated(
318
+ {
319
+ service: "Campfires",
320
+ operation: "ListCampfireLines",
321
+ resourceType: "campfire_line",
322
+ isMutation: false,
323
+ resourceId: campfireId,
324
+ },
325
+ () =>
326
+ this.client.GET("/chats/{campfireId}/lines.json", {
327
+ params: {
328
+ path: { campfireId },
329
+ },
330
+ })
331
+ , options
332
+ );
333
+ }
334
+
335
+ /**
336
+ * Create a new line (message) in a campfire
337
+ * @param campfireId - The campfire ID
338
+ * @param req - Campfire_line creation parameters
339
+ * @returns The CampfireLine
340
+ * @throws {BasecampError} If required fields are missing or invalid
341
+ *
342
+ * @example
343
+ * ```ts
344
+ * const result = await client.campfires.createLine(123, { content: "Hello world" });
345
+ * ```
346
+ */
347
+ async createLine(campfireId: number, req: CreateLineCampfireRequest): Promise<CampfireLine> {
348
+ if (!req.content) {
349
+ throw Errors.validation("Content is required");
350
+ }
351
+ const response = await this.request(
352
+ {
353
+ service: "Campfires",
354
+ operation: "CreateCampfireLine",
355
+ resourceType: "campfire_line",
356
+ isMutation: true,
357
+ resourceId: campfireId,
358
+ },
359
+ () =>
360
+ this.client.POST("/chats/{campfireId}/lines.json", {
361
+ params: {
362
+ path: { campfireId },
363
+ },
364
+ body: {
365
+ content: req.content,
366
+ content_type: req.contentType,
367
+ },
368
+ })
369
+ );
370
+ return response;
371
+ }
372
+
373
+ /**
374
+ * Get a campfire line by ID
375
+ * @param campfireId - The campfire ID
376
+ * @param lineId - The line ID
377
+ * @returns The CampfireLine
378
+ * @throws {BasecampError} If the resource is not found
379
+ *
380
+ * @example
381
+ * ```ts
382
+ * const result = await client.campfires.getLine(123, 123);
383
+ * ```
384
+ */
385
+ async getLine(campfireId: number, lineId: number): Promise<CampfireLine> {
386
+ const response = await this.request(
387
+ {
388
+ service: "Campfires",
389
+ operation: "GetCampfireLine",
390
+ resourceType: "campfire_line",
391
+ isMutation: false,
392
+ resourceId: campfireId,
393
+ },
394
+ () =>
395
+ this.client.GET("/chats/{campfireId}/lines/{lineId}", {
396
+ params: {
397
+ path: { campfireId, lineId },
398
+ },
399
+ })
400
+ );
401
+ return response;
402
+ }
403
+
404
+ /**
405
+ * Delete a campfire line
406
+ * @param campfireId - The campfire ID
407
+ * @param lineId - The line ID
408
+ * @returns void
409
+ * @throws {BasecampError} If the request fails
410
+ *
411
+ * @example
412
+ * ```ts
413
+ * await client.campfires.deleteLine(123, 123);
414
+ * ```
415
+ */
416
+ async deleteLine(campfireId: number, lineId: number): Promise<void> {
417
+ await this.request(
418
+ {
419
+ service: "Campfires",
420
+ operation: "DeleteCampfireLine",
421
+ resourceType: "campfire_line",
422
+ isMutation: true,
423
+ resourceId: campfireId,
424
+ },
425
+ () =>
426
+ this.client.DELETE("/chats/{campfireId}/lines/{lineId}", {
427
+ params: {
428
+ path: { campfireId, lineId },
429
+ },
430
+ })
431
+ );
432
+ }
433
+ }