featurebase-node 0.13.0 → 0.14.1

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 (515) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/api-promise.d.mts +1 -0
  3. package/api-promise.d.mts.map +1 -1
  4. package/api-promise.d.ts +1 -0
  5. package/api-promise.d.ts.map +1 -1
  6. package/api-promise.mjs +1 -0
  7. package/api-promise.mjs.map +1 -1
  8. package/client.d.mts +21 -3
  9. package/client.d.mts.map +1 -1
  10. package/client.d.ts +21 -3
  11. package/client.d.ts.map +1 -1
  12. package/client.js +27 -1
  13. package/client.js.map +1 -1
  14. package/client.mjs +27 -1
  15. package/client.mjs.map +1 -1
  16. package/core/api-promise.d.mts.map +1 -1
  17. package/core/api-promise.d.ts.map +1 -1
  18. package/core/api-promise.mjs.map +1 -1
  19. package/core/error.mjs.map +1 -1
  20. package/core/pagination.d.mts.map +1 -1
  21. package/core/pagination.d.ts.map +1 -1
  22. package/core/pagination.mjs.map +1 -1
  23. package/core/resource.d.mts.map +1 -1
  24. package/core/resource.d.ts.map +1 -1
  25. package/core/uploads.d.mts.map +1 -1
  26. package/core/uploads.d.ts.map +1 -1
  27. package/core/uploads.mjs.map +1 -1
  28. package/error.d.mts +1 -0
  29. package/error.d.mts.map +1 -1
  30. package/error.d.ts +1 -0
  31. package/error.d.ts.map +1 -1
  32. package/error.mjs +1 -0
  33. package/error.mjs.map +1 -1
  34. package/index.d.mts.map +1 -1
  35. package/index.d.ts.map +1 -1
  36. package/index.mjs.map +1 -1
  37. package/internal/detect-platform.mjs.map +1 -1
  38. package/internal/headers.mjs.map +1 -1
  39. package/internal/parse.d.mts.map +1 -1
  40. package/internal/parse.d.ts.map +1 -1
  41. package/internal/parse.mjs.map +1 -1
  42. package/internal/qs/formats.d.mts.map +1 -1
  43. package/internal/qs/formats.d.ts.map +1 -1
  44. package/internal/qs/index.d.mts +2 -2
  45. package/internal/qs/index.d.mts.map +1 -1
  46. package/internal/qs/index.d.ts +2 -2
  47. package/internal/qs/index.d.ts.map +1 -1
  48. package/internal/qs/index.mjs.map +1 -1
  49. package/internal/qs/stringify.d.mts.map +1 -1
  50. package/internal/qs/stringify.d.ts.map +1 -1
  51. package/internal/qs/stringify.mjs.map +1 -1
  52. package/internal/qs/utils.d.mts.map +1 -1
  53. package/internal/qs/utils.d.ts.map +1 -1
  54. package/internal/qs/utils.mjs.map +1 -1
  55. package/internal/request-options.d.mts.map +1 -1
  56. package/internal/request-options.d.ts.map +1 -1
  57. package/internal/shims.d.mts +6 -0
  58. package/internal/shims.d.mts.map +1 -1
  59. package/internal/shims.d.ts +6 -0
  60. package/internal/shims.d.ts.map +1 -1
  61. package/internal/to-file.d.mts.map +1 -1
  62. package/internal/to-file.d.ts.map +1 -1
  63. package/internal/to-file.mjs.map +1 -1
  64. package/internal/types.d.mts +4 -4
  65. package/internal/types.d.mts.map +1 -1
  66. package/internal/types.d.ts +4 -4
  67. package/internal/types.d.ts.map +1 -1
  68. package/internal/uploads.d.mts.map +1 -1
  69. package/internal/uploads.d.ts.map +1 -1
  70. package/internal/uploads.mjs.map +1 -1
  71. package/internal/utils/base64.mjs.map +1 -1
  72. package/internal/utils/log.d.mts.map +1 -1
  73. package/internal/utils/log.d.ts.map +1 -1
  74. package/internal/utils/log.mjs.map +1 -1
  75. package/internal/utils/path.mjs.map +1 -1
  76. package/internal/utils/query.mjs.map +1 -1
  77. package/internal/utils/values.mjs.map +1 -1
  78. package/internal/utils.d.mts.map +1 -1
  79. package/internal/utils.d.ts.map +1 -1
  80. package/internal/utils.mjs.map +1 -1
  81. package/package.json +16 -10
  82. package/pagination.d.mts +1 -0
  83. package/pagination.d.mts.map +1 -1
  84. package/pagination.d.ts +1 -0
  85. package/pagination.d.ts.map +1 -1
  86. package/pagination.mjs +1 -0
  87. package/pagination.mjs.map +1 -1
  88. package/resource.d.mts +1 -0
  89. package/resource.d.mts.map +1 -1
  90. package/resource.d.ts +1 -0
  91. package/resource.d.ts.map +1 -1
  92. package/resource.mjs +1 -0
  93. package/resource.mjs.map +1 -1
  94. package/resources/audit-logs.d.mts +233 -0
  95. package/resources/audit-logs.d.mts.map +1 -0
  96. package/resources/audit-logs.d.ts +233 -0
  97. package/resources/audit-logs.d.ts.map +1 -0
  98. package/resources/audit-logs.js +122 -0
  99. package/resources/audit-logs.js.map +1 -0
  100. package/resources/audit-logs.mjs +118 -0
  101. package/resources/audit-logs.mjs.map +1 -0
  102. package/resources/changelogs/changelogs.d.mts +106 -106
  103. package/resources/changelogs/changelogs.d.mts.map +1 -1
  104. package/resources/changelogs/changelogs.d.ts +106 -106
  105. package/resources/changelogs/changelogs.d.ts.map +1 -1
  106. package/resources/changelogs/changelogs.js +74 -74
  107. package/resources/changelogs/changelogs.js.map +1 -1
  108. package/resources/changelogs/changelogs.mjs +74 -74
  109. package/resources/changelogs/changelogs.mjs.map +1 -1
  110. package/resources/changelogs/index.d.mts +1 -1
  111. package/resources/changelogs/index.d.mts.map +1 -1
  112. package/resources/changelogs/index.d.ts +1 -1
  113. package/resources/changelogs/index.d.ts.map +1 -1
  114. package/resources/changelogs/index.mjs.map +1 -1
  115. package/resources/changelogs/subscribers.d.mts.map +1 -1
  116. package/resources/changelogs/subscribers.d.ts.map +1 -1
  117. package/resources/changelogs/subscribers.mjs.map +1 -1
  118. package/resources/changelogs.d.mts.map +1 -1
  119. package/resources/changelogs.d.ts.map +1 -1
  120. package/resources/changelogs.mjs.map +1 -1
  121. package/resources/conversation-attributes.d.mts +117 -0
  122. package/resources/conversation-attributes.d.mts.map +1 -0
  123. package/resources/conversation-attributes.d.ts +117 -0
  124. package/resources/conversation-attributes.d.ts.map +1 -0
  125. package/resources/conversation-attributes.js +61 -0
  126. package/resources/conversation-attributes.js.map +1 -0
  127. package/resources/conversation-attributes.mjs +57 -0
  128. package/resources/conversation-attributes.mjs.map +1 -0
  129. package/resources/feedback/boards.d.mts +17 -17
  130. package/resources/feedback/boards.d.mts.map +1 -1
  131. package/resources/feedback/boards.d.ts +17 -17
  132. package/resources/feedback/boards.d.ts.map +1 -1
  133. package/resources/feedback/boards.js +20 -20
  134. package/resources/feedback/boards.js.map +1 -1
  135. package/resources/feedback/boards.mjs +20 -20
  136. package/resources/feedback/boards.mjs.map +1 -1
  137. package/resources/feedback/comments.d.mts +129 -191
  138. package/resources/feedback/comments.d.mts.map +1 -1
  139. package/resources/feedback/comments.d.ts +129 -191
  140. package/resources/feedback/comments.d.ts.map +1 -1
  141. package/resources/feedback/comments.js +93 -93
  142. package/resources/feedback/comments.js.map +1 -1
  143. package/resources/feedback/comments.mjs +93 -93
  144. package/resources/feedback/comments.mjs.map +1 -1
  145. package/resources/feedback/custom-fields.d.mts +34 -34
  146. package/resources/feedback/custom-fields.d.mts.map +1 -1
  147. package/resources/feedback/custom-fields.d.ts +34 -34
  148. package/resources/feedback/custom-fields.d.ts.map +1 -1
  149. package/resources/feedback/custom-fields.js +36 -36
  150. package/resources/feedback/custom-fields.js.map +1 -1
  151. package/resources/feedback/custom-fields.mjs +36 -36
  152. package/resources/feedback/custom-fields.mjs.map +1 -1
  153. package/resources/feedback/feedback.d.mts +7 -7
  154. package/resources/feedback/feedback.d.mts.map +1 -1
  155. package/resources/feedback/feedback.d.ts +7 -7
  156. package/resources/feedback/feedback.d.ts.map +1 -1
  157. package/resources/feedback/feedback.js.map +1 -1
  158. package/resources/feedback/feedback.mjs.map +1 -1
  159. package/resources/feedback/index.d.mts +5 -5
  160. package/resources/feedback/index.d.mts.map +1 -1
  161. package/resources/feedback/index.d.ts +5 -5
  162. package/resources/feedback/index.d.ts.map +1 -1
  163. package/resources/feedback/index.js.map +1 -1
  164. package/resources/feedback/index.mjs.map +1 -1
  165. package/resources/feedback/post-statuses.d.mts +18 -18
  166. package/resources/feedback/post-statuses.d.mts.map +1 -1
  167. package/resources/feedback/post-statuses.d.ts +18 -18
  168. package/resources/feedback/post-statuses.d.ts.map +1 -1
  169. package/resources/feedback/post-statuses.js +23 -23
  170. package/resources/feedback/post-statuses.js.map +1 -1
  171. package/resources/feedback/post-statuses.mjs +23 -23
  172. package/resources/feedback/post-statuses.mjs.map +1 -1
  173. package/resources/feedback/posts/index.d.mts +1 -1
  174. package/resources/feedback/posts/index.d.mts.map +1 -1
  175. package/resources/feedback/posts/index.d.ts +1 -1
  176. package/resources/feedback/posts/index.d.ts.map +1 -1
  177. package/resources/feedback/posts/index.js.map +1 -1
  178. package/resources/feedback/posts/index.mjs.map +1 -1
  179. package/resources/feedback/posts/posts.d.mts +187 -260
  180. package/resources/feedback/posts/posts.d.mts.map +1 -1
  181. package/resources/feedback/posts/posts.d.ts +187 -260
  182. package/resources/feedback/posts/posts.d.ts.map +1 -1
  183. package/resources/feedback/posts/posts.js +75 -75
  184. package/resources/feedback/posts/posts.js.map +1 -1
  185. package/resources/feedback/posts/posts.mjs +75 -75
  186. package/resources/feedback/posts/posts.mjs.map +1 -1
  187. package/resources/feedback/posts/voters.d.mts.map +1 -1
  188. package/resources/feedback/posts/voters.d.ts.map +1 -1
  189. package/resources/feedback/posts/voters.mjs.map +1 -1
  190. package/resources/feedback/posts.d.mts.map +1 -1
  191. package/resources/feedback/posts.d.ts.map +1 -1
  192. package/resources/feedback/posts.mjs.map +1 -1
  193. package/resources/feedback.d.mts.map +1 -1
  194. package/resources/feedback.d.ts.map +1 -1
  195. package/resources/feedback.mjs.map +1 -1
  196. package/resources/help-center/articles.d.mts +98 -152
  197. package/resources/help-center/articles.d.mts.map +1 -1
  198. package/resources/help-center/articles.d.ts +98 -152
  199. package/resources/help-center/articles.d.ts.map +1 -1
  200. package/resources/help-center/articles.js +73 -73
  201. package/resources/help-center/articles.js.map +1 -1
  202. package/resources/help-center/articles.mjs +73 -73
  203. package/resources/help-center/articles.mjs.map +1 -1
  204. package/resources/help-center/collections.d.mts +64 -64
  205. package/resources/help-center/collections.d.mts.map +1 -1
  206. package/resources/help-center/collections.d.ts +64 -64
  207. package/resources/help-center/collections.d.ts.map +1 -1
  208. package/resources/help-center/collections.js +65 -65
  209. package/resources/help-center/collections.js.map +1 -1
  210. package/resources/help-center/collections.mjs +65 -65
  211. package/resources/help-center/collections.mjs.map +1 -1
  212. package/resources/help-center/help-center.d.mts +5 -5
  213. package/resources/help-center/help-center.d.mts.map +1 -1
  214. package/resources/help-center/help-center.d.ts +5 -5
  215. package/resources/help-center/help-center.d.ts.map +1 -1
  216. package/resources/help-center/help-center.js.map +1 -1
  217. package/resources/help-center/help-center.mjs.map +1 -1
  218. package/resources/help-center/help-centers.d.mts +43 -43
  219. package/resources/help-center/help-centers.d.mts.map +1 -1
  220. package/resources/help-center/help-centers.d.ts +43 -43
  221. package/resources/help-center/help-centers.d.ts.map +1 -1
  222. package/resources/help-center/help-centers.js +43 -43
  223. package/resources/help-center/help-centers.js.map +1 -1
  224. package/resources/help-center/help-centers.mjs +43 -43
  225. package/resources/help-center/help-centers.mjs.map +1 -1
  226. package/resources/help-center/index.d.mts +4 -4
  227. package/resources/help-center/index.d.mts.map +1 -1
  228. package/resources/help-center/index.d.ts +4 -4
  229. package/resources/help-center/index.d.ts.map +1 -1
  230. package/resources/help-center/index.js.map +1 -1
  231. package/resources/help-center/index.mjs.map +1 -1
  232. package/resources/help-center/redirect-rules.d.mts +117 -117
  233. package/resources/help-center/redirect-rules.d.mts.map +1 -1
  234. package/resources/help-center/redirect-rules.d.ts +117 -117
  235. package/resources/help-center/redirect-rules.d.ts.map +1 -1
  236. package/resources/help-center/redirect-rules.js +112 -112
  237. package/resources/help-center/redirect-rules.js.map +1 -1
  238. package/resources/help-center/redirect-rules.mjs +112 -112
  239. package/resources/help-center/redirect-rules.mjs.map +1 -1
  240. package/resources/help-center.d.mts.map +1 -1
  241. package/resources/help-center.d.ts.map +1 -1
  242. package/resources/help-center.mjs.map +1 -1
  243. package/resources/index.d.mts +6 -3
  244. package/resources/index.d.mts.map +1 -1
  245. package/resources/index.d.ts +6 -3
  246. package/resources/index.d.ts.map +1 -1
  247. package/resources/index.js +7 -1
  248. package/resources/index.js.map +1 -1
  249. package/resources/index.mjs +3 -0
  250. package/resources/index.mjs.map +1 -1
  251. package/resources/organization/admins.d.mts +33 -23
  252. package/resources/organization/admins.d.mts.map +1 -1
  253. package/resources/organization/admins.d.ts +33 -23
  254. package/resources/organization/admins.d.ts.map +1 -1
  255. package/resources/organization/admins.js +27 -25
  256. package/resources/organization/admins.js.map +1 -1
  257. package/resources/organization/admins.mjs +27 -25
  258. package/resources/organization/admins.mjs.map +1 -1
  259. package/resources/organization/brands.d.mts +50 -50
  260. package/resources/organization/brands.d.mts.map +1 -1
  261. package/resources/organization/brands.d.ts +50 -50
  262. package/resources/organization/brands.d.ts.map +1 -1
  263. package/resources/organization/brands.js +54 -54
  264. package/resources/organization/brands.js.map +1 -1
  265. package/resources/organization/brands.mjs +54 -54
  266. package/resources/organization/brands.mjs.map +1 -1
  267. package/resources/organization/index.d.mts +3 -3
  268. package/resources/organization/index.d.mts.map +1 -1
  269. package/resources/organization/index.d.ts +3 -3
  270. package/resources/organization/index.d.ts.map +1 -1
  271. package/resources/organization/index.mjs.map +1 -1
  272. package/resources/organization/organization.d.mts +3 -3
  273. package/resources/organization/organization.d.mts.map +1 -1
  274. package/resources/organization/organization.d.ts +3 -3
  275. package/resources/organization/organization.d.ts.map +1 -1
  276. package/resources/organization/organization.mjs.map +1 -1
  277. package/resources/organization/teams.d.mts +45 -45
  278. package/resources/organization/teams.d.mts.map +1 -1
  279. package/resources/organization/teams.d.ts +45 -45
  280. package/resources/organization/teams.d.ts.map +1 -1
  281. package/resources/organization/teams.js +44 -44
  282. package/resources/organization/teams.js.map +1 -1
  283. package/resources/organization/teams.mjs +44 -44
  284. package/resources/organization/teams.mjs.map +1 -1
  285. package/resources/organization.d.mts.map +1 -1
  286. package/resources/organization.d.ts.map +1 -1
  287. package/resources/organization.mjs.map +1 -1
  288. package/resources/reports.d.mts +641 -0
  289. package/resources/reports.d.mts.map +1 -0
  290. package/resources/reports.d.ts +641 -0
  291. package/resources/reports.d.ts.map +1 -0
  292. package/resources/reports.js +238 -0
  293. package/resources/reports.js.map +1 -0
  294. package/resources/reports.mjs +234 -0
  295. package/resources/reports.mjs.map +1 -0
  296. package/resources/support/conversation-tags.d.mts +40 -40
  297. package/resources/support/conversation-tags.d.mts.map +1 -1
  298. package/resources/support/conversation-tags.d.ts +40 -40
  299. package/resources/support/conversation-tags.d.ts.map +1 -1
  300. package/resources/support/conversation-tags.js +32 -32
  301. package/resources/support/conversation-tags.js.map +1 -1
  302. package/resources/support/conversation-tags.mjs +32 -32
  303. package/resources/support/conversation-tags.mjs.map +1 -1
  304. package/resources/support/conversations/conversations.d.mts +599 -705
  305. package/resources/support/conversations/conversations.d.mts.map +1 -1
  306. package/resources/support/conversations/conversations.d.ts +599 -705
  307. package/resources/support/conversations/conversations.d.ts.map +1 -1
  308. package/resources/support/conversations/conversations.js +289 -288
  309. package/resources/support/conversations/conversations.js.map +1 -1
  310. package/resources/support/conversations/conversations.mjs +289 -288
  311. package/resources/support/conversations/conversations.mjs.map +1 -1
  312. package/resources/support/conversations/index.d.mts +1 -1
  313. package/resources/support/conversations/index.d.mts.map +1 -1
  314. package/resources/support/conversations/index.d.ts +1 -1
  315. package/resources/support/conversations/index.d.ts.map +1 -1
  316. package/resources/support/conversations/index.js.map +1 -1
  317. package/resources/support/conversations/index.mjs.map +1 -1
  318. package/resources/support/conversations/participants.d.mts.map +1 -1
  319. package/resources/support/conversations/participants.d.ts.map +1 -1
  320. package/resources/support/conversations/participants.mjs.map +1 -1
  321. package/resources/support/conversations.d.mts.map +1 -1
  322. package/resources/support/conversations.d.ts.map +1 -1
  323. package/resources/support/conversations.mjs.map +1 -1
  324. package/resources/support/index.d.mts +3 -3
  325. package/resources/support/index.d.mts.map +1 -1
  326. package/resources/support/index.d.ts +3 -3
  327. package/resources/support/index.d.ts.map +1 -1
  328. package/resources/support/index.js.map +1 -1
  329. package/resources/support/index.mjs.map +1 -1
  330. package/resources/support/support.d.mts +4 -4
  331. package/resources/support/support.d.mts.map +1 -1
  332. package/resources/support/support.d.ts +4 -4
  333. package/resources/support/support.d.ts.map +1 -1
  334. package/resources/support/support.js.map +1 -1
  335. package/resources/support/support.mjs.map +1 -1
  336. package/resources/support/tickets/categories.d.mts +18 -18
  337. package/resources/support/tickets/categories.d.mts.map +1 -1
  338. package/resources/support/tickets/categories.d.ts +18 -18
  339. package/resources/support/tickets/categories.d.ts.map +1 -1
  340. package/resources/support/tickets/categories.js +25 -25
  341. package/resources/support/tickets/categories.js.map +1 -1
  342. package/resources/support/tickets/categories.mjs +25 -25
  343. package/resources/support/tickets/categories.mjs.map +1 -1
  344. package/resources/support/tickets/custom-fields.d.mts +20 -20
  345. package/resources/support/tickets/custom-fields.d.mts.map +1 -1
  346. package/resources/support/tickets/custom-fields.d.ts +20 -20
  347. package/resources/support/tickets/custom-fields.d.ts.map +1 -1
  348. package/resources/support/tickets/custom-fields.js +19 -19
  349. package/resources/support/tickets/custom-fields.js.map +1 -1
  350. package/resources/support/tickets/custom-fields.mjs +19 -19
  351. package/resources/support/tickets/custom-fields.mjs.map +1 -1
  352. package/resources/support/tickets/index.d.mts +4 -4
  353. package/resources/support/tickets/index.d.mts.map +1 -1
  354. package/resources/support/tickets/index.d.ts +4 -4
  355. package/resources/support/tickets/index.d.ts.map +1 -1
  356. package/resources/support/tickets/index.mjs.map +1 -1
  357. package/resources/support/tickets/statuses.d.mts +17 -17
  358. package/resources/support/tickets/statuses.d.mts.map +1 -1
  359. package/resources/support/tickets/statuses.d.ts +17 -17
  360. package/resources/support/tickets/statuses.d.ts.map +1 -1
  361. package/resources/support/tickets/statuses.js +21 -21
  362. package/resources/support/tickets/statuses.js.map +1 -1
  363. package/resources/support/tickets/statuses.mjs +21 -21
  364. package/resources/support/tickets/statuses.mjs.map +1 -1
  365. package/resources/support/tickets/tickets.d.mts +69 -69
  366. package/resources/support/tickets/tickets.d.mts.map +1 -1
  367. package/resources/support/tickets/tickets.d.ts +69 -69
  368. package/resources/support/tickets/tickets.d.ts.map +1 -1
  369. package/resources/support/tickets/tickets.js +44 -44
  370. package/resources/support/tickets/tickets.js.map +1 -1
  371. package/resources/support/tickets/tickets.mjs +44 -44
  372. package/resources/support/tickets/tickets.mjs.map +1 -1
  373. package/resources/support/tickets.d.mts.map +1 -1
  374. package/resources/support/tickets.d.ts.map +1 -1
  375. package/resources/support/tickets.mjs.map +1 -1
  376. package/resources/support.d.mts.map +1 -1
  377. package/resources/support.d.ts.map +1 -1
  378. package/resources/support.mjs.map +1 -1
  379. package/resources/surveys.d.mts +41 -41
  380. package/resources/surveys.d.mts.map +1 -1
  381. package/resources/surveys.d.ts +41 -41
  382. package/resources/surveys.d.ts.map +1 -1
  383. package/resources/surveys.js +44 -44
  384. package/resources/surveys.js.map +1 -1
  385. package/resources/surveys.mjs +44 -44
  386. package/resources/surveys.mjs.map +1 -1
  387. package/resources/users/companies/companies.d.mts +116 -157
  388. package/resources/users/companies/companies.d.mts.map +1 -1
  389. package/resources/users/companies/companies.d.ts +116 -157
  390. package/resources/users/companies/companies.d.ts.map +1 -1
  391. package/resources/users/companies/companies.js +125 -125
  392. package/resources/users/companies/companies.js.map +1 -1
  393. package/resources/users/companies/companies.mjs +125 -125
  394. package/resources/users/companies/companies.mjs.map +1 -1
  395. package/resources/users/companies/contacts.d.mts.map +1 -1
  396. package/resources/users/companies/contacts.d.ts.map +1 -1
  397. package/resources/users/companies/contacts.mjs.map +1 -1
  398. package/resources/users/companies/index.d.mts +1 -1
  399. package/resources/users/companies/index.d.mts.map +1 -1
  400. package/resources/users/companies/index.d.ts +1 -1
  401. package/resources/users/companies/index.d.ts.map +1 -1
  402. package/resources/users/companies/index.mjs.map +1 -1
  403. package/resources/users/companies.d.mts.map +1 -1
  404. package/resources/users/companies.d.ts.map +1 -1
  405. package/resources/users/companies.mjs.map +1 -1
  406. package/resources/users/contacts/by-user-id/by-user-id.d.mts.map +1 -1
  407. package/resources/users/contacts/by-user-id/by-user-id.d.ts.map +1 -1
  408. package/resources/users/contacts/by-user-id/by-user-id.mjs.map +1 -1
  409. package/resources/users/contacts/by-user-id/email-preferences.d.mts.map +1 -1
  410. package/resources/users/contacts/by-user-id/email-preferences.d.ts.map +1 -1
  411. package/resources/users/contacts/by-user-id/email-preferences.mjs.map +1 -1
  412. package/resources/users/contacts/by-user-id/index.d.mts.map +1 -1
  413. package/resources/users/contacts/by-user-id/index.d.ts.map +1 -1
  414. package/resources/users/contacts/by-user-id/index.mjs.map +1 -1
  415. package/resources/users/contacts/by-user-id.d.mts.map +1 -1
  416. package/resources/users/contacts/by-user-id.d.ts.map +1 -1
  417. package/resources/users/contacts/by-user-id.mjs.map +1 -1
  418. package/resources/users/contacts/contacts.d.mts +196 -235
  419. package/resources/users/contacts/contacts.d.mts.map +1 -1
  420. package/resources/users/contacts/contacts.d.ts +196 -235
  421. package/resources/users/contacts/contacts.d.ts.map +1 -1
  422. package/resources/users/contacts/contacts.js +186 -184
  423. package/resources/users/contacts/contacts.js.map +1 -1
  424. package/resources/users/contacts/contacts.mjs +186 -184
  425. package/resources/users/contacts/contacts.mjs.map +1 -1
  426. package/resources/users/contacts/email-preferences.d.mts.map +1 -1
  427. package/resources/users/contacts/email-preferences.d.ts.map +1 -1
  428. package/resources/users/contacts/email-preferences.mjs.map +1 -1
  429. package/resources/users/contacts/index.d.mts +1 -1
  430. package/resources/users/contacts/index.d.mts.map +1 -1
  431. package/resources/users/contacts/index.d.ts +1 -1
  432. package/resources/users/contacts/index.d.ts.map +1 -1
  433. package/resources/users/contacts/index.mjs.map +1 -1
  434. package/resources/users/contacts.d.mts.map +1 -1
  435. package/resources/users/contacts.d.ts.map +1 -1
  436. package/resources/users/contacts.mjs.map +1 -1
  437. package/resources/users/index.d.mts +2 -2
  438. package/resources/users/index.d.mts.map +1 -1
  439. package/resources/users/index.d.ts +2 -2
  440. package/resources/users/index.d.ts.map +1 -1
  441. package/resources/users/index.mjs.map +1 -1
  442. package/resources/users/users.d.mts +2 -2
  443. package/resources/users/users.d.mts.map +1 -1
  444. package/resources/users/users.d.ts +2 -2
  445. package/resources/users/users.d.ts.map +1 -1
  446. package/resources/users/users.mjs.map +1 -1
  447. package/resources/users.d.mts.map +1 -1
  448. package/resources/users.d.ts.map +1 -1
  449. package/resources/users.mjs.map +1 -1
  450. package/resources/webhooks.d.mts +80 -78
  451. package/resources/webhooks.d.mts.map +1 -1
  452. package/resources/webhooks.d.ts +80 -78
  453. package/resources/webhooks.d.ts.map +1 -1
  454. package/resources/webhooks.js +79 -77
  455. package/resources/webhooks.js.map +1 -1
  456. package/resources/webhooks.mjs +79 -77
  457. package/resources/webhooks.mjs.map +1 -1
  458. package/resources.d.mts.map +1 -1
  459. package/resources.d.ts.map +1 -1
  460. package/resources.mjs.map +1 -1
  461. package/src/client.ts +98 -4
  462. package/src/resources/audit-logs.ts +607 -0
  463. package/src/resources/changelogs/changelogs.ts +170 -170
  464. package/src/resources/changelogs/index.ts +1 -1
  465. package/src/resources/conversation-attributes.ts +181 -0
  466. package/src/resources/feedback/boards.ts +28 -28
  467. package/src/resources/feedback/comments.ts +153 -226
  468. package/src/resources/feedback/custom-fields.ts +44 -44
  469. package/src/resources/feedback/feedback.ts +19 -5
  470. package/src/resources/feedback/index.ts +12 -5
  471. package/src/resources/feedback/post-statuses.ts +31 -31
  472. package/src/resources/feedback/posts/index.ts +7 -1
  473. package/src/resources/feedback/posts/posts.ts +230 -311
  474. package/src/resources/help-center/articles.ts +123 -186
  475. package/src/resources/help-center/collections.ts +84 -84
  476. package/src/resources/help-center/help-center.ts +7 -5
  477. package/src/resources/help-center/help-centers.ts +55 -55
  478. package/src/resources/help-center/index.ts +6 -5
  479. package/src/resources/help-center/redirect-rules.ts +174 -174
  480. package/src/resources/index.ts +37 -3
  481. package/src/resources/organization/admins.ts +45 -33
  482. package/src/resources/organization/brands.ts +66 -66
  483. package/src/resources/organization/index.ts +3 -3
  484. package/src/resources/organization/organization.ts +3 -3
  485. package/src/resources/organization/teams.ts +52 -52
  486. package/src/resources/reports.ts +908 -0
  487. package/src/resources/support/conversation-tags.ts +59 -59
  488. package/src/resources/support/conversations/conversations.ts +723 -850
  489. package/src/resources/support/conversations/index.ts +11 -6
  490. package/src/resources/support/index.ts +14 -9
  491. package/src/resources/support/support.ts +21 -11
  492. package/src/resources/support/tickets/categories.ts +33 -33
  493. package/src/resources/support/tickets/custom-fields.ts +27 -27
  494. package/src/resources/support/tickets/index.ts +4 -4
  495. package/src/resources/support/tickets/statuses.ts +29 -29
  496. package/src/resources/support/tickets/tickets.ts +95 -95
  497. package/src/resources/surveys.ts +58 -58
  498. package/src/resources/users/companies/companies.ts +155 -204
  499. package/src/resources/users/companies/index.ts +2 -2
  500. package/src/resources/users/contacts/contacts.ts +235 -282
  501. package/src/resources/users/contacts/index.ts +3 -3
  502. package/src/resources/users/index.ts +5 -5
  503. package/src/resources/users/users.ts +5 -5
  504. package/src/resources/webhooks.ts +100 -95
  505. package/src/version.ts +1 -1
  506. package/uploads.d.mts +1 -0
  507. package/uploads.d.mts.map +1 -1
  508. package/uploads.d.ts +1 -0
  509. package/uploads.d.ts.map +1 -1
  510. package/uploads.mjs +1 -0
  511. package/uploads.mjs.map +1 -1
  512. package/version.d.mts +1 -1
  513. package/version.d.ts +1 -1
  514. package/version.js +1 -1
  515. package/version.mjs +1 -1
