featurebase-node 0.14.2 → 0.15.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 (368) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/client.d.mts +5 -5
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +5 -5
  5. package/client.d.ts.map +1 -1
  6. package/package.json +1 -1
  7. package/resources/audit-logs.d.mts +3 -3
  8. package/resources/audit-logs.d.mts.map +1 -1
  9. package/resources/audit-logs.d.ts +3 -3
  10. package/resources/audit-logs.d.ts.map +1 -1
  11. package/resources/changelogs/changelogs.d.mts +116 -116
  12. package/resources/changelogs/changelogs.d.mts.map +1 -1
  13. package/resources/changelogs/changelogs.d.ts +116 -116
  14. package/resources/changelogs/changelogs.d.ts.map +1 -1
  15. package/resources/changelogs/changelogs.js +74 -74
  16. package/resources/changelogs/changelogs.js.map +1 -1
  17. package/resources/changelogs/changelogs.mjs +74 -74
  18. package/resources/changelogs/changelogs.mjs.map +1 -1
  19. package/resources/changelogs/index.d.mts +1 -1
  20. package/resources/changelogs/index.d.mts.map +1 -1
  21. package/resources/changelogs/index.d.ts +1 -1
  22. package/resources/changelogs/index.d.ts.map +1 -1
  23. package/resources/changelogs/subscribers.d.mts +3 -3
  24. package/resources/changelogs/subscribers.d.mts.map +1 -1
  25. package/resources/changelogs/subscribers.d.ts +3 -3
  26. package/resources/changelogs/subscribers.d.ts.map +1 -1
  27. package/resources/conversation-attributes.d.mts +17 -17
  28. package/resources/conversation-attributes.d.mts.map +1 -1
  29. package/resources/conversation-attributes.d.ts +17 -17
  30. package/resources/conversation-attributes.d.ts.map +1 -1
  31. package/resources/conversation-attributes.js +19 -19
  32. package/resources/conversation-attributes.js.map +1 -1
  33. package/resources/conversation-attributes.mjs +19 -19
  34. package/resources/conversation-attributes.mjs.map +1 -1
  35. package/resources/feedback/boards.d.mts +19 -19
  36. package/resources/feedback/boards.d.mts.map +1 -1
  37. package/resources/feedback/boards.d.ts +19 -19
  38. package/resources/feedback/boards.d.ts.map +1 -1
  39. package/resources/feedback/boards.js +20 -20
  40. package/resources/feedback/boards.js.map +1 -1
  41. package/resources/feedback/boards.mjs +20 -20
  42. package/resources/feedback/boards.mjs.map +1 -1
  43. package/resources/feedback/comments.d.mts +113 -113
  44. package/resources/feedback/comments.d.mts.map +1 -1
  45. package/resources/feedback/comments.d.ts +113 -113
  46. package/resources/feedback/comments.d.ts.map +1 -1
  47. package/resources/feedback/comments.js +93 -93
  48. package/resources/feedback/comments.js.map +1 -1
  49. package/resources/feedback/comments.mjs +93 -93
  50. package/resources/feedback/comments.mjs.map +1 -1
  51. package/resources/feedback/custom-fields.d.mts +36 -36
  52. package/resources/feedback/custom-fields.d.mts.map +1 -1
  53. package/resources/feedback/custom-fields.d.ts +36 -36
  54. package/resources/feedback/custom-fields.d.ts.map +1 -1
  55. package/resources/feedback/custom-fields.js +36 -36
  56. package/resources/feedback/custom-fields.js.map +1 -1
  57. package/resources/feedback/custom-fields.mjs +36 -36
  58. package/resources/feedback/custom-fields.mjs.map +1 -1
  59. package/resources/feedback/feedback.d.mts +6 -6
  60. package/resources/feedback/feedback.d.mts.map +1 -1
  61. package/resources/feedback/feedback.d.ts +6 -6
  62. package/resources/feedback/feedback.d.ts.map +1 -1
  63. package/resources/feedback/feedback.js.map +1 -1
  64. package/resources/feedback/feedback.mjs.map +1 -1
  65. package/resources/feedback/index.d.mts +5 -5
  66. package/resources/feedback/index.d.mts.map +1 -1
  67. package/resources/feedback/index.d.ts +5 -5
  68. package/resources/feedback/index.d.ts.map +1 -1
  69. package/resources/feedback/index.js.map +1 -1
  70. package/resources/feedback/index.mjs.map +1 -1
  71. package/resources/feedback/post-statuses.d.mts +20 -20
  72. package/resources/feedback/post-statuses.d.mts.map +1 -1
  73. package/resources/feedback/post-statuses.d.ts +20 -20
  74. package/resources/feedback/post-statuses.d.ts.map +1 -1
  75. package/resources/feedback/post-statuses.js +23 -23
  76. package/resources/feedback/post-statuses.js.map +1 -1
  77. package/resources/feedback/post-statuses.mjs +23 -23
  78. package/resources/feedback/post-statuses.mjs.map +1 -1
  79. package/resources/feedback/posts/index.d.mts +1 -1
  80. package/resources/feedback/posts/index.d.mts.map +1 -1
  81. package/resources/feedback/posts/index.d.ts +1 -1
  82. package/resources/feedback/posts/index.d.ts.map +1 -1
  83. package/resources/feedback/posts/index.js.map +1 -1
  84. package/resources/feedback/posts/index.mjs.map +1 -1
  85. package/resources/feedback/posts/posts.d.mts +169 -102
  86. package/resources/feedback/posts/posts.d.mts.map +1 -1
  87. package/resources/feedback/posts/posts.d.ts +169 -102
  88. package/resources/feedback/posts/posts.d.ts.map +1 -1
  89. package/resources/feedback/posts/posts.js +144 -75
  90. package/resources/feedback/posts/posts.js.map +1 -1
  91. package/resources/feedback/posts/posts.mjs +144 -75
  92. package/resources/feedback/posts/posts.mjs.map +1 -1
  93. package/resources/feedback/posts/voters.d.mts +3 -3
  94. package/resources/feedback/posts/voters.d.mts.map +1 -1
  95. package/resources/feedback/posts/voters.d.ts +3 -3
  96. package/resources/feedback/posts/voters.d.ts.map +1 -1
  97. package/resources/help-center/articles.d.mts +213 -97
  98. package/resources/help-center/articles.d.mts.map +1 -1
  99. package/resources/help-center/articles.d.ts +213 -97
  100. package/resources/help-center/articles.d.ts.map +1 -1
  101. package/resources/help-center/articles.js +73 -73
  102. package/resources/help-center/articles.js.map +1 -1
  103. package/resources/help-center/articles.mjs +73 -73
  104. package/resources/help-center/articles.mjs.map +1 -1
  105. package/resources/help-center/collections.d.mts +158 -71
  106. package/resources/help-center/collections.d.mts.map +1 -1
  107. package/resources/help-center/collections.d.ts +158 -71
  108. package/resources/help-center/collections.d.ts.map +1 -1
  109. package/resources/help-center/collections.js +65 -65
  110. package/resources/help-center/collections.js.map +1 -1
  111. package/resources/help-center/collections.mjs +65 -65
  112. package/resources/help-center/collections.mjs.map +1 -1
  113. package/resources/help-center/help-center.d.mts +4 -4
  114. package/resources/help-center/help-center.d.mts.map +1 -1
  115. package/resources/help-center/help-center.d.ts +4 -4
  116. package/resources/help-center/help-center.d.ts.map +1 -1
  117. package/resources/help-center/help-centers.d.mts +77 -48
  118. package/resources/help-center/help-centers.d.mts.map +1 -1
  119. package/resources/help-center/help-centers.d.ts +77 -48
  120. package/resources/help-center/help-centers.d.ts.map +1 -1
  121. package/resources/help-center/help-centers.js +43 -43
  122. package/resources/help-center/help-centers.js.map +1 -1
  123. package/resources/help-center/help-centers.mjs +43 -43
  124. package/resources/help-center/help-centers.mjs.map +1 -1
  125. package/resources/help-center/index.d.mts +4 -4
  126. package/resources/help-center/index.d.mts.map +1 -1
  127. package/resources/help-center/index.d.ts +4 -4
  128. package/resources/help-center/index.d.ts.map +1 -1
  129. package/resources/help-center/redirect-rules.d.mts +124 -124
  130. package/resources/help-center/redirect-rules.d.mts.map +1 -1
  131. package/resources/help-center/redirect-rules.d.ts +124 -124
  132. package/resources/help-center/redirect-rules.d.ts.map +1 -1
  133. package/resources/help-center/redirect-rules.js +112 -112
  134. package/resources/help-center/redirect-rules.js.map +1 -1
  135. package/resources/help-center/redirect-rules.mjs +112 -112
  136. package/resources/help-center/redirect-rules.mjs.map +1 -1
  137. package/resources/index.d.mts +5 -5
  138. package/resources/index.d.mts.map +1 -1
  139. package/resources/index.d.ts +5 -5
  140. package/resources/index.d.ts.map +1 -1
  141. package/resources/organization/admins.d.mts +26 -26
  142. package/resources/organization/admins.d.mts.map +1 -1
  143. package/resources/organization/admins.d.ts +26 -26
  144. package/resources/organization/admins.d.ts.map +1 -1
  145. package/resources/organization/admins.js +25 -25
  146. package/resources/organization/admins.js.map +1 -1
  147. package/resources/organization/admins.mjs +25 -25
  148. package/resources/organization/admins.mjs.map +1 -1
  149. package/resources/organization/brands.d.mts +52 -52
  150. package/resources/organization/brands.d.mts.map +1 -1
  151. package/resources/organization/brands.d.ts +52 -52
  152. package/resources/organization/brands.d.ts.map +1 -1
  153. package/resources/organization/brands.js +54 -54
  154. package/resources/organization/brands.js.map +1 -1
  155. package/resources/organization/brands.mjs +54 -54
  156. package/resources/organization/brands.mjs.map +1 -1
  157. package/resources/organization/index.d.mts +3 -3
  158. package/resources/organization/index.d.mts.map +1 -1
  159. package/resources/organization/index.d.ts +3 -3
  160. package/resources/organization/index.d.ts.map +1 -1
  161. package/resources/organization/organization.d.mts +3 -3
  162. package/resources/organization/organization.d.mts.map +1 -1
  163. package/resources/organization/organization.d.ts +3 -3
  164. package/resources/organization/organization.d.ts.map +1 -1
  165. package/resources/organization/teams.d.mts +47 -47
  166. package/resources/organization/teams.d.mts.map +1 -1
  167. package/resources/organization/teams.d.ts +47 -47
  168. package/resources/organization/teams.d.ts.map +1 -1
  169. package/resources/organization/teams.js +44 -44
  170. package/resources/organization/teams.js.map +1 -1
  171. package/resources/organization/teams.mjs +44 -44
  172. package/resources/organization/teams.mjs.map +1 -1
  173. package/resources/reports.d.mts +347 -180
  174. package/resources/reports.d.mts.map +1 -1
  175. package/resources/reports.d.ts +347 -180
  176. package/resources/reports.d.ts.map +1 -1
  177. package/resources/reports.js +124 -99
  178. package/resources/reports.js.map +1 -1
  179. package/resources/reports.mjs +124 -99
  180. package/resources/reports.mjs.map +1 -1
  181. package/resources/support/conversation-tags.d.mts +43 -43
  182. package/resources/support/conversation-tags.d.mts.map +1 -1
  183. package/resources/support/conversation-tags.d.ts +43 -43
  184. package/resources/support/conversation-tags.d.ts.map +1 -1
  185. package/resources/support/conversation-tags.js +32 -32
  186. package/resources/support/conversation-tags.js.map +1 -1
  187. package/resources/support/conversation-tags.mjs +32 -32
  188. package/resources/support/conversation-tags.mjs.map +1 -1
  189. package/resources/support/conversations/conversations.d.mts +402 -351
  190. package/resources/support/conversations/conversations.d.mts.map +1 -1
  191. package/resources/support/conversations/conversations.d.ts +402 -351
  192. package/resources/support/conversations/conversations.d.ts.map +1 -1
  193. package/resources/support/conversations/conversations.js +340 -295
  194. package/resources/support/conversations/conversations.js.map +1 -1
  195. package/resources/support/conversations/conversations.mjs +340 -295
  196. package/resources/support/conversations/conversations.mjs.map +1 -1
  197. package/resources/support/conversations/index.d.mts +1 -1
  198. package/resources/support/conversations/index.d.mts.map +1 -1
  199. package/resources/support/conversations/index.d.ts +1 -1
  200. package/resources/support/conversations/index.d.ts.map +1 -1
  201. package/resources/support/conversations/participants.d.mts +2 -2
  202. package/resources/support/conversations/participants.d.mts.map +1 -1
  203. package/resources/support/conversations/participants.d.ts +2 -2
  204. package/resources/support/conversations/participants.d.ts.map +1 -1
  205. package/resources/support/index.d.mts +3 -3
  206. package/resources/support/index.d.mts.map +1 -1
  207. package/resources/support/index.d.ts +3 -3
  208. package/resources/support/index.d.ts.map +1 -1
  209. package/resources/support/support.d.mts +3 -3
  210. package/resources/support/support.d.mts.map +1 -1
  211. package/resources/support/support.d.ts +3 -3
  212. package/resources/support/support.d.ts.map +1 -1
  213. package/resources/support/tickets/categories.d.mts +20 -20
  214. package/resources/support/tickets/categories.d.mts.map +1 -1
  215. package/resources/support/tickets/categories.d.ts +20 -20
  216. package/resources/support/tickets/categories.d.ts.map +1 -1
  217. package/resources/support/tickets/categories.js +25 -25
  218. package/resources/support/tickets/categories.js.map +1 -1
  219. package/resources/support/tickets/categories.mjs +25 -25
  220. package/resources/support/tickets/categories.mjs.map +1 -1
  221. package/resources/support/tickets/custom-fields.d.mts +22 -22
  222. package/resources/support/tickets/custom-fields.d.mts.map +1 -1
  223. package/resources/support/tickets/custom-fields.d.ts +22 -22
  224. package/resources/support/tickets/custom-fields.d.ts.map +1 -1
  225. package/resources/support/tickets/custom-fields.js +19 -19
  226. package/resources/support/tickets/custom-fields.js.map +1 -1
  227. package/resources/support/tickets/custom-fields.mjs +19 -19
  228. package/resources/support/tickets/custom-fields.mjs.map +1 -1
  229. package/resources/support/tickets/index.d.mts +4 -4
  230. package/resources/support/tickets/index.d.mts.map +1 -1
  231. package/resources/support/tickets/index.d.ts +4 -4
  232. package/resources/support/tickets/index.d.ts.map +1 -1
  233. package/resources/support/tickets/statuses.d.mts +19 -19
  234. package/resources/support/tickets/statuses.d.mts.map +1 -1
  235. package/resources/support/tickets/statuses.d.ts +19 -19
  236. package/resources/support/tickets/statuses.d.ts.map +1 -1
  237. package/resources/support/tickets/statuses.js +21 -21
  238. package/resources/support/tickets/statuses.js.map +1 -1
  239. package/resources/support/tickets/statuses.mjs +21 -21
  240. package/resources/support/tickets/statuses.mjs.map +1 -1
  241. package/resources/support/tickets/tickets.d.mts +75 -75
  242. package/resources/support/tickets/tickets.d.mts.map +1 -1
  243. package/resources/support/tickets/tickets.d.ts +75 -75
  244. package/resources/support/tickets/tickets.d.ts.map +1 -1
  245. package/resources/support/tickets/tickets.js +44 -44
  246. package/resources/support/tickets/tickets.js.map +1 -1
  247. package/resources/support/tickets/tickets.mjs +44 -44
  248. package/resources/support/tickets/tickets.mjs.map +1 -1
  249. package/resources/surveys.d.mts +43 -43
  250. package/resources/surveys.d.mts.map +1 -1
  251. package/resources/surveys.d.ts +43 -43
  252. package/resources/surveys.d.ts.map +1 -1
  253. package/resources/surveys.js +44 -44
  254. package/resources/surveys.js.map +1 -1
  255. package/resources/surveys.mjs +44 -44
  256. package/resources/surveys.mjs.map +1 -1
  257. package/resources/users/companies/companies.d.mts +121 -130
  258. package/resources/users/companies/companies.d.mts.map +1 -1
  259. package/resources/users/companies/companies.d.ts +121 -130
  260. package/resources/users/companies/companies.d.ts.map +1 -1
  261. package/resources/users/companies/companies.js +125 -125
  262. package/resources/users/companies/companies.js.map +1 -1
  263. package/resources/users/companies/companies.mjs +125 -125
  264. package/resources/users/companies/companies.mjs.map +1 -1
  265. package/resources/users/companies/contacts.d.mts +3 -3
  266. package/resources/users/companies/contacts.d.mts.map +1 -1
  267. package/resources/users/companies/contacts.d.ts +3 -3
  268. package/resources/users/companies/contacts.d.ts.map +1 -1
  269. package/resources/users/companies/index.d.mts +1 -1
  270. package/resources/users/companies/index.d.mts.map +1 -1
  271. package/resources/users/companies/index.d.ts +1 -1
  272. package/resources/users/companies/index.d.ts.map +1 -1
  273. package/resources/users/contacts/by-user-id/by-user-id.d.mts +2 -2
  274. package/resources/users/contacts/by-user-id/by-user-id.d.mts.map +1 -1
  275. package/resources/users/contacts/by-user-id/by-user-id.d.ts +2 -2
  276. package/resources/users/contacts/by-user-id/by-user-id.d.ts.map +1 -1
  277. package/resources/users/contacts/by-user-id/email-preferences.d.mts +2 -2
  278. package/resources/users/contacts/by-user-id/email-preferences.d.mts.map +1 -1
  279. package/resources/users/contacts/by-user-id/email-preferences.d.ts +2 -2
  280. package/resources/users/contacts/by-user-id/email-preferences.d.ts.map +1 -1
  281. package/resources/users/contacts/contacts.d.mts +249 -235
  282. package/resources/users/contacts/contacts.d.mts.map +1 -1
  283. package/resources/users/contacts/contacts.d.ts +249 -235
  284. package/resources/users/contacts/contacts.d.ts.map +1 -1
  285. package/resources/users/contacts/contacts.js +211 -184
  286. package/resources/users/contacts/contacts.js.map +1 -1
  287. package/resources/users/contacts/contacts.mjs +211 -184
  288. package/resources/users/contacts/contacts.mjs.map +1 -1
  289. package/resources/users/contacts/email-preferences.d.mts +2 -2
  290. package/resources/users/contacts/email-preferences.d.mts.map +1 -1
  291. package/resources/users/contacts/email-preferences.d.ts +2 -2
  292. package/resources/users/contacts/email-preferences.d.ts.map +1 -1
  293. package/resources/users/contacts/index.d.mts +1 -1
  294. package/resources/users/contacts/index.d.mts.map +1 -1
  295. package/resources/users/contacts/index.d.ts +1 -1
  296. package/resources/users/contacts/index.d.ts.map +1 -1
  297. package/resources/users/index.d.mts +2 -2
  298. package/resources/users/index.d.mts.map +1 -1
  299. package/resources/users/index.d.ts +2 -2
  300. package/resources/users/index.d.ts.map +1 -1
  301. package/resources/users/users.d.mts +2 -2
  302. package/resources/users/users.d.mts.map +1 -1
  303. package/resources/users/users.d.ts +2 -2
  304. package/resources/users/users.d.ts.map +1 -1
  305. package/resources/webhooks.d.mts +83 -83
  306. package/resources/webhooks.d.mts.map +1 -1
  307. package/resources/webhooks.d.ts +83 -83
  308. package/resources/webhooks.d.ts.map +1 -1
  309. package/resources/webhooks.js +77 -77
  310. package/resources/webhooks.js.map +1 -1
  311. package/resources/webhooks.mjs +77 -77
  312. package/resources/webhooks.mjs.map +1 -1
  313. package/src/client.ts +6 -6
  314. package/src/resources/audit-logs.ts +7 -1
  315. package/src/resources/changelogs/changelogs.ts +320 -175
  316. package/src/resources/changelogs/index.ts +1 -1
  317. package/src/resources/changelogs/subscribers.ts +31 -2
  318. package/src/resources/conversation-attributes.ts +34 -34
  319. package/src/resources/feedback/boards.ts +30 -30
  320. package/src/resources/feedback/comments.ts +137 -137
  321. package/src/resources/feedback/custom-fields.ts +46 -46
  322. package/src/resources/feedback/feedback.ts +9 -5
  323. package/src/resources/feedback/index.ts +7 -5
  324. package/src/resources/feedback/post-statuses.ts +33 -33
  325. package/src/resources/feedback/posts/index.ts +3 -1
  326. package/src/resources/feedback/posts/posts.ts +232 -128
  327. package/src/resources/feedback/posts/voters.ts +3 -3
  328. package/src/resources/help-center/articles.ts +631 -109
  329. package/src/resources/help-center/collections.ts +349 -88
  330. package/src/resources/help-center/help-center.ts +5 -5
  331. package/src/resources/help-center/help-centers.ts +202 -57
  332. package/src/resources/help-center/index.ts +5 -5
  333. package/src/resources/help-center/redirect-rules.ts +294 -178
  334. package/src/resources/index.ts +6 -6
  335. package/src/resources/organization/admins.ts +36 -36
  336. package/src/resources/organization/brands.ts +68 -68
  337. package/src/resources/organization/index.ts +3 -3
  338. package/src/resources/organization/organization.ts +3 -3
  339. package/src/resources/organization/teams.ts +54 -54
  340. package/src/resources/reports.ts +454 -232
  341. package/src/resources/support/conversation-tags.ts +62 -62
  342. package/src/resources/support/conversations/conversations.ts +489 -438
  343. package/src/resources/support/conversations/index.ts +4 -4
  344. package/src/resources/support/conversations/participants.ts +2 -2
  345. package/src/resources/support/index.ts +7 -7
  346. package/src/resources/support/support.ts +7 -7
  347. package/src/resources/support/tickets/categories.ts +35 -35
  348. package/src/resources/support/tickets/custom-fields.ts +29 -29
  349. package/src/resources/support/tickets/index.ts +4 -4
  350. package/src/resources/support/tickets/statuses.ts +31 -31
  351. package/src/resources/support/tickets/tickets.ts +101 -101
  352. package/src/resources/surveys.ts +60 -60
  353. package/src/resources/users/companies/companies.ts +158 -172
  354. package/src/resources/users/companies/contacts.ts +3 -3
  355. package/src/resources/users/companies/index.ts +2 -2
  356. package/src/resources/users/contacts/by-user-id/by-user-id.ts +2 -2
  357. package/src/resources/users/contacts/by-user-id/email-preferences.ts +2 -2
  358. package/src/resources/users/contacts/contacts.ts +284 -280
  359. package/src/resources/users/contacts/email-preferences.ts +2 -2
  360. package/src/resources/users/contacts/index.ts +3 -3
  361. package/src/resources/users/index.ts +5 -5
  362. package/src/resources/users/users.ts +5 -5
  363. package/src/resources/webhooks.ts +106 -100
  364. package/src/version.ts +1 -1
  365. package/version.d.mts +1 -1
  366. package/version.d.ts +1 -1
  367. package/version.js +1 -1
  368. package/version.mjs +1 -1
