featurebase-node 0.0.2

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 (795) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/LICENSE +201 -0
  3. package/README.md +356 -0
  4. package/api-promise.d.mts +2 -0
  5. package/api-promise.d.mts.map +1 -0
  6. package/api-promise.d.ts +2 -0
  7. package/api-promise.d.ts.map +1 -0
  8. package/api-promise.js +6 -0
  9. package/api-promise.js.map +1 -0
  10. package/api-promise.mjs +2 -0
  11. package/api-promise.mjs.map +1 -0
  12. package/client.d.mts +274 -0
  13. package/client.d.mts.map +1 -0
  14. package/client.d.ts +274 -0
  15. package/client.d.ts.map +1 -0
  16. package/client.js +569 -0
  17. package/client.js.map +1 -0
  18. package/client.mjs +565 -0
  19. package/client.mjs.map +1 -0
  20. package/core/api-promise.d.mts +46 -0
  21. package/core/api-promise.d.mts.map +1 -0
  22. package/core/api-promise.d.ts +46 -0
  23. package/core/api-promise.d.ts.map +1 -0
  24. package/core/api-promise.js +74 -0
  25. package/core/api-promise.js.map +1 -0
  26. package/core/api-promise.mjs +70 -0
  27. package/core/api-promise.mjs.map +1 -0
  28. package/core/error.d.mts +46 -0
  29. package/core/error.d.mts.map +1 -0
  30. package/core/error.d.ts +46 -0
  31. package/core/error.d.ts.map +1 -0
  32. package/core/error.js +113 -0
  33. package/core/error.js.map +1 -0
  34. package/core/error.mjs +97 -0
  35. package/core/error.mjs.map +1 -0
  36. package/core/resource.d.mts +6 -0
  37. package/core/resource.d.mts.map +1 -0
  38. package/core/resource.d.ts +6 -0
  39. package/core/resource.d.ts.map +1 -0
  40. package/core/resource.js +11 -0
  41. package/core/resource.js.map +1 -0
  42. package/core/resource.mjs +7 -0
  43. package/core/resource.mjs.map +1 -0
  44. package/core/uploads.d.mts +3 -0
  45. package/core/uploads.d.mts.map +1 -0
  46. package/core/uploads.d.ts +3 -0
  47. package/core/uploads.d.ts.map +1 -0
  48. package/core/uploads.js +6 -0
  49. package/core/uploads.js.map +1 -0
  50. package/core/uploads.mjs +2 -0
  51. package/core/uploads.mjs.map +1 -0
  52. package/error.d.mts +2 -0
  53. package/error.d.mts.map +1 -0
  54. package/error.d.ts +2 -0
  55. package/error.d.ts.map +1 -0
  56. package/error.js +6 -0
  57. package/error.js.map +1 -0
  58. package/error.mjs +2 -0
  59. package/error.mjs.map +1 -0
  60. package/index.d.mts +6 -0
  61. package/index.d.mts.map +1 -0
  62. package/index.d.ts +6 -0
  63. package/index.d.ts.map +1 -0
  64. package/index.js +30 -0
  65. package/index.js.map +1 -0
  66. package/index.mjs +7 -0
  67. package/index.mjs.map +1 -0
  68. package/internal/builtin-types.d.mts +73 -0
  69. package/internal/builtin-types.d.mts.map +1 -0
  70. package/internal/builtin-types.d.ts +73 -0
  71. package/internal/builtin-types.d.ts.map +1 -0
  72. package/internal/builtin-types.js +4 -0
  73. package/internal/builtin-types.js.map +1 -0
  74. package/internal/builtin-types.mjs +3 -0
  75. package/internal/builtin-types.mjs.map +1 -0
  76. package/internal/detect-platform.d.mts +15 -0
  77. package/internal/detect-platform.d.mts.map +1 -0
  78. package/internal/detect-platform.d.ts +15 -0
  79. package/internal/detect-platform.d.ts.map +1 -0
  80. package/internal/detect-platform.js +162 -0
  81. package/internal/detect-platform.js.map +1 -0
  82. package/internal/detect-platform.mjs +157 -0
  83. package/internal/detect-platform.mjs.map +1 -0
  84. package/internal/errors.d.mts +3 -0
  85. package/internal/errors.d.mts.map +1 -0
  86. package/internal/errors.d.ts +3 -0
  87. package/internal/errors.d.ts.map +1 -0
  88. package/internal/errors.js +41 -0
  89. package/internal/errors.js.map +1 -0
  90. package/internal/errors.mjs +36 -0
  91. package/internal/errors.mjs.map +1 -0
  92. package/internal/headers.d.mts +20 -0
  93. package/internal/headers.d.mts.map +1 -0
  94. package/internal/headers.d.ts +20 -0
  95. package/internal/headers.d.ts.map +1 -0
  96. package/internal/headers.js +79 -0
  97. package/internal/headers.js.map +1 -0
  98. package/internal/headers.mjs +74 -0
  99. package/internal/headers.mjs.map +1 -0
  100. package/internal/parse.d.mts +12 -0
  101. package/internal/parse.d.mts.map +1 -0
  102. package/internal/parse.d.ts +12 -0
  103. package/internal/parse.d.ts.map +1 -0
  104. package/internal/parse.js +40 -0
  105. package/internal/parse.js.map +1 -0
  106. package/internal/parse.mjs +37 -0
  107. package/internal/parse.mjs.map +1 -0
  108. package/internal/qs/formats.d.mts +7 -0
  109. package/internal/qs/formats.d.mts.map +1 -0
  110. package/internal/qs/formats.d.ts +7 -0
  111. package/internal/qs/formats.d.ts.map +1 -0
  112. package/internal/qs/formats.js +13 -0
  113. package/internal/qs/formats.js.map +1 -0
  114. package/internal/qs/formats.mjs +9 -0
  115. package/internal/qs/formats.mjs.map +1 -0
  116. package/internal/qs/index.d.mts +10 -0
  117. package/internal/qs/index.d.mts.map +1 -0
  118. package/internal/qs/index.d.ts +10 -0
  119. package/internal/qs/index.d.ts.map +1 -0
  120. package/internal/qs/index.js +14 -0
  121. package/internal/qs/index.js.map +1 -0
  122. package/internal/qs/index.mjs +10 -0
  123. package/internal/qs/index.mjs.map +1 -0
  124. package/internal/qs/stringify.d.mts +3 -0
  125. package/internal/qs/stringify.d.mts.map +1 -0
  126. package/internal/qs/stringify.d.ts +3 -0
  127. package/internal/qs/stringify.d.ts.map +1 -0
  128. package/internal/qs/stringify.js +277 -0
  129. package/internal/qs/stringify.js.map +1 -0
  130. package/internal/qs/stringify.mjs +274 -0
  131. package/internal/qs/stringify.mjs.map +1 -0
  132. package/internal/qs/types.d.mts +57 -0
  133. package/internal/qs/types.d.mts.map +1 -0
  134. package/internal/qs/types.d.ts +57 -0
  135. package/internal/qs/types.d.ts.map +1 -0
  136. package/internal/qs/types.js +3 -0
  137. package/internal/qs/types.js.map +1 -0
  138. package/internal/qs/types.mjs +2 -0
  139. package/internal/qs/types.mjs.map +1 -0
  140. package/internal/qs/utils.d.mts +15 -0
  141. package/internal/qs/utils.d.mts.map +1 -0
  142. package/internal/qs/utils.d.ts +15 -0
  143. package/internal/qs/utils.d.ts.map +1 -0
  144. package/internal/qs/utils.js +230 -0
  145. package/internal/qs/utils.js.map +1 -0
  146. package/internal/qs/utils.mjs +217 -0
  147. package/internal/qs/utils.mjs.map +1 -0
  148. package/internal/request-options.d.mts +75 -0
  149. package/internal/request-options.d.mts.map +1 -0
  150. package/internal/request-options.d.ts +75 -0
  151. package/internal/request-options.d.ts.map +1 -0
  152. package/internal/request-options.js +14 -0
  153. package/internal/request-options.js.map +1 -0
  154. package/internal/request-options.mjs +10 -0
  155. package/internal/request-options.mjs.map +1 -0
  156. package/internal/shim-types.d.mts +17 -0
  157. package/internal/shim-types.d.mts.map +1 -0
  158. package/internal/shim-types.d.ts +17 -0
  159. package/internal/shim-types.d.ts.map +1 -0
  160. package/internal/shim-types.js +4 -0
  161. package/internal/shim-types.js.map +1 -0
  162. package/internal/shim-types.mjs +3 -0
  163. package/internal/shim-types.mjs.map +1 -0
  164. package/internal/shims.d.mts +20 -0
  165. package/internal/shims.d.mts.map +1 -0
  166. package/internal/shims.d.ts +20 -0
  167. package/internal/shims.d.ts.map +1 -0
  168. package/internal/shims.js +92 -0
  169. package/internal/shims.js.map +1 -0
  170. package/internal/shims.mjs +85 -0
  171. package/internal/shims.mjs.map +1 -0
  172. package/internal/to-file.d.mts +45 -0
  173. package/internal/to-file.d.mts.map +1 -0
  174. package/internal/to-file.d.ts +45 -0
  175. package/internal/to-file.d.ts.map +1 -0
  176. package/internal/to-file.js +91 -0
  177. package/internal/to-file.js.map +1 -0
  178. package/internal/to-file.mjs +88 -0
  179. package/internal/to-file.mjs.map +1 -0
  180. package/internal/tslib.js +81 -0
  181. package/internal/tslib.mjs +17 -0
  182. package/internal/types.d.mts +69 -0
  183. package/internal/types.d.mts.map +1 -0
  184. package/internal/types.d.ts +69 -0
  185. package/internal/types.d.ts.map +1 -0
  186. package/internal/types.js +4 -0
  187. package/internal/types.js.map +1 -0
  188. package/internal/types.mjs +3 -0
  189. package/internal/types.mjs.map +1 -0
  190. package/internal/uploads.d.mts +42 -0
  191. package/internal/uploads.d.mts.map +1 -0
  192. package/internal/uploads.d.ts +42 -0
  193. package/internal/uploads.d.ts.map +1 -0
  194. package/internal/uploads.js +141 -0
  195. package/internal/uploads.js.map +1 -0
  196. package/internal/uploads.mjs +131 -0
  197. package/internal/uploads.mjs.map +1 -0
  198. package/internal/utils/base64.d.mts +3 -0
  199. package/internal/utils/base64.d.mts.map +1 -0
  200. package/internal/utils/base64.d.ts +3 -0
  201. package/internal/utils/base64.d.ts.map +1 -0
  202. package/internal/utils/base64.js +38 -0
  203. package/internal/utils/base64.js.map +1 -0
  204. package/internal/utils/base64.mjs +33 -0
  205. package/internal/utils/base64.mjs.map +1 -0
  206. package/internal/utils/bytes.d.mts +4 -0
  207. package/internal/utils/bytes.d.mts.map +1 -0
  208. package/internal/utils/bytes.d.ts +4 -0
  209. package/internal/utils/bytes.d.ts.map +1 -0
  210. package/internal/utils/bytes.js +31 -0
  211. package/internal/utils/bytes.js.map +1 -0
  212. package/internal/utils/bytes.mjs +26 -0
  213. package/internal/utils/bytes.mjs.map +1 -0
  214. package/internal/utils/env.d.mts +9 -0
  215. package/internal/utils/env.d.mts.map +1 -0
  216. package/internal/utils/env.d.ts +9 -0
  217. package/internal/utils/env.d.ts.map +1 -0
  218. package/internal/utils/env.js +22 -0
  219. package/internal/utils/env.js.map +1 -0
  220. package/internal/utils/env.mjs +18 -0
  221. package/internal/utils/env.mjs.map +1 -0
  222. package/internal/utils/log.d.mts +37 -0
  223. package/internal/utils/log.d.mts.map +1 -0
  224. package/internal/utils/log.d.ts +37 -0
  225. package/internal/utils/log.d.ts.map +1 -0
  226. package/internal/utils/log.js +85 -0
  227. package/internal/utils/log.js.map +1 -0
  228. package/internal/utils/log.mjs +79 -0
  229. package/internal/utils/log.mjs.map +1 -0
  230. package/internal/utils/path.d.mts +15 -0
  231. package/internal/utils/path.d.mts.map +1 -0
  232. package/internal/utils/path.d.ts +15 -0
  233. package/internal/utils/path.d.ts.map +1 -0
  234. package/internal/utils/path.js +79 -0
  235. package/internal/utils/path.js.map +1 -0
  236. package/internal/utils/path.mjs +74 -0
  237. package/internal/utils/path.mjs.map +1 -0
  238. package/internal/utils/query.d.mts +2 -0
  239. package/internal/utils/query.d.mts.map +1 -0
  240. package/internal/utils/query.d.ts +2 -0
  241. package/internal/utils/query.d.ts.map +1 -0
  242. package/internal/utils/query.js +10 -0
  243. package/internal/utils/query.js.map +1 -0
  244. package/internal/utils/query.mjs +6 -0
  245. package/internal/utils/query.mjs.map +1 -0
  246. package/internal/utils/sleep.d.mts +2 -0
  247. package/internal/utils/sleep.d.mts.map +1 -0
  248. package/internal/utils/sleep.d.ts +2 -0
  249. package/internal/utils/sleep.d.ts.map +1 -0
  250. package/internal/utils/sleep.js +7 -0
  251. package/internal/utils/sleep.js.map +1 -0
  252. package/internal/utils/sleep.mjs +3 -0
  253. package/internal/utils/sleep.mjs.map +1 -0
  254. package/internal/utils/uuid.d.mts +5 -0
  255. package/internal/utils/uuid.d.mts.map +1 -0
  256. package/internal/utils/uuid.d.ts +5 -0
  257. package/internal/utils/uuid.d.ts.map +1 -0
  258. package/internal/utils/uuid.js +19 -0
  259. package/internal/utils/uuid.js.map +1 -0
  260. package/internal/utils/uuid.mjs +15 -0
  261. package/internal/utils/uuid.mjs.map +1 -0
  262. package/internal/utils/values.d.mts +18 -0
  263. package/internal/utils/values.d.mts.map +1 -0
  264. package/internal/utils/values.d.ts +18 -0
  265. package/internal/utils/values.d.ts.map +1 -0
  266. package/internal/utils/values.js +112 -0
  267. package/internal/utils/values.js.map +1 -0
  268. package/internal/utils/values.mjs +94 -0
  269. package/internal/utils/values.mjs.map +1 -0
  270. package/internal/utils.d.mts +8 -0
  271. package/internal/utils.d.mts.map +1 -0
  272. package/internal/utils.d.ts +8 -0
  273. package/internal/utils.d.ts.map +1 -0
  274. package/internal/utils.js +12 -0
  275. package/internal/utils.js.map +1 -0
  276. package/internal/utils.mjs +9 -0
  277. package/internal/utils.mjs.map +1 -0
  278. package/package.json +143 -0
  279. package/resource.d.mts +2 -0
  280. package/resource.d.mts.map +1 -0
  281. package/resource.d.ts +2 -0
  282. package/resource.d.ts.map +1 -0
  283. package/resource.js +6 -0
  284. package/resource.js.map +1 -0
  285. package/resource.mjs +2 -0
  286. package/resource.mjs.map +1 -0
  287. package/resources/admins.d.mts +437 -0
  288. package/resources/admins.d.mts.map +1 -0
  289. package/resources/admins.d.ts +437 -0
  290. package/resources/admins.d.ts.map +1 -0
  291. package/resources/admins.js +157 -0
  292. package/resources/admins.js.map +1 -0
  293. package/resources/admins.mjs +153 -0
  294. package/resources/admins.mjs.map +1 -0
  295. package/resources/boards.d.mts +202 -0
  296. package/resources/boards.d.mts.map +1 -0
  297. package/resources/boards.d.ts +202 -0
  298. package/resources/boards.d.ts.map +1 -0
  299. package/resources/boards.js +52 -0
  300. package/resources/boards.js.map +1 -0
  301. package/resources/boards.mjs +48 -0
  302. package/resources/boards.mjs.map +1 -0
  303. package/resources/brands.d.mts +180 -0
  304. package/resources/brands.d.mts.map +1 -0
  305. package/resources/brands.d.ts +180 -0
  306. package/resources/brands.d.ts.map +1 -0
  307. package/resources/brands.js +130 -0
  308. package/resources/brands.js.map +1 -0
  309. package/resources/brands.mjs +126 -0
  310. package/resources/brands.mjs.map +1 -0
  311. package/resources/changelogs/changelogs.d.mts +723 -0
  312. package/resources/changelogs/changelogs.d.mts.map +1 -0
  313. package/resources/changelogs/changelogs.d.ts +723 -0
  314. package/resources/changelogs/changelogs.d.ts.map +1 -0
  315. package/resources/changelogs/changelogs.js +406 -0
  316. package/resources/changelogs/changelogs.js.map +1 -0
  317. package/resources/changelogs/changelogs.mjs +401 -0
  318. package/resources/changelogs/changelogs.mjs.map +1 -0
  319. package/resources/changelogs/index.d.mts +3 -0
  320. package/resources/changelogs/index.d.mts.map +1 -0
  321. package/resources/changelogs/index.d.ts +3 -0
  322. package/resources/changelogs/index.d.ts.map +1 -0
  323. package/resources/changelogs/index.js +9 -0
  324. package/resources/changelogs/index.js.map +1 -0
  325. package/resources/changelogs/index.mjs +4 -0
  326. package/resources/changelogs/index.mjs.map +1 -0
  327. package/resources/changelogs/subscribers.d.mts +145 -0
  328. package/resources/changelogs/subscribers.d.mts.map +1 -0
  329. package/resources/changelogs/subscribers.d.ts +145 -0
  330. package/resources/changelogs/subscribers.d.ts.map +1 -0
  331. package/resources/changelogs/subscribers.js +119 -0
  332. package/resources/changelogs/subscribers.js.map +1 -0
  333. package/resources/changelogs/subscribers.mjs +115 -0
  334. package/resources/changelogs/subscribers.mjs.map +1 -0
  335. package/resources/changelogs.d.mts +2 -0
  336. package/resources/changelogs.d.mts.map +1 -0
  337. package/resources/changelogs.d.ts +2 -0
  338. package/resources/changelogs.d.ts.map +1 -0
  339. package/resources/changelogs.js +6 -0
  340. package/resources/changelogs.js.map +1 -0
  341. package/resources/changelogs.mjs +3 -0
  342. package/resources/changelogs.mjs.map +1 -0
  343. package/resources/comments.d.mts +632 -0
  344. package/resources/comments.d.mts.map +1 -0
  345. package/resources/comments.d.ts +632 -0
  346. package/resources/comments.d.ts.map +1 -0
  347. package/resources/comments.js +397 -0
  348. package/resources/comments.js.map +1 -0
  349. package/resources/comments.mjs +393 -0
  350. package/resources/comments.mjs.map +1 -0
  351. package/resources/companies/companies.d.mts +497 -0
  352. package/resources/companies/companies.d.mts.map +1 -0
  353. package/resources/companies/companies.d.ts +497 -0
  354. package/resources/companies/companies.d.ts.map +1 -0
  355. package/resources/companies/companies.js +368 -0
  356. package/resources/companies/companies.js.map +1 -0
  357. package/resources/companies/companies.mjs +363 -0
  358. package/resources/companies/companies.mjs.map +1 -0
  359. package/resources/companies/contacts.d.mts +236 -0
  360. package/resources/companies/contacts.d.mts.map +1 -0
  361. package/resources/companies/contacts.d.ts +236 -0
  362. package/resources/companies/contacts.d.ts.map +1 -0
  363. package/resources/companies/contacts.js +218 -0
  364. package/resources/companies/contacts.js.map +1 -0
  365. package/resources/companies/contacts.mjs +214 -0
  366. package/resources/companies/contacts.mjs.map +1 -0
  367. package/resources/companies/index.d.mts +3 -0
  368. package/resources/companies/index.d.mts.map +1 -0
  369. package/resources/companies/index.d.ts +3 -0
  370. package/resources/companies/index.d.ts.map +1 -0
  371. package/resources/companies/index.js +9 -0
  372. package/resources/companies/index.js.map +1 -0
  373. package/resources/companies/index.mjs +4 -0
  374. package/resources/companies/index.mjs.map +1 -0
  375. package/resources/companies.d.mts +2 -0
  376. package/resources/companies.d.mts.map +1 -0
  377. package/resources/companies.d.ts +2 -0
  378. package/resources/companies.d.ts.map +1 -0
  379. package/resources/companies.js +6 -0
  380. package/resources/companies.js.map +1 -0
  381. package/resources/companies.mjs +3 -0
  382. package/resources/companies.mjs.map +1 -0
  383. package/resources/contacts/by-user-id/by-user-id.d.mts +147 -0
  384. package/resources/contacts/by-user-id/by-user-id.d.mts.map +1 -0
  385. package/resources/contacts/by-user-id/by-user-id.d.ts +147 -0
  386. package/resources/contacts/by-user-id/by-user-id.d.ts.map +1 -0
  387. package/resources/contacts/by-user-id/by-user-id.js +152 -0
  388. package/resources/contacts/by-user-id/by-user-id.js.map +1 -0
  389. package/resources/contacts/by-user-id/by-user-id.mjs +147 -0
  390. package/resources/contacts/by-user-id/by-user-id.mjs.map +1 -0
  391. package/resources/contacts/by-user-id/email-preferences.d.mts +199 -0
  392. package/resources/contacts/by-user-id/email-preferences.d.mts.map +1 -0
  393. package/resources/contacts/by-user-id/email-preferences.d.ts +199 -0
  394. package/resources/contacts/by-user-id/email-preferences.d.ts.map +1 -0
  395. package/resources/contacts/by-user-id/email-preferences.js +176 -0
  396. package/resources/contacts/by-user-id/email-preferences.js.map +1 -0
  397. package/resources/contacts/by-user-id/email-preferences.mjs +172 -0
  398. package/resources/contacts/by-user-id/email-preferences.mjs.map +1 -0
  399. package/resources/contacts/by-user-id/index.d.mts +3 -0
  400. package/resources/contacts/by-user-id/index.d.mts.map +1 -0
  401. package/resources/contacts/by-user-id/index.d.ts +3 -0
  402. package/resources/contacts/by-user-id/index.d.ts.map +1 -0
  403. package/resources/contacts/by-user-id/index.js +9 -0
  404. package/resources/contacts/by-user-id/index.js.map +1 -0
  405. package/resources/contacts/by-user-id/index.mjs +4 -0
  406. package/resources/contacts/by-user-id/index.mjs.map +1 -0
  407. package/resources/contacts/by-user-id.d.mts +2 -0
  408. package/resources/contacts/by-user-id.d.mts.map +1 -0
  409. package/resources/contacts/by-user-id.d.ts +2 -0
  410. package/resources/contacts/by-user-id.d.ts.map +1 -0
  411. package/resources/contacts/by-user-id.js +6 -0
  412. package/resources/contacts/by-user-id.js.map +1 -0
  413. package/resources/contacts/by-user-id.mjs +3 -0
  414. package/resources/contacts/by-user-id.mjs.map +1 -0
  415. package/resources/contacts/contacts.d.mts +708 -0
  416. package/resources/contacts/contacts.d.mts.map +1 -0
  417. package/resources/contacts/contacts.d.ts +708 -0
  418. package/resources/contacts/contacts.d.ts.map +1 -0
  419. package/resources/contacts/contacts.js +444 -0
  420. package/resources/contacts/contacts.js.map +1 -0
  421. package/resources/contacts/contacts.mjs +439 -0
  422. package/resources/contacts/contacts.mjs.map +1 -0
  423. package/resources/contacts/email-preferences.d.mts +334 -0
  424. package/resources/contacts/email-preferences.d.mts.map +1 -0
  425. package/resources/contacts/email-preferences.d.ts +334 -0
  426. package/resources/contacts/email-preferences.d.ts.map +1 -0
  427. package/resources/contacts/email-preferences.js +219 -0
  428. package/resources/contacts/email-preferences.js.map +1 -0
  429. package/resources/contacts/email-preferences.mjs +215 -0
  430. package/resources/contacts/email-preferences.mjs.map +1 -0
  431. package/resources/contacts/index.d.mts +4 -0
  432. package/resources/contacts/index.d.mts.map +1 -0
  433. package/resources/contacts/index.d.ts +4 -0
  434. package/resources/contacts/index.d.ts.map +1 -0
  435. package/resources/contacts/index.js +11 -0
  436. package/resources/contacts/index.js.map +1 -0
  437. package/resources/contacts/index.mjs +5 -0
  438. package/resources/contacts/index.mjs.map +1 -0
  439. package/resources/contacts.d.mts +2 -0
  440. package/resources/contacts.d.mts.map +1 -0
  441. package/resources/contacts.d.ts +2 -0
  442. package/resources/contacts.d.ts.map +1 -0
  443. package/resources/contacts.js +6 -0
  444. package/resources/contacts.js.map +1 -0
  445. package/resources/contacts.mjs +3 -0
  446. package/resources/contacts.mjs.map +1 -0
  447. package/resources/conversations/conversations.d.mts +2235 -0
  448. package/resources/conversations/conversations.d.mts.map +1 -0
  449. package/resources/conversations/conversations.d.ts +2235 -0
  450. package/resources/conversations/conversations.d.ts.map +1 -0
  451. package/resources/conversations/conversations.js +753 -0
  452. package/resources/conversations/conversations.js.map +1 -0
  453. package/resources/conversations/conversations.mjs +748 -0
  454. package/resources/conversations/conversations.mjs.map +1 -0
  455. package/resources/conversations/index.d.mts +4 -0
  456. package/resources/conversations/index.d.mts.map +1 -0
  457. package/resources/conversations/index.d.ts +4 -0
  458. package/resources/conversations/index.d.ts.map +1 -0
  459. package/resources/conversations/index.js +11 -0
  460. package/resources/conversations/index.js.map +1 -0
  461. package/resources/conversations/index.mjs +5 -0
  462. package/resources/conversations/index.mjs.map +1 -0
  463. package/resources/conversations/participants.d.mts +217 -0
  464. package/resources/conversations/participants.d.mts.map +1 -0
  465. package/resources/conversations/participants.d.ts +217 -0
  466. package/resources/conversations/participants.d.ts.map +1 -0
  467. package/resources/conversations/participants.js +185 -0
  468. package/resources/conversations/participants.js.map +1 -0
  469. package/resources/conversations/participants.mjs +181 -0
  470. package/resources/conversations/participants.mjs.map +1 -0
  471. package/resources/conversations/tags.d.mts +200 -0
  472. package/resources/conversations/tags.d.mts.map +1 -0
  473. package/resources/conversations/tags.d.ts +200 -0
  474. package/resources/conversations/tags.d.ts.map +1 -0
  475. package/resources/conversations/tags.js +138 -0
  476. package/resources/conversations/tags.js.map +1 -0
  477. package/resources/conversations/tags.mjs +134 -0
  478. package/resources/conversations/tags.mjs.map +1 -0
  479. package/resources/conversations.d.mts +2 -0
  480. package/resources/conversations.d.mts.map +1 -0
  481. package/resources/conversations.d.ts +2 -0
  482. package/resources/conversations.d.ts.map +1 -0
  483. package/resources/conversations.js +6 -0
  484. package/resources/conversations.js.map +1 -0
  485. package/resources/conversations.mjs +3 -0
  486. package/resources/conversations.mjs.map +1 -0
  487. package/resources/custom-fields.d.mts +189 -0
  488. package/resources/custom-fields.d.mts.map +1 -0
  489. package/resources/custom-fields.d.ts +189 -0
  490. package/resources/custom-fields.d.ts.map +1 -0
  491. package/resources/custom-fields.js +92 -0
  492. package/resources/custom-fields.js.map +1 -0
  493. package/resources/custom-fields.mjs +88 -0
  494. package/resources/custom-fields.mjs.map +1 -0
  495. package/resources/help-center/articles.d.mts +770 -0
  496. package/resources/help-center/articles.d.mts.map +1 -0
  497. package/resources/help-center/articles.d.ts +770 -0
  498. package/resources/help-center/articles.d.ts.map +1 -0
  499. package/resources/help-center/articles.js +296 -0
  500. package/resources/help-center/articles.js.map +1 -0
  501. package/resources/help-center/articles.mjs +292 -0
  502. package/resources/help-center/articles.mjs.map +1 -0
  503. package/resources/help-center/collections.d.mts +669 -0
  504. package/resources/help-center/collections.d.mts.map +1 -0
  505. package/resources/help-center/collections.d.ts +669 -0
  506. package/resources/help-center/collections.d.ts.map +1 -0
  507. package/resources/help-center/collections.js +278 -0
  508. package/resources/help-center/collections.js.map +1 -0
  509. package/resources/help-center/collections.mjs +274 -0
  510. package/resources/help-center/collections.mjs.map +1 -0
  511. package/resources/help-center/help-center.d.mts +22 -0
  512. package/resources/help-center/help-center.d.mts.map +1 -0
  513. package/resources/help-center/help-center.d.ts +22 -0
  514. package/resources/help-center/help-center.d.ts.map +1 -0
  515. package/resources/help-center/help-center.js +29 -0
  516. package/resources/help-center/help-center.js.map +1 -0
  517. package/resources/help-center/help-center.mjs +24 -0
  518. package/resources/help-center/help-center.mjs.map +1 -0
  519. package/resources/help-center/help-centers.d.mts +312 -0
  520. package/resources/help-center/help-centers.d.mts.map +1 -0
  521. package/resources/help-center/help-centers.d.ts +312 -0
  522. package/resources/help-center/help-centers.d.ts.map +1 -0
  523. package/resources/help-center/help-centers.js +111 -0
  524. package/resources/help-center/help-centers.js.map +1 -0
  525. package/resources/help-center/help-centers.mjs +107 -0
  526. package/resources/help-center/help-centers.mjs.map +1 -0
  527. package/resources/help-center/index.d.mts +6 -0
  528. package/resources/help-center/index.d.mts.map +1 -0
  529. package/resources/help-center/index.d.ts +6 -0
  530. package/resources/help-center/index.d.ts.map +1 -0
  531. package/resources/help-center/index.js +15 -0
  532. package/resources/help-center/index.js.map +1 -0
  533. package/resources/help-center/index.mjs +7 -0
  534. package/resources/help-center/index.mjs.map +1 -0
  535. package/resources/help-center/redirect-rules.d.mts +417 -0
  536. package/resources/help-center/redirect-rules.d.mts.map +1 -0
  537. package/resources/help-center/redirect-rules.d.ts +417 -0
  538. package/resources/help-center/redirect-rules.d.ts.map +1 -0
  539. package/resources/help-center/redirect-rules.js +297 -0
  540. package/resources/help-center/redirect-rules.js.map +1 -0
  541. package/resources/help-center/redirect-rules.mjs +293 -0
  542. package/resources/help-center/redirect-rules.mjs.map +1 -0
  543. package/resources/help-center.d.mts +2 -0
  544. package/resources/help-center.d.mts.map +1 -0
  545. package/resources/help-center.d.ts +2 -0
  546. package/resources/help-center.d.ts.map +1 -0
  547. package/resources/help-center.js +6 -0
  548. package/resources/help-center.js.map +1 -0
  549. package/resources/help-center.mjs +3 -0
  550. package/resources/help-center.mjs.map +1 -0
  551. package/resources/index.d.mts +18 -0
  552. package/resources/index.d.mts.map +1 -0
  553. package/resources/index.d.ts +18 -0
  554. package/resources/index.d.ts.map +1 -0
  555. package/resources/index.js +39 -0
  556. package/resources/index.js.map +1 -0
  557. package/resources/index.mjs +19 -0
  558. package/resources/index.mjs.map +1 -0
  559. package/resources/post-statuses.d.mts +74 -0
  560. package/resources/post-statuses.d.mts.map +1 -0
  561. package/resources/post-statuses.d.ts +74 -0
  562. package/resources/post-statuses.d.ts.map +1 -0
  563. package/resources/post-statuses.js +53 -0
  564. package/resources/post-statuses.js.map +1 -0
  565. package/resources/post-statuses.mjs +49 -0
  566. package/resources/post-statuses.mjs.map +1 -0
  567. package/resources/posts/index.d.mts +3 -0
  568. package/resources/posts/index.d.mts.map +1 -0
  569. package/resources/posts/index.d.ts +3 -0
  570. package/resources/posts/index.d.ts.map +1 -0
  571. package/resources/posts/index.js +9 -0
  572. package/resources/posts/index.js.map +1 -0
  573. package/resources/posts/index.mjs +4 -0
  574. package/resources/posts/index.mjs.map +1 -0
  575. package/resources/posts/posts.d.mts +799 -0
  576. package/resources/posts/posts.d.mts.map +1 -0
  577. package/resources/posts/posts.d.ts +799 -0
  578. package/resources/posts/posts.d.ts.map +1 -0
  579. package/resources/posts/posts.js +271 -0
  580. package/resources/posts/posts.js.map +1 -0
  581. package/resources/posts/posts.mjs +266 -0
  582. package/resources/posts/posts.mjs.map +1 -0
  583. package/resources/posts/voters.d.mts +359 -0
  584. package/resources/posts/voters.d.mts.map +1 -0
  585. package/resources/posts/voters.d.ts +359 -0
  586. package/resources/posts/voters.d.ts.map +1 -0
  587. package/resources/posts/voters.js +171 -0
  588. package/resources/posts/voters.js.map +1 -0
  589. package/resources/posts/voters.mjs +167 -0
  590. package/resources/posts/voters.mjs.map +1 -0
  591. package/resources/posts.d.mts +2 -0
  592. package/resources/posts.d.mts.map +1 -0
  593. package/resources/posts.d.ts +2 -0
  594. package/resources/posts.d.ts.map +1 -0
  595. package/resources/posts.js +6 -0
  596. package/resources/posts.js.map +1 -0
  597. package/resources/posts.mjs +3 -0
  598. package/resources/posts.mjs.map +1 -0
  599. package/resources/surveys.d.mts +451 -0
  600. package/resources/surveys.d.mts.map +1 -0
  601. package/resources/surveys.d.ts +451 -0
  602. package/resources/surveys.d.ts.map +1 -0
  603. package/resources/surveys.js +149 -0
  604. package/resources/surveys.js.map +1 -0
  605. package/resources/surveys.mjs +145 -0
  606. package/resources/surveys.mjs.map +1 -0
  607. package/resources/tags.d.mts +147 -0
  608. package/resources/tags.d.mts.map +1 -0
  609. package/resources/tags.d.ts +147 -0
  610. package/resources/tags.d.ts.map +1 -0
  611. package/resources/tags.js +100 -0
  612. package/resources/tags.js.map +1 -0
  613. package/resources/tags.mjs +96 -0
  614. package/resources/tags.mjs.map +1 -0
  615. package/resources/teams.d.mts +165 -0
  616. package/resources/teams.d.mts.map +1 -0
  617. package/resources/teams.d.ts +165 -0
  618. package/resources/teams.d.ts.map +1 -0
  619. package/resources/teams.js +120 -0
  620. package/resources/teams.js.map +1 -0
  621. package/resources/teams.mjs +116 -0
  622. package/resources/teams.mjs.map +1 -0
  623. package/resources/tickets/categories.d.mts +63 -0
  624. package/resources/tickets/categories.d.mts.map +1 -0
  625. package/resources/tickets/categories.d.ts +63 -0
  626. package/resources/tickets/categories.d.ts.map +1 -0
  627. package/resources/tickets/categories.js +67 -0
  628. package/resources/tickets/categories.js.map +1 -0
  629. package/resources/tickets/categories.mjs +63 -0
  630. package/resources/tickets/categories.mjs.map +1 -0
  631. package/resources/tickets/custom-fields.d.mts +80 -0
  632. package/resources/tickets/custom-fields.d.mts.map +1 -0
  633. package/resources/tickets/custom-fields.d.ts +80 -0
  634. package/resources/tickets/custom-fields.d.ts.map +1 -0
  635. package/resources/tickets/custom-fields.js +85 -0
  636. package/resources/tickets/custom-fields.js.map +1 -0
  637. package/resources/tickets/custom-fields.mjs +81 -0
  638. package/resources/tickets/custom-fields.mjs.map +1 -0
  639. package/resources/tickets/index.d.mts +5 -0
  640. package/resources/tickets/index.d.mts.map +1 -0
  641. package/resources/tickets/index.d.ts +5 -0
  642. package/resources/tickets/index.d.ts.map +1 -0
  643. package/resources/tickets/index.js +13 -0
  644. package/resources/tickets/index.js.map +1 -0
  645. package/resources/tickets/index.mjs +6 -0
  646. package/resources/tickets/index.mjs.map +1 -0
  647. package/resources/tickets/statuses.d.mts +59 -0
  648. package/resources/tickets/statuses.d.mts.map +1 -0
  649. package/resources/tickets/statuses.d.ts +59 -0
  650. package/resources/tickets/statuses.d.ts.map +1 -0
  651. package/resources/tickets/statuses.js +63 -0
  652. package/resources/tickets/statuses.js.map +1 -0
  653. package/resources/tickets/statuses.mjs +59 -0
  654. package/resources/tickets/statuses.mjs.map +1 -0
  655. package/resources/tickets/tickets.d.mts +794 -0
  656. package/resources/tickets/tickets.d.mts.map +1 -0
  657. package/resources/tickets/tickets.d.ts +794 -0
  658. package/resources/tickets/tickets.d.ts.map +1 -0
  659. package/resources/tickets/tickets.js +327 -0
  660. package/resources/tickets/tickets.js.map +1 -0
  661. package/resources/tickets/tickets.mjs +322 -0
  662. package/resources/tickets/tickets.mjs.map +1 -0
  663. package/resources/tickets.d.mts +2 -0
  664. package/resources/tickets.d.mts.map +1 -0
  665. package/resources/tickets.d.ts +2 -0
  666. package/resources/tickets.d.ts.map +1 -0
  667. package/resources/tickets.js +6 -0
  668. package/resources/tickets.js.map +1 -0
  669. package/resources/tickets.mjs +3 -0
  670. package/resources/tickets.mjs.map +1 -0
  671. package/resources/webhooks.d.mts +626 -0
  672. package/resources/webhooks.d.mts.map +1 -0
  673. package/resources/webhooks.d.ts +626 -0
  674. package/resources/webhooks.d.ts.map +1 -0
  675. package/resources/webhooks.js +442 -0
  676. package/resources/webhooks.js.map +1 -0
  677. package/resources/webhooks.mjs +438 -0
  678. package/resources/webhooks.mjs.map +1 -0
  679. package/resources.d.mts +2 -0
  680. package/resources.d.mts.map +1 -0
  681. package/resources.d.ts +2 -0
  682. package/resources.d.ts.map +1 -0
  683. package/resources.js +5 -0
  684. package/resources.js.map +1 -0
  685. package/resources.mjs +2 -0
  686. package/resources.mjs.map +1 -0
  687. package/src/api-promise.ts +2 -0
  688. package/src/client.ts +1169 -0
  689. package/src/core/README.md +3 -0
  690. package/src/core/api-promise.ts +92 -0
  691. package/src/core/error.ts +130 -0
  692. package/src/core/resource.ts +11 -0
  693. package/src/core/uploads.ts +2 -0
  694. package/src/error.ts +2 -0
  695. package/src/index.ts +22 -0
  696. package/src/internal/README.md +3 -0
  697. package/src/internal/builtin-types.ts +93 -0
  698. package/src/internal/detect-platform.ts +196 -0
  699. package/src/internal/errors.ts +33 -0
  700. package/src/internal/headers.ts +97 -0
  701. package/src/internal/parse.ts +56 -0
  702. package/src/internal/qs/LICENSE.md +13 -0
  703. package/src/internal/qs/README.md +3 -0
  704. package/src/internal/qs/formats.ts +10 -0
  705. package/src/internal/qs/index.ts +13 -0
  706. package/src/internal/qs/stringify.ts +385 -0
  707. package/src/internal/qs/types.ts +71 -0
  708. package/src/internal/qs/utils.ts +265 -0
  709. package/src/internal/request-options.ts +91 -0
  710. package/src/internal/shim-types.ts +26 -0
  711. package/src/internal/shims.ts +107 -0
  712. package/src/internal/to-file.ts +154 -0
  713. package/src/internal/types.ts +95 -0
  714. package/src/internal/uploads.ts +187 -0
  715. package/src/internal/utils/base64.ts +40 -0
  716. package/src/internal/utils/bytes.ts +32 -0
  717. package/src/internal/utils/env.ts +18 -0
  718. package/src/internal/utils/log.ts +126 -0
  719. package/src/internal/utils/path.ts +88 -0
  720. package/src/internal/utils/query.ts +7 -0
  721. package/src/internal/utils/sleep.ts +3 -0
  722. package/src/internal/utils/uuid.ts +17 -0
  723. package/src/internal/utils/values.ts +105 -0
  724. package/src/internal/utils.ts +9 -0
  725. package/src/lib/.keep +4 -0
  726. package/src/resource.ts +2 -0
  727. package/src/resources/admins.ts +557 -0
  728. package/src/resources/boards.ts +259 -0
  729. package/src/resources/brands.ts +232 -0
  730. package/src/resources/changelogs/changelogs.ts +1139 -0
  731. package/src/resources/changelogs/index.ts +23 -0
  732. package/src/resources/changelogs/subscribers.ts +226 -0
  733. package/src/resources/changelogs.ts +3 -0
  734. package/src/resources/comments.ts +786 -0
  735. package/src/resources/companies/companies.ts +632 -0
  736. package/src/resources/companies/contacts.ts +299 -0
  737. package/src/resources/companies/index.ts +21 -0
  738. package/src/resources/companies.ts +3 -0
  739. package/src/resources/contacts/by-user-id/by-user-id.ts +200 -0
  740. package/src/resources/contacts/by-user-id/email-preferences.ts +243 -0
  741. package/src/resources/contacts/by-user-id/index.ts +13 -0
  742. package/src/resources/contacts/by-user-id.ts +3 -0
  743. package/src/resources/contacts/contacts.ts +908 -0
  744. package/src/resources/contacts/email-preferences.ts +399 -0
  745. package/src/resources/contacts/index.ts +32 -0
  746. package/src/resources/contacts.ts +3 -0
  747. package/src/resources/conversations/conversations.ts +2721 -0
  748. package/src/resources/conversations/index.ts +31 -0
  749. package/src/resources/conversations/participants.ts +263 -0
  750. package/src/resources/conversations/tags.ts +252 -0
  751. package/src/resources/conversations.ts +3 -0
  752. package/src/resources/custom-fields.ts +249 -0
  753. package/src/resources/help-center/articles.ts +1231 -0
  754. package/src/resources/help-center/collections.ts +1065 -0
  755. package/src/resources/help-center/help-center.ts +125 -0
  756. package/src/resources/help-center/help-centers.ts +558 -0
  757. package/src/resources/help-center/index.ts +52 -0
  758. package/src/resources/help-center/redirect-rules.ts +711 -0
  759. package/src/resources/help-center.ts +3 -0
  760. package/src/resources/index.ts +179 -0
  761. package/src/resources/post-statuses.ts +119 -0
  762. package/src/resources/posts/index.ts +22 -0
  763. package/src/resources/posts/posts.ts +1019 -0
  764. package/src/resources/posts/voters.ts +453 -0
  765. package/src/resources/posts.ts +3 -0
  766. package/src/resources/surveys.ts +576 -0
  767. package/src/resources/tags.ts +226 -0
  768. package/src/resources/teams.ts +213 -0
  769. package/src/resources/tickets/categories.ts +101 -0
  770. package/src/resources/tickets/custom-fields.ts +116 -0
  771. package/src/resources/tickets/index.ts +28 -0
  772. package/src/resources/tickets/statuses.ts +97 -0
  773. package/src/resources/tickets/tickets.ts +1019 -0
  774. package/src/resources/tickets.ts +3 -0
  775. package/src/resources/webhooks.ts +850 -0
  776. package/src/resources.ts +1 -0
  777. package/src/tsconfig.json +11 -0
  778. package/src/uploads.ts +2 -0
  779. package/src/version.ts +1 -0
  780. package/uploads.d.mts +2 -0
  781. package/uploads.d.mts.map +1 -0
  782. package/uploads.d.ts +2 -0
  783. package/uploads.d.ts.map +1 -0
  784. package/uploads.js +6 -0
  785. package/uploads.js.map +1 -0
  786. package/uploads.mjs +2 -0
  787. package/uploads.mjs.map +1 -0
  788. package/version.d.mts +2 -0
  789. package/version.d.mts.map +1 -0
  790. package/version.d.ts +2 -0
  791. package/version.d.ts.map +1 -0
  792. package/version.js +5 -0
  793. package/version.js.map +1 -0
  794. package/version.mjs +2 -0
  795. package/version.mjs.map +1 -0