@@ -13,6 +13,91 @@ export class Conversations extends APIResource {
13
13
  super(...arguments);
14
14
  this.participants = new ParticipantsAPI.Participants(this._client);
15
15
  }
16
+ /**
17
+ * Returns a list of conversations in your organization using cursor-based
18
+ * pagination.
19
+ *
20
+ * ### Query Parameters
21
+ *
22
+ * - `limit` - Number of conversations to return (1-100, default 10)
23
+ * - `cursor` - Cursor from previous response for pagination
24
+ * - `tagIds` - Optional tag filter as a comma-separated list of tag IDs. Matches
25
+ * conversations that contain all of the provided tags.
26
+ *
27
+ * ### Response Format
28
+ *
29
+ * Returns a list object with:
30
+ *
31
+ * - `object` - Always "list"
32
+ * - `data` - Array of conversation objects
33
+ * - `nextCursor` - Cursor for the next page, or null if no more results
34
+ *
35
+ * ### Conversation Object
36
+ *
37
+ * Each conversation includes:
38
+ *
39
+ * - `id` - Unique conversation identifier (short ID)
40
+ * - `title` - Conversation title
41
+ * - `state` - Current state ("open", "closed", or "snoozed")
42
+ * - `priority` - Whether the conversation is marked as priority
43
+ * - `adminAssigneeId` - ID of assigned admin (if any)
44
+ * - `teamAssigneeId` - ID of assigned team (if any)
45
+ * - `tags` - Current tags applied anywhere in the conversation
46
+ * - `participants` - Array of participants
47
+ * - `source` - Information about the first message
48
+ * - `createdAt` - Creation timestamp
49
+ * - `updatedAt` - Last update timestamp
50
+ *
51
+ * ### Example
52
+ *
53
+ * ```json
54
+ * {
55
+ * "object": "list",
56
+ * "data": [
57
+ * {
58
+ * "object": "conversation",
59
+ * "id": "12345",
60
+ * "title": "Question about pricing",
61
+ * "state": "open",
62
+ * "priority": false,
63
+ * "adminAssigneeId": null,
64
+ * "participants": [
65
+ * { "type": "customer", "id": "676f0f6765bdaa7d7d760f88" }
66
+ * ],
67
+ * ...
68
+ * }
69
+ * ],
70
+ * "nextCursor": "eyJpZCI6IjEyMzQ1In0="
71
+ * }
72
+ * ```
73
+ *
74
+ * ### Version Availability
75
+ *
76
+ * This endpoint is only available in API version 2026-01-01.nova and newer.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * // Automatically fetches more pages as needed.
81
+ * for await (const conversation of client.support.conversations.list()) {
82
+ * // ...
83
+ * }
84
+ * ```
85
+ */
86
+ list(params = {}, options) {
87
+ const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
88
+ return this._client.getAPIList('/v2/conversations', (CursorPage), {
89
+ query,
90
+ ...options,
91
+ headers: buildHeaders([
92
+ {
93
+ ...(featurebaseVersion?.toString() != null ?
94
+ { 'Featurebase-Version': featurebaseVersion?.toString() }
95
+ : undefined),
96
+ },
97
+ options?.headers,
98
+ ]),
99
+ });
100
+ }
16
101
  /**
17
102
  * Creates a new conversation. Supports both contact-initiated (customer/lead) and
18
103
  * admin-initiated (outreach) conversations.
@@ -266,8 +351,57 @@ export class Conversations extends APIResource {
266
351
  * ```
267
352
  */