@@ -19,95 +19,6 @@ import { path } from '../../../internal/utils/path';
19
19
  export class Conversations extends APIResource {
20
20
  participants: ParticipantsAPI.Participants = new ParticipantsAPI.Participants(this._client);
21
21
 
22
- /**
23
- * Returns a list of conversations in your organization using cursor-based
24
- * pagination.
25
- *
26
- * ### Query Parameters
27
- *
28
- * - `limit` - Number of conversations to return (1-100, default 10)
29
- * - `cursor` - Cursor from previous response for pagination
30
- * - `tagIds` - Optional tag filter as a comma-separated list of tag IDs. Matches
31
- * conversations that contain all of the provided tags.
32
- *
33
- * ### Response Format
34
- *
35
- * Returns a list object with:
36
- *
37
- * - `object` - Always "list"
38
- * - `data` - Array of conversation objects
39
- * - `nextCursor` - Cursor for the next page, or null if no more results
40
- *
41
- * ### Conversation Object
42
- *
43
- * Each conversation includes:
44
- *
45
- * - `id` - Unique conversation identifier (short ID)
46
- * - `title` - Conversation title
47
- * - `state` - Current state ("open", "closed", or "snoozed")
48
- * - `priority` - Whether the conversation is marked as priority
49
- * - `adminAssigneeId` - ID of assigned admin (if any)
50
- * - `teamAssigneeId` - ID of assigned team (if any)
51
- * - `tags` - Current tags applied anywhere in the conversation
52
- * - `participants` - Array of participants
53
- * - `source` - Information about the first message
54
- * - `createdAt` - Creation timestamp
55
- * - `updatedAt` - Last update timestamp
56
- *
57
- * ### Example
58
- *
59
- * ```json
60
- * {
61
- * "object": "list",
62
- * "data": [
63
- * {
64
- * "object": "conversation",
65
- * "id": "12345",
66
- * "title": "Question about pricing",
67
- * "state": "open",
68
- * "priority": false,
69
- * "adminAssigneeId": null,
70
- * "participants": [
71
- * { "type": "customer", "id": "676f0f6765bdaa7d7d760f88" }
72
- * ],
73
- * ...
74
- * }
75
- * ],
76
- * "nextCursor": "eyJpZCI6IjEyMzQ1In0="
77
- * }
78
- * ```
79
- *
80
- * ### Version Availability
81
- *
82
- * This endpoint is only available in API version 2026-01-01.nova and newer.
83
- *
84
- * @example
85
- * ```ts
86
- * // Automatically fetches more pages as needed.
87
- * for await (const conversation of client.support.conversations.list()) {
88
- * // ...
89
- * }
90
- * ```
91
- */
92
- list(
93
- params: ConversationListParams | null | undefined = {},
94
- options?: RequestOptions,
95
- ): PagePromise<ConversationsCursorPage, Conversation> {
96
- const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
97
- return this._client.getAPIList('/v2/conversations', CursorPage<Conversation>, {
98
- query,
99
- ...options,
100
- headers: buildHeaders([
101
- {
102
- ...(featurebaseVersion?.toString() != null ?
103
- { 'Featurebase-Version': featurebaseVersion?.toString() }
104
- : undefined),
105
- },
106
- options?.headers,
107
- ]),
108
- });
109
- }
110
-
111
22
  /**
112
23
  * Creates a new conversation. Supports both contact-initiated (customer/lead) and
113
24
  * admin-initiated (outreach) conversations.
@@ -381,59 +292,6 @@ export class Conversations extends APIResource {
381
292
  });
382
293
  }
383
294
 
384
- /**
385
- * Permanently deletes a conversation by its short ID.
386
- *
387
- * ### Path Parameters
388
- *
389
- * - `id` - The conversation short ID (numeric)
390
- *
391
- * ### Response
392
- *
393
- * Returns a deletion confirmation object:
394
- *
395
- * ```json
396
- * {
397
- * "id": "12345",
398
- * "object": "conversation",
399
- * "deleted": true
400
- * }
401
- * ```
402
- *
403
- * ### Caution
404
- *
405
- * This operation is **irreversible**. The conversation and all its messages will
406
- * be permanently deleted.
407
- *
408
- * ### Version Availability
409
- *
410
- * This endpoint is only available in API version 2026-01-01.nova and newer.
411
- *
412
- * @example
413
- * ```ts
414
- * const conversation =
415
- * await client.support.conversations.delete('12345');
416
- * ```
417
- */
418
- delete(
419
- id: string,
420
- params: ConversationDeleteParams | null | undefined = {},
421
- options?: RequestOptions,
422
- ): APIPromise<ConversationDeleteResponse> {
423
- const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
424
- return this._client.delete(path`/v2/conversations/${id}`, {
425
- ...options,
426
- headers: buildHeaders([
427
- {
428
- ...(featurebaseVersion?.toString() != null ?
429
- { 'Featurebase-Version': featurebaseVersion?.toString() }
430
- : undefined),
431
- },
432
- options?.headers,
433
- ]),
434
- });
435
- }
436
-
437
295
  /**
438
296
  * Updates a conversation's properties. Supports partial updates - only provided
439
297
  * fields will be updated.
@@ -578,118 +436,82 @@ export class Conversations extends APIResource {
578
436
  }
579
437
 
580
438
  /**
581
- * Adds a reply to an existing conversation. Supports both contact (customer/lead)
582
- * and admin replies.
583
- *
584
- * ### Path Parameters
585
- *
586
- * - `id` - The conversation ID (short ID)
587
- *
588
- * ### Request Body
439
+ * Returns a list of conversations in your organization using cursor-based
440
+ * pagination.
589
441
  *
590
- * The request body varies based on who is sending the reply:
442
+ * ### Query Parameters
591
443
  *
592
- * #### Contact Reply (customer/lead)
444
+ * - `limit` - Number of conversations to return (1-100, default 10)
445
+ * - `cursor` - Cursor from previous response for pagination
446
+ * - `tagIds` - Optional tag filter as a comma-separated list of tag IDs. Matches
447
+ * conversations that contain all of the provided tags.
593
448
  *
594
- * | Field | Type | Required | Description |
595
- * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
596
- * | `type` | string | Yes | Must be "contact" |
597
- * | `userId` | string | No\* | External user ID from your system |
598
- * | `id` | string | No\* | Featurebase contact ID (24-character ObjectId) |
599
- * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
600
- * | `messageType` | string | Yes | Must be "reply" |
601
- * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
449
+ * ### Response Format
602
450
  *
603
- * \*At least one of `userId` or `id` is required.
451
+ * Returns a list object with:
604
452
  *
605
- * #### Admin Reply
453
+ * - `object` - Always "list"
454
+ * - `data` - Array of conversation objects
455
+ * - `nextCursor` - Cursor for the next page, or null if no more results
606
456
  *
607
- * | Field | Type | Required | Description |
608
- * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
609
- * | `type` | string | Yes | Must be "admin" |
610
- * | `id` | string | Yes | Featurebase admin ID (24-character ObjectId) |
611
- * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
612
- * | `messageType` | string | Yes | "reply" for customer-visible reply, "note" for internal note |
613
- * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
457
+ * ### Conversation Object
614
458
  *
615
- * ### Response
459
+ * Each conversation includes:
616
460
  *
617
- * Returns the created conversation part object with a **201 Created** status. The
618
- * response includes both `bodyHtml` (with signed image URLs) and `bodyMarkdown`
619
- * fields.
461
+ * - `id` - Unique conversation identifier (short ID)
462
+ * - `title` - Conversation title
463
+ * - `state` - Current state ("open", "closed", or "snoozed")
464
+ * - `priority` - Whether the conversation is marked as priority
465
+ * - `adminAssigneeId` - ID of assigned admin (if any)
466
+ * - `teamAssigneeId` - ID of assigned team (if any)
467
+ * - `tags` - Current tags applied anywhere in the conversation
468
+ * - `participants` - Array of participants
469
+ * - `source` - Information about the first message
470
+ * - `createdAt` - Creation timestamp
471
+ * - `updatedAt` - Last update timestamp
620
472
  *
621
- * ### Example Contact Reply
473
+ * ### Example
622
474
  *
623
475
  * ```json
624
476
  * {
625
- * "type": "contact",
626
- * "userId": "user_123",
627
- * "bodyMarkdown": "Thank you for your help!",
628
- * "messageType": "reply"
477
+ * "object": "list",
478
+ * "data": [
479
+ * {
480
+ * "object": "conversation",
481
+ * "id": "12345",
482
+ * "title": "Question about pricing",
483
+ * "state": "open",
484
+ * "priority": false,
485
+ * "adminAssigneeId": null,
486
+ * "participants": [
487
+ * { "type": "customer", "id": "676f0f6765bdaa7d7d760f88" }
488
+ * ],
489
+ * ...
490
+ * }
491
+ * ],
492
+ * "nextCursor": "eyJpZCI6IjEyMzQ1In0="
629
493
  * }
630
494
  * ```
631
495
  *
632
- * ### Example Admin Reply
633
- *
634
- * ```json
635
- * {
636
- * "type": "admin",
637
- * "id": "507f1f77bcf86cd799439011",
638
- * "bodyMarkdown": "I'm happy to help! Here's what you need to do...",
639
- * "messageType": "reply"
640
- * }
641
- * ```
496
+ * ### Version Availability
642
497
  *
643
- * ### Example Admin Note (Internal)
498
+ * This endpoint is only available in API version 2026-01-01.nova and newer.
644
499
  *
645
- * ```json
646
- * {
647
- * "type": "admin",
648
- * "id": "507f1f77bcf86cd799439011",
649
- * "bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
650
- * "messageType": "note"
500
+ * @example
501
+ * ```ts
502
+ * // Automatically fetches more pages as needed.
503
+ * for await (const conversation of client.support.conversations.list()) {
504
+ * // ...
651
505
  * }
652
506
  * ```
653
- *
654
- * ### Example Response
655
- *
656
- * ```json
657
- * {
658
- * "object": "conversation_part",
659
- * "id": "3",
660
- * "partType": "user_msg",
661
- * "bodyHtml": "<p>Thank you for your help!</p>",
662
- * "bodyMarkdown": "Thank you for your help!",
663
- * "author": {
664
- * "type": "customer",
665
- * "id": "676f0f6765bdaa7d7d760f88",
666
- * "name": "John Doe",
667
- * "email": "john@example.com"
668
- * },
669
- * "channel": "desktop",
670
- * "createdAt": "2025-01-15T10:40:00.000Z",
671
- * "updatedAt": "2025-01-15T10:40:00.000Z"
672
- * }
673
- * ```
674
- *
675
- * ### Version Availability
676
- *
677
- * This endpoint is only available in API version 2026-01-01.nova and newer.
678
- *
679
- * @example
680
- * ```ts
681
- * const conversationPart =
682
- * await client.support.conversations.reply('12345', {
683
- * bodyMarkdown: 'Thank you for your help!',
684
- * messageType: 'reply',
685
- * type: 'contact',
686
- * });
687
- * ```
688
507
  */
689
- reply(id: string, params: ConversationReplyParams, options?: RequestOptions): APIPromise<ConversationPart> {
690
- const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
691
- return this._client.post(path`/v2/conversations/${id}/reply`, {
692
- body,
508
+ list(
509
+ params: ConversationListParams | null | undefined = {},
510
+ options?: RequestOptions,
511
+ ): PagePromise<ConversationsCursorPage, Conversation> {
512
+ const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
513
+ return this._client.getAPIList('/v2/conversations', CursorPage<Conversation>, {
514
+ query,
693
515
  ...options,
694
516
  headers: buildHeaders([
695
517
  {
@@ -703,68 +525,28 @@ export class Conversations extends APIResource {
703
525
  }
704
526
 
705
527
  /**
706
- * Redacts a conversation part (message) from a conversation. Redaction permanently
707
- * removes the message content while preserving the conversation structure.
708
- *
709
- * Only human message types can be redacted:
710
- *
711
- * - `user_msg` - Messages from customers/leads
712
- * - `admin_msg` - Messages from admins
713
- * - `email_msg` - Email messages
714
- * - `bot_msg` - Bot messages
715
- *
716
- * System-generated conversation parts (assignments, status changes, etc.) cannot
717
- * be redacted.
528
+ * Permanently deletes a conversation by its short ID.
718
529
  *
719
- * ### Request Body
530
+ * ### Path Parameters
720
531
  *
721
- * | Field | Type | Required | Description |
722
- * | -------------------- | ------ | -------- | ------------------------------------------------------------------------------ |
723
- * | `type` | string | Yes | The type of item to redact. Currently only `"conversation_part"` is supported. |
724
- * | `conversationId` | string | Yes | The conversation short ID containing the part to redact |
725
- * | `conversationPartId` | string | Yes | The conversation part short ID to redact |
726
- * | `actingAdminId` | string | No | Admin ID performing the action (for attribution) |
532
+ * - `id` - The conversation short ID (numeric)
727
533
  *
728
534
  * ### Response
729
535
  *
730
- * Returns the updated conversation object.
731
- *
732
- * ### Example Request
733
- *
734
- * ```json
735
- * {
736
- * "type": "conversation_part",
737
- * "conversationId": "12345",
738
- * "conversationPartId": "67890",
739
- * "actingAdminId": "507f1f77bcf86cd799439011"
740
- * }
741
- * ```
742
- *
743
- * ### Example Response
536
+ * Returns a deletion confirmation object:
744
537
  *
745
538
  * ```json
746
539
  * {
747
- * "object": "conversation",
748
540
  * "id": "12345",
749
- * "conversationParts": [
750
- * {
751
- * "object": "conversation_part",
752
- * "id": "67890",
753
- * "partType": "user_msg",
754
- * "bodyHtml": "",
755
- * "bodyMarkdown": "",
756
- * "redacted": true,
757
- * ...
758
- * }
759
- * ],
760
- * ...
541
+ * "object": "conversation",
542
+ * "deleted": true
761
543
  * }
762
544
  * ```
763
545
  *
764
- * ### Error Cases
546
+ * ### Caution
765
547
  *
766
- * - **400 Bad Request** - Only human messages can be redacted
767
- * - **404 Not Found** - Conversation or conversation part not found
548
+ * This operation is **irreversible**. The conversation and all its messages will
549
+ * be permanently deleted.
768
550
  *
769
551
  * ### Version Availability
770
552
  *
@@ -773,17 +555,16 @@ export class Conversations extends APIResource {
773
555
  * @example
774
556
  * ```ts
775
557
  * const conversation =
776
- * await client.support.conversations.redact({
777
- * conversationId: '12345',
778
- * conversationPartId: '67890',
779
- * type: 'conversation_part',
780
- * });
558
+ * await client.support.conversations.delete('12345');
781
559
  * ```
782
560
  */
783
- redact(params: ConversationRedactParams, options?: RequestOptions): APIPromise<Conversation> {
784
- const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
785
- return this._client.post('/v2/conversations/redact', {
786
- body,
561
+ delete(
562
+ id: string,
563
+ params: ConversationDeleteParams | null | undefined = {},
564
+ options?: RequestOptions,
565
+ ): APIPromise<ConversationDeleteResponse> {
566
+ const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
567
+ return this._client.delete(path`/v2/conversations/${id}`, {
787
568
  ...options,
788
569
  headers: buildHeaders([
789
570
  {
@@ -889,16 +670,241 @@ export class Conversations extends APIResource {
889
670
  * records the tag removal against that part so audit metadata remains
890
671
  * deterministic.
891
672
  *
892
- * ### Response
673
+ * ### Response
674
+ *
675
+ * Returns the affected tag payload with the most relevant attachment metadata
676
+ * available for that relationship.
677
+ *
678
+ * ### Example Request
679
+ *
680
+ * ```json
681
+ * {
682
+ * "actingAdminId": "507f1f77bcf86cd799439011"
683
+ * }
684
+ * ```
685
+ *
686
+ * ### Version Availability
687
+ *
688
+ * This endpoint is only available in API version 2026-01-01.nova and newer.
689
+ *
690
+ * @example
691
+ * ```ts
692
+ * const attachedConversationTag =
693
+ * await client.support.conversations.detachTag(
694
+ * '67ec1234abcd5678ef901234',
695
+ * {
696
+ * id: '12345',
697
+ * actingAdminId: '507f1f77bcf86cd799439011',
698
+ * },
699
+ * );
700
+ * ```
701
+ */
702
+ detachTag(
703
+ tagID: string,
704
+ params: ConversationDetachTagParams,
705
+ options?: RequestOptions,
706
+ ): APIPromise<AttachedConversationTag> {
707
+ const { id, 'Featurebase-Version': featurebaseVersion, ...body } = params;
708
+ return this._client.delete(path`/v2/conversations/${id}/tags/${tagID}`, {
709
+ body,
710
+ ...options,
711
+ headers: buildHeaders([
712
+ {
713
+ ...(featurebaseVersion?.toString() != null ?
714
+ { 'Featurebase-Version': featurebaseVersion?.toString() }
715
+ : undefined),
716
+ },
717
+ options?.headers,
718
+ ]),
719
+ });
720
+ }
721
+
722
+ /**
723
+ * Redacts a conversation part (message) from a conversation. Redaction permanently
724
+ * removes the message content while preserving the conversation structure.
725
+ *
726
+ * Only human message types can be redacted:
727
+ *
728
+ * - `user_msg` - Messages from customers/leads
729
+ * - `admin_msg` - Messages from admins
730
+ * - `email_msg` - Email messages
731
+ * - `bot_msg` - Bot messages
732
+ *
733
+ * System-generated conversation parts (assignments, status changes, etc.) cannot
734
+ * be redacted.
735
+ *
736
+ * ### Request Body
737
+ *
738
+ * | Field | Type | Required | Description |
739
+ * | -------------------- | ------ | -------- | ------------------------------------------------------------------------------ |
740
+ * | `type` | string | Yes | The type of item to redact. Currently only `"conversation_part"` is supported. |
741
+ * | `conversationId` | string | Yes | The conversation short ID containing the part to redact |
742
+ * | `conversationPartId` | string | Yes | The conversation part short ID to redact |
743
+ * | `actingAdminId` | string | No | Admin ID performing the action (for attribution) |
744
+ *
745
+ * ### Response
746
+ *
747
+ * Returns the updated conversation object.
748
+ *
749
+ * ### Example Request
750
+ *
751
+ * ```json
752
+ * {
753
+ * "type": "conversation_part",
754
+ * "conversationId": "12345",
755
+ * "conversationPartId": "67890",
756
+ * "actingAdminId": "507f1f77bcf86cd799439011"
757
+ * }
758
+ * ```
759
+ *
760
+ * ### Example Response
761
+ *
762
+ * ```json
763
+ * {
764
+ * "object": "conversation",
765
+ * "id": "12345",
766
+ * "conversationParts": [
767
+ * {
768
+ * "object": "conversation_part",
769
+ * "id": "67890",
770
+ * "partType": "user_msg",
771
+ * "bodyHtml": "",
772
+ * "bodyMarkdown": "",
773
+ * "redacted": true,
774
+ * ...
775
+ * }
776
+ * ],
777
+ * ...
778
+ * }
779
+ * ```
780
+ *
781
+ * ### Error Cases
782
+ *
783
+ * - **400 Bad Request** - Only human messages can be redacted
784
+ * - **404 Not Found** - Conversation or conversation part not found
785
+ *
786
+ * ### Version Availability
787
+ *
788
+ * This endpoint is only available in API version 2026-01-01.nova and newer.
789
+ *
790
+ * @example
791
+ * ```ts
792
+ * const conversation =
793
+ * await client.support.conversations.redact({
794
+ * conversationId: '12345',
795
+ * conversationPartId: '67890',
796
+ * type: 'conversation_part',
797
+ * });
798
+ * ```
799
+ */
800
+ redact(params: ConversationRedactParams, options?: RequestOptions): APIPromise<Conversation> {
801
+ const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
802
+ return this._client.post('/v2/conversations/redact', {
803
+ body,
804
+ ...options,
805
+ headers: buildHeaders([
806
+ {
807
+ ...(featurebaseVersion?.toString() != null ?
808
+ { 'Featurebase-Version': featurebaseVersion?.toString() }
809
+ : undefined),
810
+ },
811
+ options?.headers,
812
+ ]),
813
+ });
814
+ }
815
+
816
+ /**
817
+ * Adds a reply to an existing conversation. Supports both contact (customer/lead)
818
+ * and admin replies.
819
+ *
820
+ * ### Path Parameters
821
+ *
822
+ * - `id` - The conversation ID (short ID)
823
+ *
824
+ * ### Request Body
825
+ *
826
+ * The request body varies based on who is sending the reply:
827
+ *
828
+ * #### Contact Reply (customer/lead)
829
+ *
830
+ * | Field | Type | Required | Description |
831
+ * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
832
+ * | `type` | string | Yes | Must be "contact" |
833
+ * | `userId` | string | No\* | External user ID from your system |
834
+ * | `id` | string | No\* | Featurebase contact ID (24-character ObjectId) |
835
+ * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
836
+ * | `messageType` | string | Yes | Must be "reply" |
837
+ * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
838
+ *
839
+ * \*At least one of `userId` or `id` is required.
840
+ *
841
+ * #### Admin Reply
842
+ *
843
+ * | Field | Type | Required | Description |
844
+ * | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
845
+ * | `type` | string | Yes | Must be "admin" |
846
+ * | `id` | string | Yes | Featurebase admin ID (24-character ObjectId) |
847
+ * | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
848
+ * | `messageType` | string | Yes | "reply" for customer-visible reply, "note" for internal note |
849
+ * | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
850
+ *
851
+ * ### Response
852
+ *
853
+ * Returns the created conversation part object with a **201 Created** status. The
854
+ * response includes both `bodyHtml` (with signed image URLs) and `bodyMarkdown`
855
+ * fields.
856
+ *
857
+ * ### Example Contact Reply
858
+ *
859
+ * ```json
860
+ * {
861
+ * "type": "contact",
862
+ * "userId": "user_123",
863
+ * "bodyMarkdown": "Thank you for your help!",
864
+ * "messageType": "reply"
865
+ * }
866
+ * ```
867
+ *
868
+ * ### Example Admin Reply
869
+ *
870
+ * ```json
871
+ * {
872
+ * "type": "admin",
873
+ * "id": "507f1f77bcf86cd799439011",
874
+ * "bodyMarkdown": "I'm happy to help! Here's what you need to do...",
875
+ * "messageType": "reply"
876
+ * }
877
+ * ```
878
+ *
879
+ * ### Example Admin Note (Internal)
893
880
  *
894
- * Returns the affected tag payload with the most relevant attachment metadata
895
- * available for that relationship.
881
+ * ```json
882
+ * {
883
+ * "type": "admin",
884
+ * "id": "507f1f77bcf86cd799439011",
885
+ * "bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
886
+ * "messageType": "note"
887
+ * }
888
+ * ```
896
889
  *
897
- * ### Example Request
890
+ * ### Example Response
898
891
  *
899
892
  * ```json
900
893
  * {
901
- * "actingAdminId": "507f1f77bcf86cd799439011"
894
+ * "object": "conversation_part",
895
+ * "id": "3",
896
+ * "partType": "user_msg",
897
+ * "bodyHtml": "<p>Thank you for your help!</p>",
898
+ * "bodyMarkdown": "Thank you for your help!",
899
+ * "author": {
900
+ * "type": "customer",
901
+ * "id": "676f0f6765bdaa7d7d760f88",
902
+ * "name": "John Doe",
903
+ * "email": "john@example.com"
904
+ * },
905
+ * "channel": "desktop",
906
+ * "createdAt": "2025-01-15T10:40:00.000Z",
907
+ * "updatedAt": "2025-01-15T10:40:00.000Z"
902
908
  * }
903
909
  * ```
904
910
  *
@@ -908,23 +914,17 @@ export class Conversations extends APIResource {
908
914
  *
909
915
  * @example
910
916
  * ```ts
911
- * const attachedConversationTag =
912
- * await client.support.conversations.detachTag(
913
- * '67ec1234abcd5678ef901234',
914
- * {
915
- * id: '12345',
916
- * actingAdminId: '507f1f77bcf86cd799439011',
917
- * },
918
- * );
917
+ * const conversationPart =
918
+ * await client.support.conversations.reply('12345', {
919
+ * bodyMarkdown: 'Thank you for your help!',
920
+ * messageType: 'reply',
921
+ * type: 'contact',
922
+ * });
919
923
  * ```
920
924
  */
921
- detachTag(
922
- tagID: string,
923
- params: ConversationDetachTagParams,
924
- options?: RequestOptions,
925
- ): APIPromise<AttachedConversationTag> {
926
- const { id, 'Featurebase-Version': featurebaseVersion, ...body } = params;
927
- return this._client.delete(path`/v2/conversations/${id}/tags/${tagID}`, {
925
+ reply(id: string, params: ConversationReplyParams, options?: RequestOptions): APIPromise<ConversationPart> {
926
+ const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
927
+ return this._client.post(path`/v2/conversations/${id}/reply`, {
928
928
  body,
929
929
  ...options,
930
930
  headers: buildHeaders([
@@ -984,18 +984,53 @@ export class Conversations extends APIResource {
984
984
  * `participant_id`, `company_id`, `created_at`) are still accepted for back-compat
985
985
  * but are deprecated — please migrate to camelCase in new code.
986
986
  *
987
- * | Field | Type | Operators |
988
- * | -------------------------- | --------------------------------------------------------------------------- | ---------------------- |
989
- * | `state` | enum (`open` / `closed` / `snoozed`) | `=`, `!=`, `IN`, `NIN` |
990
- * | `priority` | boolean | `=`, `!=` |
991
- * | `adminAssigneeId` | id or null (unassigned) | `=`, `!=`, `IN`, `NIN` |
992
- * | `teamAssigneeId` | id or null (unassigned) | `=`, `!=`, `IN`, `NIN` |
993
- * | `brandId` | id or null | `=`, `!=`, `IN`, `NIN` |
994
- * | `tagIds` | id (matches any conversation containing this tag) | `=`, `!=`, `IN`, `NIN` |
995
- * | `userId` / `participantId` | id of a conversation participant | `=`, `!=`, `IN`, `NIN` |
996
- * | `companyId` | company id (matches conversations whose participants belong to the company) | `=`, `!=`, `IN`, `NIN` |
997
- * | `mentionedAdminIds` | admin id | `=`, `!=`, `IN`, `NIN` |
998
- * | `createdAt` | unix seconds | `=`, `>`, `<` |
987
+ * | Field | Type | Operators |
988
+ * | -------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
989
+ * | `state` | enum (`open` / `closed` / `snoozed`) | `=`, `!=`, `IN`, `NIN` |
990
+ * | `priority` | boolean | `=`, `!=` |
991
+ * | `adminAssigneeId` | id or null (unassigned) | `=`, `!=`, `IN`, `NIN` |
992
+ * | `teamAssigneeId` | id or null (unassigned) | `=`, `!=`, `IN`, `NIN` |
993
+ * | `brandId` | id or null | `=`, `!=`, `IN`, `NIN` |
994
+ * | `tagIds` | id (matches any conversation containing this tag) | `=`, `!=`, `IN`, `NIN` |
995
+ * | `userId` / `participantId` | id of a conversation participant | `=`, `!=`, `IN`, `NIN` |
996
+ * | `companyId` | company id (matches conversations whose participants belong to the company) | `=`, `!=`, `IN`, `NIN` |
997
+ * | `mentionedAdminIds` | admin id | `=`, `!=`, `IN`, `NIN` |
998
+ * | `createdAt` | unix seconds | `=`, `>`, `<` |
999
+ * | `customAttributes.<attributeId>` | conversation custom attribute (see below) | `=`, `!=`, `IN`, `NIN`; plus `>`, `<`, `>=`, `<=` for `number` / `date` |
1000
+ *
1001
+ * ### Filtering by custom attributes
1002
+ *
1003
+ * Any non-archived conversation custom attribute can be used as a filter field via
1004
+ * `customAttributes.<attributeId>`, where `<attributeId>` is the attribute's `id`
1005
+ * from `GET /v2/conversation_attributes`. The accepted value shape follows the
1006
+ * attribute's `fieldSubType`:
1007
+ *
1008
+ * - `select` / `multi-select` — pass an option **label** (e.g.
1009
+ * `"Product question"`) or an option **id**; both are matched interchangeably,
1010
+ * and id-based filters keep working after options are renamed
1011
+ * - `text` — string
1012
+ * - `number` — number; range operators (`>`, `<`, `>=`, `<=`) are supported
1013
+ * - `date` — ISO 8601 string or unix seconds; range operators are supported
1014
+ * - `checkbox` — boolean
1015
+ *
1016
+ * Example — all conversations where the "Issue type" select attribute is "Product
1017
+ * question":
1018
+ *
1019
+ * ```json
1020
+ * {
1021
+ * "query": {
1022
+ * "field": "customAttributes.6863d3fca1234b0d5e15c86c",
1023
+ * "operator": "=",
1024
+ * "value": "Product question"
1025
+ * },
1026
+ * "include": ["customAttributeDefinitions"]
1027
+ * }
1028
+ * ```
1029
+ *
1030
+ * Referencing an attribute id that does not exist (or has been archived) returns a
1031
+ * `field_unknown` error. Set `include` to `["customAttributeDefinitions"]` to get
1032
+ * each returned conversation's attribute values resolved with names and types
1033
+ * alongside the ID-keyed `customAttributes` map.
999
1034
  *
1000
1035
  * For unbounded fields a query consisting only of `!=` or `NIN` clauses is
1001
1036
  * rejected with `query_too_broad` to prevent full-org scans. Combine the negation
@@ -1003,6 +1038,16 @@ export class Conversations extends APIResource {
1003
1038
  * fields (`state`, `priority`) are exempt because their negation is naturally
1004
1039
  * bounded.
1005
1040
  *
1041
+ * ### Inbox visibility
1042
+ *
1043
+ * An open-state filter uses the same visibility rule as the Featurebase dashboard
1044
+ * inbox. Workflow and outbound-message shells are excluded until a customer or
1045
+ * lead interacts with them. As a result, `state = "open"` (or an `IN`/`NIN` filter
1046
+ * that resolves exclusively to open) returns the conversations shown in the
1047
+ * dashboard's open inbox rather than unreplied campaign or automation shells.
1048
+ * Searches without an open-only state filter keep their existing organization-wide
1049
+ * semantics.
1050
+ *
1006
1051
  * ### Pagination
1007
1052
  *
1008
1053
  * Cursor-based, `limit` between 1 and 100 (default 10). Pagination cursors are
@@ -1329,9 +1374,11 @@ export namespace Conversation {
1329
1374
  requestId: string;
1330
1375
 
1331
1376
  /**
1332
- * Source that created the CSAT request
1377
+ * Source that created the CSAT request. `workflow` = Ask For Conversation Rating
1378
+ * workflow action, `fibi_auto` = automatic Fibi AI Agent survey on
1379
+ * resolve/handoff.
1333
1380
  */
1334
- requestSource: 'workflow';
1381
+ requestSource: 'workflow' | 'fibi_auto';
1335
1382
 
1336
1383
  /**
1337
1384
  * Lifecycle status for this historical CSAT request
@@ -1437,7 +1484,7 @@ export namespace Conversation {
1437
1484
  /**
1438
1485
  * Source of the latest CSAT request when known
1439
1486
  */
1440
- requestSource?: 'workflow';
1487
+ requestSource?: 'workflow' | 'fibi_auto';
1441
1488
 
1442
1489
  /**
1443
1490
  * CSAT score from 1 to 5 when rated
@@ -2001,9 +2048,11 @@ export namespace ConversationPart {
2001
2048
  requestId: string;
2002
2049
 
2003
2050
  /**
2004
- * Source that created the CSAT request
2051
+ * Source that created the CSAT request. `workflow` = Ask For Conversation Rating
2052
+ * workflow action, `fibi_auto` = automatic Fibi AI Agent survey on
2053
+ * resolve/handoff.
2005
2054
  */
2006
- requestSource: 'workflow';
2055
+ requestSource: 'workflow' | 'fibi_auto';
2007
2056
 
2008
2057
  /**
2009
2058
  * Status of the CSAT request represented by this part
@@ -2088,9 +2137,11 @@ export namespace ConversationPart {
2088
2137
  requestId: string;
2089
2138
 
2090
2139
  /**
2091
- * Source that created the CSAT request
2140
+ * Source that created the CSAT request. `workflow` = Ask For Conversation Rating
2141
+ * workflow action, `fibi_auto` = automatic Fibi AI Agent survey on
2142
+ * resolve/handoff.
2092
2143
  */
2093
- requestSource: 'workflow';
2144
+ requestSource: 'workflow' | 'fibi_auto';
2094
2145
 
2095
2146
  /**
2096
2147
  * CSAT score from 1 to 5
@@ -3118,27 +3169,6 @@ export namespace ConversationSearchResponse {
3118
3169
  }
3119
3170
  }
3120
3171
 
3121
- export interface ConversationListParams extends CursorPageParams {
3122
- /**
3123
- * Query param: Comma-separated optional expansions. Use
3124
- * `customAttributeDefinitions` to return `customAttributeValues` with names and
3125
- * types alongside ID-keyed `customAttributes`.
3126
- */
3127
- include?: string | Array<string>;
3128
-
3129
- /**
3130
- * Query param: Filter conversations by one or more tag IDs using a comma-separated
3131
- * list. Conversations must contain all provided tags.
3132
- */
3133
- tagIds?: string | Array<string>;
3134
-
3135
- /**
3136
- * Header param: API version for this request. Defaults to your organization's
3137
- * configured API version if not specified.
3138
- */
3139
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3140
- }
3141
-
3142
3172
  export interface ConversationCreateParams {
3143
3173
  /**
3144
3174
  * Body param: The content of the initial message in markdown format. Images
@@ -3182,7 +3212,7 @@ export interface ConversationCreateParams {
3182
3212
  * Header param: API version for this request. Defaults to your organization's
3183
3213
  * configured API version if not specified.
3184
3214
  */
3185
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3215
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3186
3216
  }
3187
3217
 
3188
3218
  export namespace ConversationCreateParams {
@@ -3250,15 +3280,7 @@ export interface ConversationRetrieveParams {
3250
3280
  * Header param: API version for this request. Defaults to your organization's
3251
3281
  * configured API version if not specified.
3252
3282
  */
3253
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3254
- }
3255
-
3256
- export interface ConversationDeleteParams {
3257
- /**
3258
- * API version for this request. Defaults to your organization's configured API
3259
- * version if not specified.
3260
- */
3261
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3283
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3262
3284
  }
3263
3285
 
3264
3286
  export interface ConversationUpdateParams {
@@ -3312,7 +3334,7 @@ export interface ConversationUpdateParams {
3312
3334
  * Header param: API version for this request. Defaults to your organization's
3313
3335
  * configured API version if not specified.
3314
3336
  */
3315
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3337
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3316
3338
  }
3317
3339
 
3318
3340
  export namespace ConversationUpdateParams {
@@ -3345,6 +3367,103 @@ export namespace ConversationUpdateParams {
3345
3367
  }
3346
3368
  }
3347
3369
 
3370
+ export interface ConversationListParams extends CursorPageParams {
3371
+ /**
3372
+ * Query param: Comma-separated optional expansions. Use
3373
+ * `customAttributeDefinitions` to return `customAttributeValues` with names and
3374
+ * types alongside ID-keyed `customAttributes`.
3375
+ */
3376
+ include?: string | Array<string>;
3377
+
3378
+ /**
3379
+ * Query param: Filter conversations by one or more tag IDs using a comma-separated
3380
+ * list. Conversations must contain all provided tags.
3381
+ */
3382
+ tagIds?: string | Array<string>;
3383
+
3384
+ /**
3385
+ * Header param: API version for this request. Defaults to your organization's
3386
+ * configured API version if not specified.
3387
+ */
3388
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3389
+ }
3390
+
3391
+ export interface ConversationDeleteParams {
3392
+ /**
3393
+ * API version for this request. Defaults to your organization's configured API
3394
+ * version if not specified.
3395
+ */
3396
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3397
+ }
3398
+
3399
+ export interface ConversationAttachTagParams {
3400
+ /**
3401
+ * Body param: Required admin ID performing this tag attachment. Must be a member
3402
+ * of the organization so the mutation can be attributed to a real admin actor.
3403
+ */
3404
+ actingAdminId: string;
3405
+
3406
+ /**
3407
+ * Body param: The Featurebase tag ID to attach to the conversation.
3408
+ */
3409
+ tagId: string;
3410
+
3411
+ /**
3412
+ * Header param: API version for this request. Defaults to your organization's
3413
+ * configured API version if not specified.
3414
+ */
3415
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3416
+ }
3417
+
3418
+ export interface ConversationDetachTagParams {
3419
+ /**
3420
+ * Path param: Conversation ID (short ID)
3421
+ */
3422
+ id: string;
3423
+
3424
+ /**
3425
+ * Body param: Required admin ID performing this tag removal. Must be a member of
3426
+ * the organization so the mutation can be attributed to a real admin actor.
3427
+ */
3428
+ actingAdminId: string;
3429
+
3430
+ /**
3431
+ * Header param: API version for this request. Defaults to your organization's
3432
+ * configured API version if not specified.
3433
+ */
3434
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3435
+ }
3436
+
3437
+ export interface ConversationRedactParams {
3438
+ /**
3439
+ * Body param: The conversation short ID that contains the part to redact
3440
+ */
3441
+ conversationId: string;
3442
+
3443
+ /**
3444
+ * Body param: The conversation part short ID to redact
3445
+ */
3446
+ conversationPartId: string;
3447
+
3448
+ /**
3449
+ * Body param: The type of item to redact. Currently only "conversation_part" is
3450
+ * supported.
3451
+ */
3452
+ type: 'conversation_part';
3453
+
3454
+ /**
3455
+ * Body param: The admin ID performing this action. If not provided, changes are
3456
+ * attributed to the system bot user.
3457
+ */
3458
+ actingAdminId?: string;
3459
+
3460
+ /**
3461
+ * Header param: API version for this request. Defaults to your organization's
3462
+ * configured API version if not specified.
3463
+ */
3464
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3465
+ }
3466
+
3348
3467
  export type ConversationReplyParams =
3349
3468
  | ConversationReplyParams.ContactReplyBody
3350
3469
  | ConversationReplyParams.AdminReplyBody;
@@ -3388,7 +3507,7 @@ export declare namespace ConversationReplyParams {
3388
3507
  * Header param: API version for this request. Defaults to your organization's
3389
3508
  * configured API version if not specified.
3390
3509
  */
3391
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3510
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3392
3511
  }
3393
3512
 
3394
3513
  export interface AdminReplyBody {
@@ -3425,78 +3544,10 @@ export declare namespace ConversationReplyParams {
3425
3544
  * Header param: API version for this request. Defaults to your organization's
3426
3545
  * configured API version if not specified.
3427
3546
  */
3428
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3547
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3429
3548
  }
3430
3549
  }
3431
3550
 
3432
- export interface ConversationRedactParams {
3433
- /**
3434
- * Body param: The conversation short ID that contains the part to redact
3435
- */
3436
- conversationId: string;
3437
-
3438
- /**
3439
- * Body param: The conversation part short ID to redact
3440
- */
3441
- conversationPartId: string;
3442
-
3443
- /**
3444
- * Body param: The type of item to redact. Currently only "conversation_part" is
3445
- * supported.
3446
- */
3447
- type: 'conversation_part';
3448
-
3449
- /**
3450
- * Body param: The admin ID performing this action. If not provided, changes are
3451
- * attributed to the system bot user.
3452
- */
3453
- actingAdminId?: string;
3454
-
3455
- /**
3456
- * Header param: API version for this request. Defaults to your organization's
3457
- * configured API version if not specified.
3458
- */
3459
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3460
- }
3461
-
3462
- export interface ConversationAttachTagParams {
3463
- /**
3464
- * Body param: Required admin ID performing this tag attachment. Must be a member
3465
- * of the organization so the mutation can be attributed to a real admin actor.
3466
- */
3467
- actingAdminId: string;
3468
-
3469
- /**
3470
- * Body param: The Featurebase tag ID to attach to the conversation.
3471
- */
3472
- tagId: string;
3473
-
3474
- /**
3475
- * Header param: API version for this request. Defaults to your organization's
3476
- * configured API version if not specified.
3477
- */
3478
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3479
- }
3480
-
3481
- export interface ConversationDetachTagParams {
3482
- /**
3483
- * Path param: Conversation ID (short ID)
3484
- */
3485
- id: string;
3486
-
3487
- /**
3488
- * Body param: Required admin ID performing this tag removal. Must be a member of
3489
- * the organization so the mutation can be attributed to a real admin actor.
3490
- */
3491
- actingAdminId: string;
3492
-
3493
- /**
3494
- * Header param: API version for this request. Defaults to your organization's
3495
- * configured API version if not specified.
3496
- */
3497
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3498
- }
3499
-
3500
3551
  export interface ConversationSearchParams {
3501
3552
  /**
3502
3553
  * Body param: An opaque cursor for pagination. Use the nextCursor value from a
@@ -3544,7 +3595,7 @@ export interface ConversationSearchParams {
3544
3595
  * Header param: API version for this request. Defaults to your organization's
3545
3596
  * configured API version if not specified.
3546
3597
  */
3547
- 'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
3598
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
3548
3599
  }
3549
3600
 
3550
3601
  Conversations.Participants = Participants;
@@ -3570,15 +3621,15 @@ export declare namespace Conversations {
3570
3621
  type ConversationDeleteResponse as ConversationDeleteResponse,
3571
3622
  type ConversationSearchResponse as ConversationSearchResponse,
3572
3623
  type ConversationsCursorPage as ConversationsCursorPage,
3573
- type ConversationListParams as ConversationListParams,
3574
3624
  type ConversationCreateParams as ConversationCreateParams,
3575
3625
  type ConversationRetrieveParams as ConversationRetrieveParams,
3576
- type ConversationDeleteParams as ConversationDeleteParams,
3577
3626
  type ConversationUpdateParams as ConversationUpdateParams,
3578
- type ConversationReplyParams as ConversationReplyParams,
3579
- type ConversationRedactParams as ConversationRedactParams,
3627
+ type ConversationListParams as ConversationListParams,
3628
+ type ConversationDeleteParams as ConversationDeleteParams,
3580
3629
  type ConversationAttachTagParams as ConversationAttachTagParams,
3581
3630
  type ConversationDetachTagParams as ConversationDetachTagParams,
3631
+ type ConversationRedactParams as ConversationRedactParams,
3632
+ type ConversationReplyParams as ConversationReplyParams,
3582
3633
  type ConversationSearchParams as ConversationSearchParams,
3583
3634
  };
3584
3635