@@ -0,0 +1,786 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import * as TicketsAPI from './tickets/tickets';
5
+ import { APIPromise } from '../core/api-promise';
6
+ import { buildHeaders } from '../internal/headers';
7
+ import { RequestOptions } from '../internal/request-options';
8
+ import { path } from '../internal/utils/path';
9
+
10
+ /**
11
+ * Threaded discussions on posts and changelogs. Comments support voting, moderation, and privacy controls.
12
+ */
13
+ export class Comments extends APIResource {
14
+ /**
15
+ * Creates a new comment or reply to an existing comment.
16
+ *
17
+ * You can create a comment for a post or changelog. Comments support:
18
+ *
19
+ * - HTML content (images are automatically uploaded to our storage)
20
+ * - Threading (replies via `parentCommentId`)
21
+ * - Privacy controls (private comments visible only to admins)
22
+ * - Author attribution (post on behalf of users)
23
+ *
24
+ * ### Required Fields
25
+ *
26
+ * - `content` - Comment content in HTML format
27
+ * - `postId` OR `changelogId` - One is required to specify the target
28
+ *
29
+ * ### Optional Fields
30
+ *
31
+ * - `parentCommentId` - Create a reply to an existing comment
32
+ * - `isPrivate` - Make comment visible only to admins (default: false)
33
+ * - `sendNotification` - Notify voters about the comment (default: true)
34
+ * - `author` - Post comment under a specific user (uses authenticated user if not
35
+ * provided)
36
+ * - `createdAt` - Backdate creation (useful for imports)
37
+ *
38
+ * ### Author Object
39
+ *
40
+ * The `author` field supports multiple identification methods:
41
+ *
42
+ * - `id` - Featurebase user ID (direct reference)
43
+ * - `userId` - External user ID from your system (via SSO)
44
+ * - `email` - Email address (finds existing or creates new user)
45
+ * - `name` - Display name (used with email for new users)
46
+ * - `profilePicture` - Profile picture URL
47
+ *
48
+ * If no author is provided, the comment is posted under the authenticated user.
49
+ *
50
+ * ### Content Format
51
+ *
52
+ * Content should be formatted as HTML. For images:
53
+ *
54
+ * - External URLs in `img src` attributes are automatically pulled into our
55
+ * storage
56
+ * - Base64 encoded data URIs (`data:image/...`) are also supported and processed
57
+ *
58
+ * ### Response
59
+ *
60
+ * Returns the created comment object with all fields populated, including:
61
+ *
62
+ * - `id` - Unique comment identifier
63
+ * - `author` - Author information
64
+ * - Voting stats and timestamps
65
+ *
66
+ * ### Errors
67
+ *
68
+ * - `400` - Invalid input (missing required fields, invalid IDs)
69
+ * - `403` - Commenting disabled or not authorized
70
+ * - `404` - Post/changelog not found or parent comment not found
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const comment = await client.comments.create({
75
+ * content: '<p>This is a great idea!</p>',
76
+ * });
77
+ * ```
78
+ */
79
+ create(params: CommentCreateParams, options?: RequestOptions): APIPromise<Comment> {
80
+ const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
81
+ return this._client.post('/v2/comments', {
82
+ body,
83
+ ...options,
84
+ headers: buildHeaders([
85
+ { ...(featurebaseVersion != null ? { 'Featurebase-Version': featurebaseVersion } : undefined) },
86
+ options?.headers,
87
+ ]),
88
+ });
89
+ }
90
+
91
+ /**
92
+ * Retrieves a single comment by its unique identifier.
93
+ *
94
+ * Returns the full comment object including:
95
+ *
96
+ * - Author information
97
+ * - Voting stats (upvotes, downvotes, score)
98
+ * - Privacy and moderation status
99
+ * - Threading information (parentCommentId)
100
+ * - Timestamps
101
+ *
102
+ * ### Response
103
+ *
104
+ * Returns a comment object with all fields populated.
105
+ *
106
+ * ### Errors
107
+ *
108
+ * - `400` - Invalid comment ID format
109
+ * - `404` - Comment not found or doesn't belong to your organization
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * const comment = await client.comments.retrieve(
114
+ * '507f1f77bcf86cd799439011',
115
+ * );
116
+ * ```
117
+ */
118
+ retrieve(
119
+ id: string,
120
+ params: CommentRetrieveParams | null | undefined = {},
121
+ options?: RequestOptions,
122
+ ): APIPromise<Comment> {
123
+ const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
124
+ return this._client.get(path`/v2/comments/${id}`, {
125
+ ...options,
126
+ headers: buildHeaders([
127
+ { ...(featurebaseVersion != null ? { 'Featurebase-Version': featurebaseVersion } : undefined) },
128
+ options?.headers,
129
+ ]),
130
+ });
131
+ }
132
+
133
+ /**
134
+ * Updates an existing comment by its unique identifier.
135
+ *
136
+ * You can update:
137
+ *
138
+ * - **content** - Comment text (HTML format)
139
+ * - **isPrivate** - Privacy status (admin-only visibility)
140
+ * - **isPinned** - Pinned status (displayed at top)
141
+ * - **inReview** - Moderation status
142
+ *
143
+ * ### Content Format
144
+ *
145
+ * Content should be formatted as HTML. For images:
146
+ *
147
+ * - External URLs in `img src` attributes are automatically pulled into our
148
+ * storage
149
+ * - Base64 encoded data URIs (`data:image/...`) are also supported and processed
150
+ *
151
+ * ### Permissions
152
+ *
153
+ * - Comment authors can update their own comment content
154
+ * - Admin permissions required for:
155
+ * - `isPrivate` - Requires `manage_comments_private` permission
156
+ * - `isPinned` - Requires `set_comment_pinned` permission
157
+ * - `inReview` - Requires `moderate_comments` permission
158
+ * - Updating other users' comments - Requires `moderate_comments` permission
159
+ *
160
+ * ### Response
161
+ *
162
+ * Returns the updated comment object with all fields populated.
163
+ *
164
+ * ### Errors
165
+ *
166
+ * - `400` - Invalid comment ID format or input
167
+ * - `403` - Not authorized to update this comment
168
+ * - `404` - Comment not found
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * const comment = await client.comments.update(
173
+ * '507f1f77bcf86cd799439011',
174
+ * );
175
+ * ```
176
+ */
177
+ update(id: string, params: CommentUpdateParams, options?: RequestOptions): APIPromise<Comment> {
178
+ const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
179
+ return this._client.patch(path`/v2/comments/${id}`, {
180
+ body,
181
+ ...options,
182
+ headers: buildHeaders([
183
+ { ...(featurebaseVersion != null ? { 'Featurebase-Version': featurebaseVersion } : undefined) },
184
+ options?.headers,
185
+ ]),
186
+ });
187
+ }
188
+
189
+ /**
190
+ * Returns comments for your organization.
191
+ *
192
+ * Comments are threaded discussions. Each comment can have:
193
+ *
194
+ * - Author information
195
+ * - Voting (upvotes/downvotes)
196
+ * - Privacy settings (public/private)
197
+ * - Moderation status
198
+ * - Parent comment reference for threading
199
+ *
200
+ * ### Filtering
201
+ *
202
+ * Optionally filter by:
203
+ *
204
+ * - `postId` - Get comments for a specific post
205
+ * - `changelogId` - Get comments for a specific changelog
206
+ *
207
+ * If no filter is provided, returns all comments across the organization.
208
+ *
209
+ * ### Pagination
210
+ *
211
+ * This endpoint uses **cursor-based pagination**:
212
+ *
213
+ * - `limit` - Number of comments to return (1-100, default 10)
214
+ * - `cursor` - Opaque cursor from a previous response's `nextCursor` field
215
+ *
216
+ * **Example:** To paginate through results:
217
+ *
218
+ * 1. First request: `GET /v2/comments?postId={id}&limit=10`
219
+ * 2. If `nextCursor` is not null, use it for the next page
220
+ * 3. Next request: `GET /v2/comments?postId={id}&limit=10&cursor={nextCursor}`
221
+ *
222
+ * ### Response Format
223
+ *
224
+ * Returns a list object with:
225
+ *
226
+ * - `object` - Always "list"
227
+ * - `data` - Array of comment objects (flat structure with `parentCommentId` for
228
+ * threading)
229
+ * - `nextCursor` - Cursor for the next page (null if no more results)
230
+ *
231
+ * ### Comment Structure
232
+ *
233
+ * Each comment includes:
234
+ *
235
+ * - `id` - Unique comment identifier
236
+ * - `postId` / `changelogId` - Reference to the parent content
237
+ * - `parentCommentId` - Reference to parent comment (null for root comments)
238
+ * - `content` - Comment content in HTML format
239
+ * - `author` - Author information (id, name, profilePicture, type)
240
+ * - `upvotes` / `downvotes` / `score` - Voting metrics
241
+ * - `isPrivate` - Whether comment is only visible to admins
242
+ * - `inReview` - Whether comment is pending moderation
243
+ * - `created` / `updated` - Unix timestamps
244
+ *
245
+ * ### Additional Filters
246
+ *
247
+ * - `privacy` - Filter by privacy: "public", "private", or "all"
248
+ * - `inReview` - Filter by moderation status (true/false)
249
+ *
250
+ * ### Sorting
251
+ *
252
+ * Use `sortBy` to sort results:
253
+ *
254
+ * - `best` - Sort by confidence score (default, like Reddit)
255
+ * - `top` - Sort by net score (upvotes - downvotes)
256
+ * - `new` - Sort by creation date, newest first
257
+ * - `old` - Sort by creation date, oldest first
258
+ *
259
+ * @example
260
+ * ```ts
261
+ * const comments = await client.comments.list();
262
+ * ```
263
+ */
264
+ list(
265
+ params: CommentListParams | null | undefined = {},
266
+ options?: RequestOptions,
267
+ ): APIPromise<CommentListResponse> {
268
+ const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
269
+ return this._client.get('/v2/comments', {
270
+ query,
271
+ ...options,
272
+ headers: buildHeaders([
273
+ { ...(featurebaseVersion != null ? { 'Featurebase-Version': featurebaseVersion } : undefined) },
274
+ options?.headers,
275
+ ]),
276
+ });
277
+ }
278
+
279
+ /**
280
+ * Deletes a comment by its unique identifier.
281
+ *
282
+ * ### Deletion Behavior
283
+ *
284
+ * - **Comments with replies**: Soft delete
285
+ *
286
+ * - Content is replaced with "[deleted]"
287
+ * - Author information is anonymized
288
+ * - Comment remains visible to maintain conversation context
289
+ * - Votes and scores are reset to 0
290
+ *
291
+ * - **Comments without replies**: Hard delete
292
+ * - Comment is permanently removed from the database
293
+ * - All associated data is deleted
294
+ *
295
+ * ### Permissions
296
+ *
297
+ * - Comment authors can delete their own comments
298
+ * - Admins can delete any comment (subject to permissions)
299
+ * - Lite seat admins can only delete their own comments
300
+ * - Non-authors require `manage_comments` or `manage_comments_private` permission
301
+ *
302
+ * ### Response
303
+ *
304
+ * Returns a deletion confirmation:
305
+ *
306
+ * ```json
307
+ * {
308
+ * "id": "507f1f77bcf86cd799439011",
309
+ * "object": "comment",
310
+ * "deleted": true
311
+ * }
312
+ * ```
313
+ *
314
+ * ### Errors
315
+ *
316
+ * - `400` - Invalid comment ID format
317
+ * - `403` - Not authorized to delete this comment
318
+ * - `404` - Comment not found or doesn't belong to your organization
319
+ *
320
+ * @example
321
+ * ```ts
322
+ * const response = await client.comments.delete0(
323
+ * '507f1f77bcf86cd799439011',
324
+ * );
325
+ * ```
326
+ */
327
+ delete0(
328
+ id: string,
329
+ params: CommentDelete0Params | null | undefined = {},
330
+ options?: RequestOptions,
331
+ ): APIPromise<CommentDelete0Response> {
332
+ const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
333
+ return this._client.delete(path`/v2/comments/${id}`, {
334
+ ...options,
335
+ headers: buildHeaders([
336
+ { ...(featurebaseVersion != null ? { 'Featurebase-Version': featurebaseVersion } : undefined) },
337
+ options?.headers,
338
+ ]),
339
+ });
340
+ }
341
+
342
+ /**
343
+ * Deletes a comment using the legacy Clover API format.
344
+ *
345
+ * This endpoint accepts the comment ID in the request body instead of the route
346
+ * parameter.
347
+ *
348
+ * ### Request Body
349
+ *
350
+ * ```json
351
+ * {
352
+ * "id": "507f1f77bcf86cd799439011"
353
+ * }
354
+ * ```
355
+ *
356
+ * ### Deletion Behavior
357
+ *
358
+ * - **Comments with replies**: Soft delete
359
+ *
360
+ * - Content is replaced with "[deleted]"
361
+ * - Author information is anonymized
362
+ * - Comment remains visible to maintain conversation context
363
+ * - Votes and scores are reset to 0
364
+ *
365
+ * - **Comments without replies**: Hard delete
366
+ * - Comment is permanently removed from the database
367
+ * - All associated data is deleted
368
+ *
369
+ * ### Permissions
370
+ *
371
+ * - Comment authors can delete their own comments
372
+ * - Admins can delete any comment (subject to permissions)
373
+ * - Lite seat admins can only delete their own comments
374
+ * - Non-authors require `manage_comments` or `manage_comments_private` permission
375
+ *
376
+ * ### Response
377
+ *
378
+ * Returns a success confirmation (Clover format):
379
+ *
380
+ * ```json
381
+ * {
382
+ * "success": true
383
+ * }
384
+ * ```
385
+ *
386
+ * Note: Nova API returns `{ id, object: "comment", deleted: true }`, but Clover
387
+ * transformer converts it to `{ success: true }` for backwards compatibility.
388
+ *
389
+ * ### Errors
390
+ *
391
+ * - `400` - Invalid comment ID format or missing ID in body
392
+ * - `403` - Not authorized to delete this comment
393
+ * - `404` - Comment not found or doesn't belong to your organization
394
+ *
395
+ * @example
396
+ * ```ts
397
+ * const response = await client.comments.delete1({
398
+ * id: '507f1f77bcf86cd799439011',
399
+ * });
400
+ * ```
401
+ */
402
+ delete1(params: CommentDelete1Params, options?: RequestOptions): APIPromise<CommentDelete1Response> {
403
+ const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
404
+ return this._client.delete('/v2/comment', {
405
+ body,
406
+ ...options,
407
+ headers: buildHeaders([
408
+ { ...(featurebaseVersion != null ? { 'Featurebase-Version': featurebaseVersion } : undefined) },
409
+ options?.headers,
410
+ ]),
411
+ });
412
+ }
413
+ }
414
+
415
+ export interface Comment {
416
+ /**
417
+ * Unique identifier
418
+ */
419
+ id: string;
420
+
421
+ author: Comment.Author | null;
422
+
423
+ /**
424
+ * Changelog ID this comment belongs to
425
+ */
426
+ changelogId: string | null;
427
+
428
+ /**
429
+ * Comment content in HTML format
430
+ */
431
+ content: string;
432
+
433
+ /**
434
+ * ISO 8601 timestamp when created
435
+ */
436
+ createdAt: string;
437
+
438
+ /**
439
+ * Number of downvotes
440
+ */
441
+ downvotes: number;
442
+
443
+ /**
444
+ * Whether the comment is in review
445
+ */
446
+ inReview: boolean;
447
+
448
+ /**
449
+ * Whether the comment is deleted
450
+ */
451
+ isDeleted: boolean;
452
+
453
+ /**
454
+ * Whether the comment is pinned
455
+ */
456
+ isPinned: boolean;
457
+
458
+ /**
459
+ * Whether the comment is private
460
+ */
461
+ isPrivate: boolean;
462
+
463
+ /**
464
+ * Whether the comment is spam
465
+ */
466
+ isSpam: boolean;
467
+
468
+ /**
469
+ * Object type identifier
470
+ */
471
+ object: 'comment';
472
+
473
+ /**
474
+ * Parent comment ID for replies, null for root comments
475
+ */
476
+ parentCommentId: string | null;
477
+
478
+ /**
479
+ * Post ID this comment belongs to
480
+ */
481
+ postId: string | null;
482
+
483
+ /**
484
+ * Net score (upvotes - downvotes)
485
+ */
486
+ score: number;
487
+
488
+ /**
489
+ * ISO 8601 timestamp when updated
490
+ */
491
+ updatedAt: string;
492
+
493
+ /**
494
+ * Number of upvotes
495
+ */
496
+ upvotes: number;
497
+ }
498
+
499
+ export namespace Comment {
500
+ export interface Author {
501
+ /**
502
+ * Author unique identifier
503
+ */
504
+ id: string | null;
505
+
506
+ /**
507
+ * Author display name
508
+ */
509
+ name: string;
510
+
511
+ /**
512
+ * Author profile picture URL
513
+ */
514
+ profilePicture: string | null;
515
+
516
+ /**
517
+ * Type of user who authored the comment
518
+ */
519
+ type: 'admin' | 'customer' | 'guest' | 'integration' | 'bot' | 'lead';
520
+ }
521
+ }
522
+
523
+ export interface CommentListResponse {
524
+ /**
525
+ * Array of comments
526
+ */
527
+ data: Array<Comment>;
528
+
529
+ /**
530
+ * Cursor for fetching the next page (cursor-based pagination)
531
+ */
532
+ nextCursor: string | null;
533
+
534
+ /**
535
+ * Object type identifier
536
+ */
537
+ object: 'list';
538
+
539
+ /**
540
+ * Pagination metadata for page-based requests
541
+ */
542
+ pagination?: CommentListResponse.Pagination;
543
+ }
544
+
545
+ export namespace CommentListResponse {
546
+ /**
547
+ * Pagination metadata for page-based requests
548
+ */
549
+ export interface Pagination {
550
+ /**
551
+ * Items per page
552
+ */
553
+ limit: number;
554
+
555
+ /**
556
+ * Current page number
557
+ */
558
+ page: number;
559
+
560
+ /**
561
+ * Total number of items
562
+ */
563
+ total: number;
564
+
565
+ /**
566
+ * Total number of pages
567
+ */
568
+ totalPages: number;
569
+ }
570
+ }
571
+
572
+ export interface CommentDelete0Response {
573
+ /**
574
+ * Unique identifier of the deleted comment
575
+ */
576
+ id: string;
577
+
578
+ /**
579
+ * Indicates the resource was deleted
580
+ */
581
+ deleted: true;
582
+
583
+ /**
584
+ * Object type identifier
585
+ */
586
+ object: 'comment';
587
+ }
588
+
589
+ export interface CommentDelete1Response {
590
+ success: boolean;
591
+ }
592
+
593
+ export interface CommentCreateParams {
594
+ /**
595
+ * Body param: Comment content in HTML format
596
+ */
597
+ content: string;
598
+
599
+ /**
600
+ * Body param: Author to attribute the post to. If not provided, uses the
601
+ * authenticated user. Supports multiple identification methods: id (Featurebase
602
+ * ID), userId (external SSO ID), or email.
603
+ */
604
+ author?: TicketsAPI.AuthorInput;
605
+
606
+ /**
607
+ * Body param: Changelog ID to comment on (accepts ObjectId or slug)
608
+ */
609
+ changelogId?: string;
610
+
611
+ /**
612
+ * Body param: Set the date when the comment was created. Useful for importing
613
+ * comments from other platforms.
614
+ */
615
+ createdAt?: string | null;
616
+
617
+ /**
618
+ * Body param: Initial downvotes count. Useful for importing comments from other
619
+ * platforms. Score will be calculated as upvotes - downvotes.
620
+ */
621
+ downvotes?: number | null;
622
+
623
+ /**
624
+ * Body param: Whether the comment is private (only visible to admins)
625
+ */
626
+ isPrivate?: boolean | null;
627
+
628
+ /**
629
+ * Body param: Parent comment ID if this is a reply
630
+ */
631
+ parentCommentId?: string;
632
+
633
+ /**
634
+ * Body param: Post ID to comment on (accepts ObjectId or slug)
635
+ */
636
+ postId?: string;
637
+
638
+ /**
639
+ * Body param: Whether to notify voters of the submission about the comment
640
+ */
641
+ sendNotification?: boolean | null;
642
+
643
+ /**
644
+ * Body param: Initial upvotes count. Useful for importing comments from other
645
+ * platforms. Score will be calculated as upvotes - downvotes.
646
+ */
647
+ upvotes?: number | null;
648
+
649
+ /**
650
+ * Header param: API version for this request. Defaults to your organization's
651
+ * configured API version if not specified.
652
+ */
653
+ 'Featurebase-Version'?: string;
654
+ }
655
+
656
+ export interface CommentRetrieveParams {
657
+ /**
658
+ * API version for this request. Defaults to your organization's configured API
659
+ * version if not specified.
660
+ */
661
+ 'Featurebase-Version'?: string;
662
+ }
663
+
664
+ export interface CommentUpdateParams {
665
+ /**
666
+ * Body param: Comment content in HTML format
667
+ */
668
+ content?: string;
669
+
670
+ /**
671
+ * Body param: Update the creation date (useful for imports)
672
+ */
673
+ createdAt?: string | null;
674
+
675
+ /**
676
+ * Body param: Set the downvotes count directly. Score will be recalculated as
677
+ * upvotes - downvotes.
678
+ */
679
+ downvotes?: number | null;
680
+
681
+ /**
682
+ * Body param: Whether the comment is pending moderation review
683
+ */
684
+ inReview?: boolean | null;
685
+
686
+ /**
687
+ * Body param: Whether the comment is pinned at the top
688
+ */
689
+ isPinned?: boolean | null;
690
+
691
+ /**
692
+ * Body param: Whether the comment is private (only visible to admins)
693
+ */
694
+ isPrivate?: boolean | null;
695
+
696
+ /**
697
+ * Body param: Set the upvotes count directly. Score will be recalculated as
698
+ * upvotes - downvotes.
699
+ */
700
+ upvotes?: number | null;
701
+
702
+ /**
703
+ * Header param: API version for this request. Defaults to your organization's
704
+ * configured API version if not specified.
705
+ */
706
+ 'Featurebase-Version'?: string;
707
+ }
708
+
709
+ export interface CommentListParams {
710
+ /**
711
+ * Query param: Filter comments by changelog ID
712
+ */
713
+ changelogId?: string;
714
+
715
+ /**
716
+ * Query param: Cursor for pagination. Use nextCursor from previous response.
717
+ */
718
+ cursor?: string;
719
+
720
+ /**
721
+ * Query param: Filter by review status
722
+ */
723
+ inReview?: boolean | null;
724
+
725
+ /**
726
+ * Query param: Maximum number of comments to return
727
+ */
728
+ limit?: number;
729
+
730
+ /**
731
+ * Query param: Filter comments by post ID
732
+ */
733
+ postId?: string;
734
+
735
+ /**
736
+ * Query param: Filter comments by privacy
737
+ */
738
+ privacy?: 'public' | 'private' | 'all';
739
+
740
+ /**
741
+ * Query param: Sort order for comments
742
+ */
743
+ sortBy?: 'best' | 'top' | 'new' | 'old';
744
+
745
+ /**
746
+ * Header param: API version for this request. Defaults to your organization's
747
+ * configured API version if not specified.
748
+ */
749
+ 'Featurebase-Version'?: string;
750
+ }
751
+
752
+ export interface CommentDelete0Params {
753
+ /**
754
+ * API version for this request. Defaults to your organization's configured API
755
+ * version if not specified.
756
+ */
757
+ 'Featurebase-Version'?: string;
758
+ }
759
+
760
+ export interface CommentDelete1Params {
761
+ /**
762
+ * Body param: Comment ID
763
+ */
764
+ id: string;
765
+
766
+ /**
767
+ * Header param: API version for this request. Defaults to your organization's
768
+ * configured API version if not specified.
769
+ */
770
+ 'Featurebase-Version'?: string;
771
+ }
772
+
773
+ export declare namespace Comments {
774
+ export {
775
+ type Comment as Comment,
776
+ type CommentListResponse as CommentListResponse,
777
+ type CommentDelete0Response as CommentDelete0Response,
778
+ type CommentDelete1Response as CommentDelete1Response,
779
+ type CommentCreateParams as CommentCreateParams,
780
+ type CommentRetrieveParams as CommentRetrieveParams,
781
+ type CommentUpdateParams as CommentUpdateParams,
782
+ type CommentListParams as CommentListParams,
783
+ type CommentDelete0Params as CommentDelete0Params,
784
+ type CommentDelete1Params as CommentDelete1Params,
785
+ };
786
+ }