268
353
  retrieve(id, params = {}, options) {
269
- const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
354
+ const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
270
355
  return this._client.get(path `/v2/conversations/${id}`, {
356
+ query,
357
+ ...options,
358
+ headers: buildHeaders([
359
+ {
360
+ ...(featurebaseVersion?.toString() != null ?
361
+ { 'Featurebase-Version': featurebaseVersion?.toString() }
362
+ : undefined),
363
+ },
364
+ options?.headers,
365
+ ]),
366
+ });
367
+ }
368
+ /**
369
+ * Permanently deletes a conversation by its short ID.
370
+ *
371
+ * ### Path Parameters
372
+ *
373
+ * - `id` - The conversation short ID (numeric)
374
+ *
375
+ * ### Response
376
+ *
377
+ * Returns a deletion confirmation object:
378
+ *
379
+ * ```json
380
+ * {
381
+ * "id": "12345",
382
+ * "object": "conversation",
383
+ * "deleted": true
384
+ * }
385
+ * ```
386
+ *
387
+ * ### Caution
388
+ *
389
+ * This operation is **irreversible**. The conversation and all its messages will
390
+ * be permanently deleted.
391
+ *
392
+ * ### Version Availability
393
+ *
394
+ * This endpoint is only available in API version 2026-01-01.nova and newer.
395
+ *
396
+ * @example
397
+ * ```ts
398
+ * const conversation =
399
+ * await client.support.conversations.delete('12345');
400
+ * ```
401
+ */
402
+ delete(id, params = {}, options) {
403
+ const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
404
+ return this._client.delete(path `/v2/conversations/${id}`, {
271
405
  ...options,
272
406
  headers: buildHeaders([
273
407
  {
@@ -299,7 +433,7 @@ export class Conversations extends APIResource {
299
433
  * | `adminAssigneeId` | string/null | Admin ID to assign, or null to unassign |
300
434
  * | `teamAssigneeId` | string/null | Team ID to assign, or null to unassign |
301
435
  * | `title` | string | Conversation title |
302
- * | `customAttributes` | object | Custom attributes to set on the conversation |
436
+ * | `customAttributes` | object | Custom attributes to set on the conversation, keyed by conversation custom attribute ID |
303
437
  * | `markAsRead` | object | Mark conversation as read for specific users |
304
438
  *
305
439
  * ### markAsRead Object
@@ -359,8 +493,8 @@ export class Conversations extends APIResource {
359
493
  * {
360
494
  * "title": "Billing Issue - Priority",
361
495
  * "customAttributes": {
362
- * "priority_level": "high",
363
- * "category": "billing"
496
+ * "507f1f77bcf86cd799439011": 10,
497
+ * "507f1f77bcf86cd799439012": true
364
498
  * }
365
499
  * }
366
500
  * ```
@@ -422,172 +556,97 @@ export class Conversations extends APIResource {
422
556
  });
423
557
  }
424
558
  /**
425
- * Returns a list of conversations in your organization using cursor-based
426
- * pagination.
559
+ * Adds a reply to an existing conversation. Supports both contact (customer/lead)
560
+ * and admin replies.
427
561
  *
428
- * ### Query Parameters
562
+ * ### Path Parameters
429
563
  *
430
- * - `limit` - Number of conversations to return (1-100, default 10)
431
- * - `cursor` - Cursor from previous response for pagination
432
- * - `tagIds` - Optional tag filter as a comma-separated list of tag IDs. Matches
433
- * conversations that contain all of the provided tags.
564
+ * - `id` - The conversation ID (short ID)
434
565
  *
435
- * ### Response Format
566
+ * ### Request Body
436
567
  *
437
- * Returns a list object with:
568
+ * The request body varies based on who is sending the reply:
438
569
  *
439
- * - `object` - Always "list"
440
- * - `data` - Array of conversation objects
441
- * - `nextCursor` - Cursor for the next page, or null if no more results
570
+ * #### Contact Reply (customer/lead)
442
571
  *
443
- * ### Conversation Object
572
+ * | Field | Type | Required | Description |
573
+ * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
574
+ * | `type` | string | Yes | Must be "contact" |
575
+ * | `userId` | string | No\* | External user ID from your system |
576
+ * | `id` | string | No\* | Featurebase contact ID (24-character ObjectId) |
577
+ * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
578
+ * | `messageType` | string | Yes | Must be "reply" |
579
+ * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
444
580
  *
445
- * Each conversation includes:
581
+ * \*At least one of `userId` or `id` is required.
446
582
  *
447
- * - `id` - Unique conversation identifier (short ID)
448
- * - `title` - Conversation title
449
- * - `state` - Current state ("open", "closed", or "snoozed")
450
- * - `priority` - Whether the conversation is marked as priority
451
- * - `adminAssigneeId` - ID of assigned admin (if any)
452
- * - `teamAssigneeId` - ID of assigned team (if any)
453
- * - `tags` - Current tags applied anywhere in the conversation
454
- * - `participants` - Array of participants
455
- * - `source` - Information about the first message
456
- * - `createdAt` - Creation timestamp
457
- * - `updatedAt` - Last update timestamp
583
+ * #### Admin Reply
458
584
  *
459
- * ### Example
585
+ * | Field | Type | Required | Description |
586
+ * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
587
+ * | `type` | string | Yes | Must be "admin" |
588
+ * | `id` | string | Yes | Featurebase admin ID (24-character ObjectId) |
589
+ * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
590
+ * | `messageType` | string | Yes | "reply" for customer-visible reply, "note" for internal note |
591
+ * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
592
+ *
593
+ * ### Response
594
+ *
595
+ * Returns the created conversation part object with a **201 Created** status. The
596
+ * response includes both `bodyHtml` (with signed image URLs) and `bodyMarkdown`
597
+ * fields.
598
+ *
599
+ * ### Example Contact Reply
460
600
  *
461
601
  * ```json
462
602
  * {
463
- * "object": "list",
464
- * "data": [
465
- * {
466
- * "object": "conversation",
467
- * "id": "12345",
468
- * "title": "Question about pricing",
469
- * "state": "open",
470
- * "priority": false,
471
- * "adminAssigneeId": null,
472
- * "participants": [
473
- * { "type": "customer", "id": "676f0f6765bdaa7d7d760f88" }
474
- * ],
475
- * ...
476
- * }
477
- * ],
478
- * "nextCursor": "eyJpZCI6IjEyMzQ1In0="
603
+ * "type": "contact",
604
+ * "userId": "user_123",
605
+ * "bodyMarkdown": "Thank you for your help!",
606
+ * "messageType": "reply"
479
607
  * }
480
608
  * ```
481
609
  *
482
- * ### Version Availability
483
- *
484
- * This endpoint is only available in API version 2026-01-01.nova and newer.
610
+ * ### Example Admin Reply
485
611
  *
486
- * @example
487
- * ```ts
488
- * // Automatically fetches more pages as needed.
489
- * for await (const conversation of client.support.conversations.list()) {
490
- * // ...
612
+ * ```json
613
+ * {
614
+ * "type": "admin",
615
+ * "id": "507f1f77bcf86cd799439011",
616
+ * "bodyMarkdown": "I'm happy to help! Here's what you need to do...",
617
+ * "messageType": "reply"
491
618
  * }
492
619
  * ```
493
- */
494
- list(params = {}, options) {
495
- const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
496
- return this._client.getAPIList('/v2/conversations', (CursorPage), {
497
- query,
498
- ...options,
499
- headers: buildHeaders([
500
- {
501
- ...(featurebaseVersion?.toString() != null ?
502
- { 'Featurebase-Version': featurebaseVersion?.toString() }
503
- : undefined),
504
- },
505
- options?.headers,
506
- ]),
507
- });
508
- }
509
- /**
510
- * Permanently deletes a conversation by its short ID.
511
- *
512
- * ### Path Parameters
513
- *
514
- * - `id` - The conversation short ID (numeric)
515
- *
516
- * ### Response
517
620
  *
518
- * Returns a deletion confirmation object:
621
+ * ### Example Admin Note (Internal)
519
622
  *
520
623
  * ```json
521
624
  * {
522
- * "id": "12345",
523
- * "object": "conversation",
524
- * "deleted": true
625
+ * "type": "admin",
626
+ * "id": "507f1f77bcf86cd799439011",
627
+ * "bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
628
+ * "messageType": "note"
525
629
  * }
526
630
  * ```
527
631
  *
528
- * ### Caution
529
- *
530
- * This operation is **irreversible**. The conversation and all its messages will
531
- * be permanently deleted.
532
- *
533
- * ### Version Availability
534
- *
535
- * This endpoint is only available in API version 2026-01-01.nova and newer.
536
- *
537
- * @example
538
- * ```ts
539
- * const conversation =
540
- * await client.support.conversations.delete('12345');
541
- * ```
542
- */
543
- delete(id, params = {}, options) {
544
- const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
545
- return this._client.delete(path `/v2/conversations/${id}`, {
546
- ...options,
547
- headers: buildHeaders([
548
- {
549
- ...(featurebaseVersion?.toString() != null ?
550
- { 'Featurebase-Version': featurebaseVersion?.toString() }
551
- : undefined),
552
- },
553
- options?.headers,
554
- ]),
555
- });
556
- }
557
- /**
558
- * Attaches a workspace tag to a conversation.
559
- *
560
- * This endpoint requires both the tag ID to attach and the `actingAdminId` of the
561
- * admin on whose behalf the mutation is recorded.
562
- *
563
- * ### Path Parameters
564
- *
565
- * - `id` - The conversation ID (short ID)
566
- *
567
- * ### Request Body
568
- *
569
- * | Field | Type | Required | Description |
570
- * | --------------- | ------ | -------- | ------------------------------------------------------------------------ |
571
- * | `tagId` | string | Yes | The Featurebase tag ID to attach |
572
- * | `actingAdminId` | string | Yes | The admin performing the mutation. Must be a member of the organization. |
573
- *
574
- * ### Behavior
575
- *
576
- * Featurebase resolves the latest taggable reply/message in the conversation and
577
- * records the tag attachment against that part so audit metadata remains
578
- * deterministic.
579
- *
580
- * ### Response
581
- *
582
- * Returns the affected tag plus attachment metadata such as `targetPartId`,
583
- * `appliedAt`, and `appliedBy`.
584
- *
585
- * ### Example Request
632
+ * ### Example Response
586
633
  *
587
634
  * ```json
588
635
  * {
589
- * "tagId": "67ec1234abcd5678ef901234",
590
- * "actingAdminId": "507f1f77bcf86cd799439011"
636
+ * "object": "conversation_part",
637
+ * "id": "3",
638
+ * "partType": "user_msg",
639
+ * "bodyHtml": "<p>Thank you for your help!</p>",
640
+ * "bodyMarkdown": "Thank you for your help!",
641
+ * "author": {
642
+ * "type": "customer",
643
+ * "id": "676f0f6765bdaa7d7d760f88",
644
+ * "name": "John Doe",
645
+ * "email": "john@example.com"
646
+ * },
647
+ * "channel": "desktop",
648
+ * "createdAt": "2025-01-15T10:40:00.000Z",
649
+ * "updatedAt": "2025-01-15T10:40:00.000Z"
591
650
  * }
592
651
  * ```
593
652
  *
@@ -597,83 +656,17 @@ export class Conversations extends APIResource {
597
656
  *
598
657
  * @example
599
658
  * ```ts
600
- * const response =
601
- * await client.support.conversations.attachTag('12345', {
602
- * actingAdminId: '507f1f77bcf86cd799439011',
603
- * tagId: '67ec1234abcd5678ef901234',
659
+ * const conversationPart =
660
+ * await client.support.conversations.reply('12345', {
661
+ * bodyMarkdown: 'Thank you for your help!',
662
+ * messageType: 'reply',
663
+ * type: 'contact',
604
664
  * });
605
665
  * ```
606
666
  */
607
- attachTag(id, params, options) {
667
+ reply(id, params, options) {
608
668
  const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
609
- return this._client.post(path `/v2/conversations/${id}/tags`, {
610
- body,
611
- ...options,
612
- headers: buildHeaders([
613
- {
614
- ...(featurebaseVersion?.toString() != null ?
615
- { 'Featurebase-Version': featurebaseVersion?.toString() }
616
- : undefined),
617
- },
618
- options?.headers,
619
- ]),
620
- });
621
- }
622
- /**
623
- * Removes a workspace tag from a conversation.
624
- *
625
- * This endpoint requires the `actingAdminId` of the admin on whose behalf the
626
- * mutation is recorded.
627
- *
628
- * ### Path Parameters
629
- *
630
- * - `id` - The conversation ID (short ID)
631
- * - `tagId` - The Featurebase tag ID to remove
632
- *
633
- * ### Request Body
634
- *
635
- * | Field | Type | Required | Description |
636
- * | --------------- | ------ | -------- | ------------------------------------------------------------------------ |
637
- * | `actingAdminId` | string | Yes | The admin performing the mutation. Must be a member of the organization. |
638
- *
639
- * ### Behavior
640
- *
641
- * Featurebase resolves the latest taggable reply/message in the conversation and
642
- * records the tag removal against that part so audit metadata remains
643
- * deterministic.
644
- *
645
- * ### Response
646
- *
647
- * Returns the affected tag payload with the most relevant attachment metadata
648
- * available for that relationship.
649
- *
650
- * ### Example Request
651
- *
652
- * ```json
653
- * {
654
- * "actingAdminId": "507f1f77bcf86cd799439011"
655
- * }
656
- * ```
657
- *
658
- * ### Version Availability
659
- *
660
- * This endpoint is only available in API version 2026-01-01.nova and newer.
661
- *
662
- * @example
663
- * ```ts
664
- * const response =
665
- * await client.support.conversations.detachTag(
666
- * '67ec1234abcd5678ef901234',
667
- * {
668
- * id: '12345',
669
- * actingAdminId: '507f1f77bcf86cd799439011',
670
- * },
671
- * );
672
- * ```
673
- */
674
- detachTag(tagID, params, options) {
675
- const { id, 'Featurebase-Version': featurebaseVersion, ...body } = params;
676
- return this._client.delete(path `/v2/conversations/${id}/tags/${tagID}`, {
669
+ return this._client.post(path `/v2/conversations/${id}/reply`, {
677
670
  body,
678
671
  ...options,
679
672
  headers: buildHeaders([
@@ -780,8 +773,10 @@ export class Conversations extends APIResource {
780
773
  });
781
774
  }
782
775
  /**
783
- * Adds a reply to an existing conversation. Supports both contact (customer/lead)
784
- * and admin replies.
776
+ * Attaches a workspace tag to a conversation.
777
+ *
778
+ * This endpoint requires both the tag ID to attach and the `actingAdminId` of the
779
+ * admin on whose behalf the mutation is recorded.
785
780
  *
786
781
  * ### Path Parameters
787
782
  *
@@ -789,88 +784,92 @@ export class Conversations extends APIResource {
789
784
  *
790
785
  * ### Request Body
791
786
  *
792
- * The request body varies based on who is sending the reply:
793
- *
794
- * #### Contact Reply (customer/lead)
795
- *
796
- * | Field | Type | Required | Description |
797
- * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
798
- * | `type` | string | Yes | Must be "contact" |
799
- * | `userId` | string | No\* | External user ID from your system |
800
- * | `id` | string | No\* | Featurebase contact ID (24-character ObjectId) |
801
- * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
802
- * | `messageType` | string | Yes | Must be "reply" |
803
- * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
804
- *
805
- * \*At least one of `userId` or `id` is required.
787
+ * | Field | Type | Required | Description |
788
+ * | --------------- | ------ | -------- | ------------------------------------------------------------------------ |
789
+ * | `tagId` | string | Yes | The Featurebase tag ID to attach |
790
+ * | `actingAdminId` | string | Yes | The admin performing the mutation. Must be a member of the organization. |
806
791
  *
807
- * #### Admin Reply
792
+ * ### Behavior
808
793
  *
809
- * | Field | Type | Required | Description |
810
- * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
811
- * | `type` | string | Yes | Must be "admin" |
812
- * | `id` | string | Yes | Featurebase admin ID (24-character ObjectId) |
813
- * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
814
- * | `messageType` | string | Yes | "reply" for customer-visible reply, "note" for internal note |
815
- * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
794
+ * Featurebase resolves the latest taggable reply/message in the conversation and
795
+ * records the tag attachment against that part so audit metadata remains
796
+ * deterministic.
816
797
  *
817
798
  * ### Response
818
799
  *
819
- * Returns the created conversation part object with a **201 Created** status. The
820
- * response includes both `bodyHtml` (with signed image URLs) and `bodyMarkdown`
821
- * fields.
800
+ * Returns the affected tag plus attachment metadata such as `targetPartId`,
801
+ * `appliedAt`, and `appliedBy`.
822
802
  *
823
- * ### Example Contact Reply
803
+ * ### Example Request
824
804
  *
825
805
  * ```json
826
806
  * {
827
- * "type": "contact",
828
- * "userId": "user_123",
829
- * "bodyMarkdown": "Thank you for your help!",
830
- * "messageType": "reply"
807
+ * "tagId": "67ec1234abcd5678ef901234",
808
+ * "actingAdminId": "507f1f77bcf86cd799439011"
831
809
  * }
832
810
  * ```
833
811
  *
834
- * ### Example Admin Reply
812
+ * ### Version Availability
835
813
  *
836
- * ```json
837
- * {
838
- * "type": "admin",
839
- * "id": "507f1f77bcf86cd799439011",
840
- * "bodyMarkdown": "I'm happy to help! Here's what you need to do...",
841
- * "messageType": "reply"
842
- * }
814
+ * This endpoint is only available in API version 2026-01-01.nova and newer.
815
+ *
816
+ * @example
817
+ * ```ts
818
+ * const attachedConversationTag =
819
+ * await client.support.conversations.attachTag('12345', {
820
+ * actingAdminId: '507f1f77bcf86cd799439011',
821
+ * tagId: '67ec1234abcd5678ef901234',
822
+ * });
843
823
  * ```
824
+ */
825
+ attachTag(id, params, options) {
826
+ const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
827
+ return this._client.post(path `/v2/conversations/${id}/tags`, {
828
+ body,
829
+ ...options,
830
+ headers: buildHeaders([
831
+ {
832
+ ...(featurebaseVersion?.toString() != null ?
833
+ { 'Featurebase-Version': featurebaseVersion?.toString() }
834
+ : undefined),
835
+ },
836
+ options?.headers,
837
+ ]),
838
+ });
839
+ }
840
+ /**
841
+ * Removes a workspace tag from a conversation.
844
842
  *
845
- * ### Example Admin Note (Internal)
843
+ * This endpoint requires the `actingAdminId` of the admin on whose behalf the
844
+ * mutation is recorded.
846
845
  *
847
- * ```json
848
- * {
849
- * "type": "admin",
850
- * "id": "507f1f77bcf86cd799439011",
851
- * "bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
852
- * "messageType": "note"
853
- * }
854
- * ```
846
+ * ### Path Parameters
855
847
  *
856
- * ### Example Response
848
+ * - `id` - The conversation ID (short ID)
849
+ * - `tagId` - The Featurebase tag ID to remove
850
+ *
851
+ * ### Request Body
852
+ *
853
+ * | Field | Type | Required | Description |
854
+ * | --------------- | ------ | -------- | ------------------------------------------------------------------------ |
855
+ * | `actingAdminId` | string | Yes | The admin performing the mutation. Must be a member of the organization. |
856
+ *
857
+ * ### Behavior
858
+ *
859
+ * Featurebase resolves the latest taggable reply/message in the conversation and
860
+ * records the tag removal against that part so audit metadata remains
861
+ * deterministic.
862
+ *
863
+ * ### Response
864
+ *
865
+ * Returns the affected tag payload with the most relevant attachment metadata
866
+ * available for that relationship.
867
+ *
868
+ * ### Example Request
857
869
  *
858
870
  * ```json
859
871
  * {
860
- * "object": "conversation_part",
861
- * "id": "3",
862
- * "partType": "user_msg",
863
- * "bodyHtml": "<p>Thank you for your help!</p>",
864
- * "bodyMarkdown": "Thank you for your help!",
865
- * "author": {
866
- * "type": "customer",
867
- * "id": "676f0f6765bdaa7d7d760f88",
868
- * "name": "John Doe",
869
- * "email": "john@example.com"
870
- * },
871
- * "channel": "desktop",
872
- * "createdAt": "2025-01-15T10:40:00.000Z",
873
- * "updatedAt": "2025-01-15T10:40:00.000Z"
872
+ * "actingAdminId": "507f1f77bcf86cd799439011"
874
873
  * }
875
874
  * ```
876
875
  *
@@ -880,17 +879,19 @@ export class Conversations extends APIResource {
880
879
  *
881
880
  * @example
882
881
  * ```ts
883
- * const conversationPart =
884
- * await client.support.conversations.reply('12345', {
885
- * bodyMarkdown: 'Thank you for your help!',
886
- * messageType: 'reply',
887
- * type: 'contact',
888
- * });
882
+ * const attachedConversationTag =
883
+ * await client.support.conversations.detachTag(
884
+ * '67ec1234abcd5678ef901234',
885
+ * {
886
+ * id: '12345',
887
+ * actingAdminId: '507f1f77bcf86cd799439011',
888
+ * },
889
+ * );
889
890
  * ```
890
891
  */
891
- reply(id, params, options) {
892
- const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
893
- return this._client.post(path `/v2/conversations/${id}/reply`, {
892
+ detachTag(tagID, params, options) {
893
+ const { id, 'Featurebase-Version': featurebaseVersion, ...body } = params;
894
+ return this._client.delete(path `/v2/conversations/${id}/tags/${tagID}`, {
894
895
  body,
895
896
  ...options,
896
897
  headers: buildHeaders([