the-real-snipeit-mcp 0.1.5

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 (729) hide show
  1. package/.env.example +8 -0
  2. package/CHANGELOG.md +51 -0
  3. package/LICENSE +21 -0
  4. package/README.md +246 -0
  5. package/dist/client/errors.d.ts +49 -0
  6. package/dist/client/errors.d.ts.map +1 -0
  7. package/dist/client/errors.js +83 -0
  8. package/dist/client/errors.js.map +1 -0
  9. package/dist/client/pagination.d.ts +42 -0
  10. package/dist/client/pagination.d.ts.map +1 -0
  11. package/dist/client/pagination.js +66 -0
  12. package/dist/client/pagination.js.map +1 -0
  13. package/dist/client/retry.d.ts +34 -0
  14. package/dist/client/retry.d.ts.map +1 -0
  15. package/dist/client/retry.js +93 -0
  16. package/dist/client/retry.js.map +1 -0
  17. package/dist/client/snipeitClient.d.ts +76 -0
  18. package/dist/client/snipeitClient.d.ts.map +1 -0
  19. package/dist/client/snipeitClient.js +182 -0
  20. package/dist/client/snipeitClient.js.map +1 -0
  21. package/dist/codegen/emit.d.ts +22 -0
  22. package/dist/codegen/emit.d.ts.map +1 -0
  23. package/dist/codegen/emit.js +102 -0
  24. package/dist/codegen/emit.js.map +1 -0
  25. package/dist/codegen/generate.d.ts +2 -0
  26. package/dist/codegen/generate.d.ts.map +1 -0
  27. package/dist/codegen/generate.js +70 -0
  28. package/dist/codegen/generate.js.map +1 -0
  29. package/dist/codegen/parseOpenapi.d.ts +63 -0
  30. package/dist/codegen/parseOpenapi.d.ts.map +1 -0
  31. package/dist/codegen/parseOpenapi.js +71 -0
  32. package/dist/codegen/parseOpenapi.js.map +1 -0
  33. package/dist/codegen/schemaToZod.d.ts +22 -0
  34. package/dist/codegen/schemaToZod.d.ts.map +1 -0
  35. package/dist/codegen/schemaToZod.js +123 -0
  36. package/dist/codegen/schemaToZod.js.map +1 -0
  37. package/dist/config.d.ts +47 -0
  38. package/dist/config.d.ts.map +1 -0
  39. package/dist/config.js +66 -0
  40. package/dist/config.js.map +1 -0
  41. package/dist/constants.d.ts +17 -0
  42. package/dist/constants.d.ts.map +1 -0
  43. package/dist/constants.js +17 -0
  44. package/dist/constants.js.map +1 -0
  45. package/dist/index.d.ts +3 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +15 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/prompts/index.d.ts +3 -0
  50. package/dist/prompts/index.d.ts.map +1 -0
  51. package/dist/prompts/index.js +9 -0
  52. package/dist/prompts/index.js.map +1 -0
  53. package/dist/prompts/inventoryAudit.d.ts +3 -0
  54. package/dist/prompts/inventoryAudit.d.ts.map +1 -0
  55. package/dist/prompts/inventoryAudit.js +18 -0
  56. package/dist/prompts/inventoryAudit.js.map +1 -0
  57. package/dist/prompts/licenseHealth.d.ts +3 -0
  58. package/dist/prompts/licenseHealth.d.ts.map +1 -0
  59. package/dist/prompts/licenseHealth.js +18 -0
  60. package/dist/prompts/licenseHealth.js.map +1 -0
  61. package/dist/prompts/userOnboarding.d.ts +3 -0
  62. package/dist/prompts/userOnboarding.d.ts.map +1 -0
  63. package/dist/prompts/userOnboarding.js +26 -0
  64. package/dist/prompts/userOnboarding.js.map +1 -0
  65. package/dist/resources/identity.d.ts +4 -0
  66. package/dist/resources/identity.d.ts.map +1 -0
  67. package/dist/resources/identity.js +11 -0
  68. package/dist/resources/identity.js.map +1 -0
  69. package/dist/resources/index.d.ts +4 -0
  70. package/dist/resources/index.d.ts.map +1 -0
  71. package/dist/resources/index.js +9 -0
  72. package/dist/resources/index.js.map +1 -0
  73. package/dist/resources/settings.d.ts +4 -0
  74. package/dist/resources/settings.d.ts.map +1 -0
  75. package/dist/resources/settings.js +11 -0
  76. package/dist/resources/settings.js.map +1 -0
  77. package/dist/resources/summary.d.ts +4 -0
  78. package/dist/resources/summary.d.ts.map +1 -0
  79. package/dist/resources/summary.js +51 -0
  80. package/dist/resources/summary.js.map +1 -0
  81. package/dist/server.d.ts +37 -0
  82. package/dist/server.d.ts.map +1 -0
  83. package/dist/server.js +76 -0
  84. package/dist/server.js.map +1 -0
  85. package/dist/tools/accessories.d.ts +4 -0
  86. package/dist/tools/accessories.d.ts.map +1 -0
  87. package/dist/tools/accessories.js +64 -0
  88. package/dist/tools/accessories.js.map +1 -0
  89. package/dist/tools/bulk.d.ts +4 -0
  90. package/dist/tools/bulk.d.ts.map +1 -0
  91. package/dist/tools/bulk.js +39 -0
  92. package/dist/tools/bulk.js.map +1 -0
  93. package/dist/tools/components.d.ts +4 -0
  94. package/dist/tools/components.d.ts.map +1 -0
  95. package/dist/tools/components.js +63 -0
  96. package/dist/tools/components.js.map +1 -0
  97. package/dist/tools/consumables.d.ts +4 -0
  98. package/dist/tools/consumables.d.ts.map +1 -0
  99. package/dist/tools/consumables.js +48 -0
  100. package/dist/tools/consumables.js.map +1 -0
  101. package/dist/tools/destructiveGuard.d.ts +42 -0
  102. package/dist/tools/destructiveGuard.d.ts.map +1 -0
  103. package/dist/tools/destructiveGuard.js +51 -0
  104. package/dist/tools/destructiveGuard.js.map +1 -0
  105. package/dist/tools/generated/index.d.ts +4 -0
  106. package/dist/tools/generated/index.d.ts.map +1 -0
  107. package/dist/tools/generated/index.js +293 -0
  108. package/dist/tools/generated/index.js.map +1 -0
  109. package/dist/tools/generated/snipeit_gen_accessories.d.ts +4 -0
  110. package/dist/tools/generated/snipeit_gen_accessories.d.ts.map +1 -0
  111. package/dist/tools/generated/snipeit_gen_accessories.js +23 -0
  112. package/dist/tools/generated/snipeit_gen_accessories.js.map +1 -0
  113. package/dist/tools/generated/snipeit_gen_accessories_1.d.ts +4 -0
  114. package/dist/tools/generated/snipeit_gen_accessories_1.d.ts.map +1 -0
  115. package/dist/tools/generated/snipeit_gen_accessories_1.js +26 -0
  116. package/dist/tools/generated/snipeit_gen_accessories_1.js.map +1 -0
  117. package/dist/tools/generated/snipeit_gen_accessories_checkin.d.ts +4 -0
  118. package/dist/tools/generated/snipeit_gen_accessories_checkin.d.ts.map +1 -0
  119. package/dist/tools/generated/snipeit_gen_accessories_checkin.js +26 -0
  120. package/dist/tools/generated/snipeit_gen_accessories_checkin.js.map +1 -0
  121. package/dist/tools/generated/snipeit_gen_accessories_checkout.d.ts +4 -0
  122. package/dist/tools/generated/snipeit_gen_accessories_checkout.d.ts.map +1 -0
  123. package/dist/tools/generated/snipeit_gen_accessories_checkout.js +26 -0
  124. package/dist/tools/generated/snipeit_gen_accessories_checkout.js.map +1 -0
  125. package/dist/tools/generated/snipeit_gen_accessoriesid.d.ts +4 -0
  126. package/dist/tools/generated/snipeit_gen_accessoriesid.d.ts.map +1 -0
  127. package/dist/tools/generated/snipeit_gen_accessoriesid.js +23 -0
  128. package/dist/tools/generated/snipeit_gen_accessoriesid.js.map +1 -0
  129. package/dist/tools/generated/snipeit_gen_accessoriesid_1.d.ts +4 -0
  130. package/dist/tools/generated/snipeit_gen_accessoriesid_1.d.ts.map +1 -0
  131. package/dist/tools/generated/snipeit_gen_accessoriesid_1.js +26 -0
  132. package/dist/tools/generated/snipeit_gen_accessoriesid_1.js.map +1 -0
  133. package/dist/tools/generated/snipeit_gen_accessoriesid_2.d.ts +4 -0
  134. package/dist/tools/generated/snipeit_gen_accessoriesid_2.d.ts.map +1 -0
  135. package/dist/tools/generated/snipeit_gen_accessoriesid_2.js +26 -0
  136. package/dist/tools/generated/snipeit_gen_accessoriesid_2.js.map +1 -0
  137. package/dist/tools/generated/snipeit_gen_accessoriesid_3.d.ts +4 -0
  138. package/dist/tools/generated/snipeit_gen_accessoriesid_3.d.ts.map +1 -0
  139. package/dist/tools/generated/snipeit_gen_accessoriesid_3.js +26 -0
  140. package/dist/tools/generated/snipeit_gen_accessoriesid_3.js.map +1 -0
  141. package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.d.ts +4 -0
  142. package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.d.ts.map +1 -0
  143. package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.js +23 -0
  144. package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.js.map +1 -0
  145. package/dist/tools/generated/snipeit_gen_backups_1.d.ts +4 -0
  146. package/dist/tools/generated/snipeit_gen_backups_1.d.ts.map +1 -0
  147. package/dist/tools/generated/snipeit_gen_backups_1.js +21 -0
  148. package/dist/tools/generated/snipeit_gen_backups_1.js.map +1 -0
  149. package/dist/tools/generated/snipeit_gen_backupsdownloadfile.d.ts +4 -0
  150. package/dist/tools/generated/snipeit_gen_backupsdownloadfile.d.ts.map +1 -0
  151. package/dist/tools/generated/snipeit_gen_backupsdownloadfile.js +23 -0
  152. package/dist/tools/generated/snipeit_gen_backupsdownloadfile.js.map +1 -0
  153. package/dist/tools/generated/snipeit_gen_categories_1.d.ts +4 -0
  154. package/dist/tools/generated/snipeit_gen_categories_1.d.ts.map +1 -0
  155. package/dist/tools/generated/snipeit_gen_categories_1.js +23 -0
  156. package/dist/tools/generated/snipeit_gen_categories_1.js.map +1 -0
  157. package/dist/tools/generated/snipeit_gen_categories_2.d.ts +4 -0
  158. package/dist/tools/generated/snipeit_gen_categories_2.d.ts.map +1 -0
  159. package/dist/tools/generated/snipeit_gen_categories_2.js +26 -0
  160. package/dist/tools/generated/snipeit_gen_categories_2.js.map +1 -0
  161. package/dist/tools/generated/snipeit_gen_categoriesid.d.ts +4 -0
  162. package/dist/tools/generated/snipeit_gen_categoriesid.d.ts.map +1 -0
  163. package/dist/tools/generated/snipeit_gen_categoriesid.js +26 -0
  164. package/dist/tools/generated/snipeit_gen_categoriesid.js.map +1 -0
  165. package/dist/tools/generated/snipeit_gen_categoriesid_1.d.ts +4 -0
  166. package/dist/tools/generated/snipeit_gen_categoriesid_1.d.ts.map +1 -0
  167. package/dist/tools/generated/snipeit_gen_categoriesid_1.js +26 -0
  168. package/dist/tools/generated/snipeit_gen_categoriesid_1.js.map +1 -0
  169. package/dist/tools/generated/snipeit_gen_categoriesid_2.d.ts +4 -0
  170. package/dist/tools/generated/snipeit_gen_categoriesid_2.d.ts.map +1 -0
  171. package/dist/tools/generated/snipeit_gen_categoriesid_2.js +26 -0
  172. package/dist/tools/generated/snipeit_gen_categoriesid_2.js.map +1 -0
  173. package/dist/tools/generated/snipeit_gen_categoriesid_3.d.ts +4 -0
  174. package/dist/tools/generated/snipeit_gen_categoriesid_3.d.ts.map +1 -0
  175. package/dist/tools/generated/snipeit_gen_categoriesid_3.js +23 -0
  176. package/dist/tools/generated/snipeit_gen_categoriesid_3.js.map +1 -0
  177. package/dist/tools/generated/snipeit_gen_companies.d.ts +4 -0
  178. package/dist/tools/generated/snipeit_gen_companies.d.ts.map +1 -0
  179. package/dist/tools/generated/snipeit_gen_companies.js +23 -0
  180. package/dist/tools/generated/snipeit_gen_companies.js.map +1 -0
  181. package/dist/tools/generated/snipeit_gen_companies_1.d.ts +4 -0
  182. package/dist/tools/generated/snipeit_gen_companies_1.d.ts.map +1 -0
  183. package/dist/tools/generated/snipeit_gen_companies_1.js +26 -0
  184. package/dist/tools/generated/snipeit_gen_companies_1.js.map +1 -0
  185. package/dist/tools/generated/snipeit_gen_companiesid.d.ts +4 -0
  186. package/dist/tools/generated/snipeit_gen_companiesid.d.ts.map +1 -0
  187. package/dist/tools/generated/snipeit_gen_companiesid.js +23 -0
  188. package/dist/tools/generated/snipeit_gen_companiesid.js.map +1 -0
  189. package/dist/tools/generated/snipeit_gen_companiesid_1.d.ts +4 -0
  190. package/dist/tools/generated/snipeit_gen_companiesid_1.d.ts.map +1 -0
  191. package/dist/tools/generated/snipeit_gen_companiesid_1.js +26 -0
  192. package/dist/tools/generated/snipeit_gen_companiesid_1.js.map +1 -0
  193. package/dist/tools/generated/snipeit_gen_companiesid_2.d.ts +4 -0
  194. package/dist/tools/generated/snipeit_gen_companiesid_2.d.ts.map +1 -0
  195. package/dist/tools/generated/snipeit_gen_companiesid_2.js +26 -0
  196. package/dist/tools/generated/snipeit_gen_companiesid_2.js.map +1 -0
  197. package/dist/tools/generated/snipeit_gen_companiesid_3.d.ts +4 -0
  198. package/dist/tools/generated/snipeit_gen_companiesid_3.d.ts.map +1 -0
  199. package/dist/tools/generated/snipeit_gen_companiesid_3.js +26 -0
  200. package/dist/tools/generated/snipeit_gen_companiesid_3.js.map +1 -0
  201. package/dist/tools/generated/snipeit_gen_components.d.ts +4 -0
  202. package/dist/tools/generated/snipeit_gen_components.d.ts.map +1 -0
  203. package/dist/tools/generated/snipeit_gen_components.js +23 -0
  204. package/dist/tools/generated/snipeit_gen_components.js.map +1 -0
  205. package/dist/tools/generated/snipeit_gen_components_1.d.ts +4 -0
  206. package/dist/tools/generated/snipeit_gen_components_1.d.ts.map +1 -0
  207. package/dist/tools/generated/snipeit_gen_components_1.js +26 -0
  208. package/dist/tools/generated/snipeit_gen_components_1.js.map +1 -0
  209. package/dist/tools/generated/snipeit_gen_componentsid.d.ts +4 -0
  210. package/dist/tools/generated/snipeit_gen_componentsid.d.ts.map +1 -0
  211. package/dist/tools/generated/snipeit_gen_componentsid.js +23 -0
  212. package/dist/tools/generated/snipeit_gen_componentsid.js.map +1 -0
  213. package/dist/tools/generated/snipeit_gen_componentsid_1.d.ts +4 -0
  214. package/dist/tools/generated/snipeit_gen_componentsid_1.d.ts.map +1 -0
  215. package/dist/tools/generated/snipeit_gen_componentsid_1.js +26 -0
  216. package/dist/tools/generated/snipeit_gen_componentsid_1.js.map +1 -0
  217. package/dist/tools/generated/snipeit_gen_componentsid_2.d.ts +4 -0
  218. package/dist/tools/generated/snipeit_gen_componentsid_2.d.ts.map +1 -0
  219. package/dist/tools/generated/snipeit_gen_componentsid_2.js +26 -0
  220. package/dist/tools/generated/snipeit_gen_componentsid_2.js.map +1 -0
  221. package/dist/tools/generated/snipeit_gen_componentsid_3.d.ts +4 -0
  222. package/dist/tools/generated/snipeit_gen_componentsid_3.d.ts.map +1 -0
  223. package/dist/tools/generated/snipeit_gen_componentsid_3.js +26 -0
  224. package/dist/tools/generated/snipeit_gen_componentsid_3.js.map +1 -0
  225. package/dist/tools/generated/snipeit_gen_componentsidassets.d.ts +4 -0
  226. package/dist/tools/generated/snipeit_gen_componentsidassets.d.ts.map +1 -0
  227. package/dist/tools/generated/snipeit_gen_componentsidassets.js +23 -0
  228. package/dist/tools/generated/snipeit_gen_componentsidassets.js.map +1 -0
  229. package/dist/tools/generated/snipeit_gen_componentsidcheckin.d.ts +4 -0
  230. package/dist/tools/generated/snipeit_gen_componentsidcheckin.d.ts.map +1 -0
  231. package/dist/tools/generated/snipeit_gen_componentsidcheckin.js +26 -0
  232. package/dist/tools/generated/snipeit_gen_componentsidcheckin.js.map +1 -0
  233. package/dist/tools/generated/snipeit_gen_componentsidcheckout.d.ts +4 -0
  234. package/dist/tools/generated/snipeit_gen_componentsidcheckout.d.ts.map +1 -0
  235. package/dist/tools/generated/snipeit_gen_componentsidcheckout.js +26 -0
  236. package/dist/tools/generated/snipeit_gen_componentsidcheckout.js.map +1 -0
  237. package/dist/tools/generated/snipeit_gen_consumables.d.ts +4 -0
  238. package/dist/tools/generated/snipeit_gen_consumables.d.ts.map +1 -0
  239. package/dist/tools/generated/snipeit_gen_consumables.js +23 -0
  240. package/dist/tools/generated/snipeit_gen_consumables.js.map +1 -0
  241. package/dist/tools/generated/snipeit_gen_consumables_1.d.ts +4 -0
  242. package/dist/tools/generated/snipeit_gen_consumables_1.d.ts.map +1 -0
  243. package/dist/tools/generated/snipeit_gen_consumables_1.js +26 -0
  244. package/dist/tools/generated/snipeit_gen_consumables_1.js.map +1 -0
  245. package/dist/tools/generated/snipeit_gen_consumables_2.d.ts +4 -0
  246. package/dist/tools/generated/snipeit_gen_consumables_2.d.ts.map +1 -0
  247. package/dist/tools/generated/snipeit_gen_consumables_2.js +26 -0
  248. package/dist/tools/generated/snipeit_gen_consumables_2.js.map +1 -0
  249. package/dist/tools/generated/snipeit_gen_consumablesid.d.ts +4 -0
  250. package/dist/tools/generated/snipeit_gen_consumablesid.d.ts.map +1 -0
  251. package/dist/tools/generated/snipeit_gen_consumablesid.js +23 -0
  252. package/dist/tools/generated/snipeit_gen_consumablesid.js.map +1 -0
  253. package/dist/tools/generated/snipeit_gen_consumablesid_1.d.ts +4 -0
  254. package/dist/tools/generated/snipeit_gen_consumablesid_1.d.ts.map +1 -0
  255. package/dist/tools/generated/snipeit_gen_consumablesid_1.js +26 -0
  256. package/dist/tools/generated/snipeit_gen_consumablesid_1.js.map +1 -0
  257. package/dist/tools/generated/snipeit_gen_consumablesid_2.d.ts +4 -0
  258. package/dist/tools/generated/snipeit_gen_consumablesid_2.d.ts.map +1 -0
  259. package/dist/tools/generated/snipeit_gen_consumablesid_2.js +26 -0
  260. package/dist/tools/generated/snipeit_gen_consumablesid_2.js.map +1 -0
  261. package/dist/tools/generated/snipeit_gen_consumablesidcheckout.d.ts +4 -0
  262. package/dist/tools/generated/snipeit_gen_consumablesidcheckout.d.ts.map +1 -0
  263. package/dist/tools/generated/snipeit_gen_consumablesidcheckout.js +26 -0
  264. package/dist/tools/generated/snipeit_gen_consumablesidcheckout.js.map +1 -0
  265. package/dist/tools/generated/snipeit_gen_departments.d.ts +4 -0
  266. package/dist/tools/generated/snipeit_gen_departments.d.ts.map +1 -0
  267. package/dist/tools/generated/snipeit_gen_departments.js +23 -0
  268. package/dist/tools/generated/snipeit_gen_departments.js.map +1 -0
  269. package/dist/tools/generated/snipeit_gen_departments_1.d.ts +4 -0
  270. package/dist/tools/generated/snipeit_gen_departments_1.d.ts.map +1 -0
  271. package/dist/tools/generated/snipeit_gen_departments_1.js +26 -0
  272. package/dist/tools/generated/snipeit_gen_departments_1.js.map +1 -0
  273. package/dist/tools/generated/snipeit_gen_departments_edit.d.ts +4 -0
  274. package/dist/tools/generated/snipeit_gen_departments_edit.d.ts.map +1 -0
  275. package/dist/tools/generated/snipeit_gen_departments_edit.js +26 -0
  276. package/dist/tools/generated/snipeit_gen_departments_edit.js.map +1 -0
  277. package/dist/tools/generated/snipeit_gen_departmentsid.d.ts +4 -0
  278. package/dist/tools/generated/snipeit_gen_departmentsid.d.ts.map +1 -0
  279. package/dist/tools/generated/snipeit_gen_departmentsid.js +23 -0
  280. package/dist/tools/generated/snipeit_gen_departmentsid.js.map +1 -0
  281. package/dist/tools/generated/snipeit_gen_departmentsid_1.d.ts +4 -0
  282. package/dist/tools/generated/snipeit_gen_departmentsid_1.d.ts.map +1 -0
  283. package/dist/tools/generated/snipeit_gen_departmentsid_1.js +26 -0
  284. package/dist/tools/generated/snipeit_gen_departmentsid_1.js.map +1 -0
  285. package/dist/tools/generated/snipeit_gen_departmentsid_2.d.ts +4 -0
  286. package/dist/tools/generated/snipeit_gen_departmentsid_2.d.ts.map +1 -0
  287. package/dist/tools/generated/snipeit_gen_departmentsid_2.js +26 -0
  288. package/dist/tools/generated/snipeit_gen_departmentsid_2.js.map +1 -0
  289. package/dist/tools/generated/snipeit_gen_fields.d.ts +4 -0
  290. package/dist/tools/generated/snipeit_gen_fields.d.ts.map +1 -0
  291. package/dist/tools/generated/snipeit_gen_fields.js +21 -0
  292. package/dist/tools/generated/snipeit_gen_fields.js.map +1 -0
  293. package/dist/tools/generated/snipeit_gen_fields_1.d.ts +4 -0
  294. package/dist/tools/generated/snipeit_gen_fields_1.d.ts.map +1 -0
  295. package/dist/tools/generated/snipeit_gen_fields_1.js +21 -0
  296. package/dist/tools/generated/snipeit_gen_fields_1.js.map +1 -0
  297. package/dist/tools/generated/snipeit_gen_fields_2.d.ts +4 -0
  298. package/dist/tools/generated/snipeit_gen_fields_2.d.ts.map +1 -0
  299. package/dist/tools/generated/snipeit_gen_fields_2.js +26 -0
  300. package/dist/tools/generated/snipeit_gen_fields_2.js.map +1 -0
  301. package/dist/tools/generated/snipeit_gen_fieldsets.d.ts +4 -0
  302. package/dist/tools/generated/snipeit_gen_fieldsets.d.ts.map +1 -0
  303. package/dist/tools/generated/snipeit_gen_fieldsets.js +26 -0
  304. package/dist/tools/generated/snipeit_gen_fieldsets.js.map +1 -0
  305. package/dist/tools/generated/snipeit_gen_fieldsetsid.d.ts +4 -0
  306. package/dist/tools/generated/snipeit_gen_fieldsetsid.d.ts.map +1 -0
  307. package/dist/tools/generated/snipeit_gen_fieldsetsid.js +23 -0
  308. package/dist/tools/generated/snipeit_gen_fieldsetsid.js.map +1 -0
  309. package/dist/tools/generated/snipeit_gen_fieldsetsid_1.d.ts +4 -0
  310. package/dist/tools/generated/snipeit_gen_fieldsetsid_1.d.ts.map +1 -0
  311. package/dist/tools/generated/snipeit_gen_fieldsetsid_1.js +26 -0
  312. package/dist/tools/generated/snipeit_gen_fieldsetsid_1.js.map +1 -0
  313. package/dist/tools/generated/snipeit_gen_fieldsetsid_2.d.ts +4 -0
  314. package/dist/tools/generated/snipeit_gen_fieldsetsid_2.d.ts.map +1 -0
  315. package/dist/tools/generated/snipeit_gen_fieldsetsid_2.js +26 -0
  316. package/dist/tools/generated/snipeit_gen_fieldsetsid_2.js.map +1 -0
  317. package/dist/tools/generated/snipeit_gen_fieldsetsidfields.d.ts +4 -0
  318. package/dist/tools/generated/snipeit_gen_fieldsetsidfields.d.ts.map +1 -0
  319. package/dist/tools/generated/snipeit_gen_fieldsetsidfields.js +23 -0
  320. package/dist/tools/generated/snipeit_gen_fieldsetsidfields.js.map +1 -0
  321. package/dist/tools/generated/snipeit_gen_fieldsid.d.ts +4 -0
  322. package/dist/tools/generated/snipeit_gen_fieldsid.d.ts.map +1 -0
  323. package/dist/tools/generated/snipeit_gen_fieldsid.js +23 -0
  324. package/dist/tools/generated/snipeit_gen_fieldsid.js.map +1 -0
  325. package/dist/tools/generated/snipeit_gen_fieldsid_1.d.ts +4 -0
  326. package/dist/tools/generated/snipeit_gen_fieldsid_1.d.ts.map +1 -0
  327. package/dist/tools/generated/snipeit_gen_fieldsid_1.js +26 -0
  328. package/dist/tools/generated/snipeit_gen_fieldsid_1.js.map +1 -0
  329. package/dist/tools/generated/snipeit_gen_fieldsid_2.d.ts +4 -0
  330. package/dist/tools/generated/snipeit_gen_fieldsid_2.d.ts.map +1 -0
  331. package/dist/tools/generated/snipeit_gen_fieldsid_2.js +26 -0
  332. package/dist/tools/generated/snipeit_gen_fieldsid_2.js.map +1 -0
  333. package/dist/tools/generated/snipeit_gen_fieldsidassociate.d.ts +4 -0
  334. package/dist/tools/generated/snipeit_gen_fieldsidassociate.d.ts.map +1 -0
  335. package/dist/tools/generated/snipeit_gen_fieldsidassociate.js +26 -0
  336. package/dist/tools/generated/snipeit_gen_fieldsidassociate.js.map +1 -0
  337. package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.d.ts +4 -0
  338. package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.d.ts.map +1 -0
  339. package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.js +26 -0
  340. package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.js.map +1 -0
  341. package/dist/tools/generated/snipeit_gen_get_new_endpoint.d.ts +4 -0
  342. package/dist/tools/generated/snipeit_gen_get_new_endpoint.d.ts.map +1 -0
  343. package/dist/tools/generated/snipeit_gen_get_new_endpoint.js +23 -0
  344. package/dist/tools/generated/snipeit_gen_get_new_endpoint.js.map +1 -0
  345. package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.d.ts +4 -0
  346. package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.d.ts.map +1 -0
  347. package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.js +23 -0
  348. package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.js.map +1 -0
  349. package/dist/tools/generated/snipeit_gen_groups_1.d.ts +4 -0
  350. package/dist/tools/generated/snipeit_gen_groups_1.d.ts.map +1 -0
  351. package/dist/tools/generated/snipeit_gen_groups_1.js +23 -0
  352. package/dist/tools/generated/snipeit_gen_groups_1.js.map +1 -0
  353. package/dist/tools/generated/snipeit_gen_groupsid.d.ts +4 -0
  354. package/dist/tools/generated/snipeit_gen_groupsid.d.ts.map +1 -0
  355. package/dist/tools/generated/snipeit_gen_groupsid.js +23 -0
  356. package/dist/tools/generated/snipeit_gen_groupsid.js.map +1 -0
  357. package/dist/tools/generated/snipeit_gen_groupsid_1.d.ts +4 -0
  358. package/dist/tools/generated/snipeit_gen_groupsid_1.d.ts.map +1 -0
  359. package/dist/tools/generated/snipeit_gen_groupsid_1.js +26 -0
  360. package/dist/tools/generated/snipeit_gen_groupsid_1.js.map +1 -0
  361. package/dist/tools/generated/snipeit_gen_groupsid_2.d.ts +4 -0
  362. package/dist/tools/generated/snipeit_gen_groupsid_2.d.ts.map +1 -0
  363. package/dist/tools/generated/snipeit_gen_groupsid_2.js +26 -0
  364. package/dist/tools/generated/snipeit_gen_groupsid_2.js.map +1 -0
  365. package/dist/tools/generated/snipeit_gen_groupsid_3.d.ts +4 -0
  366. package/dist/tools/generated/snipeit_gen_groupsid_3.d.ts.map +1 -0
  367. package/dist/tools/generated/snipeit_gen_groupsid_3.js +26 -0
  368. package/dist/tools/generated/snipeit_gen_groupsid_3.js.map +1 -0
  369. package/dist/tools/generated/snipeit_gen_groupsid_4.d.ts +4 -0
  370. package/dist/tools/generated/snipeit_gen_groupsid_4.d.ts.map +1 -0
  371. package/dist/tools/generated/snipeit_gen_groupsid_4.js +26 -0
  372. package/dist/tools/generated/snipeit_gen_groupsid_4.js.map +1 -0
  373. package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.d.ts +4 -0
  374. package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.d.ts.map +1 -0
  375. package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.js +23 -0
  376. package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.js.map +1 -0
  377. package/dist/tools/generated/snipeit_gen_hardware_by_id.d.ts +4 -0
  378. package/dist/tools/generated/snipeit_gen_hardware_by_id.d.ts.map +1 -0
  379. package/dist/tools/generated/snipeit_gen_hardware_by_id.js +23 -0
  380. package/dist/tools/generated/snipeit_gen_hardware_by_id.js.map +1 -0
  381. package/dist/tools/generated/snipeit_gen_hardware_by_serial.d.ts +4 -0
  382. package/dist/tools/generated/snipeit_gen_hardware_by_serial.d.ts.map +1 -0
  383. package/dist/tools/generated/snipeit_gen_hardware_by_serial.js +23 -0
  384. package/dist/tools/generated/snipeit_gen_hardware_by_serial.js.map +1 -0
  385. package/dist/tools/generated/snipeit_gen_hardware_checkin.d.ts +4 -0
  386. package/dist/tools/generated/snipeit_gen_hardware_checkin.d.ts.map +1 -0
  387. package/dist/tools/generated/snipeit_gen_hardware_checkin.js +26 -0
  388. package/dist/tools/generated/snipeit_gen_hardware_checkin.js.map +1 -0
  389. package/dist/tools/generated/snipeit_gen_hardware_checkout.d.ts +4 -0
  390. package/dist/tools/generated/snipeit_gen_hardware_checkout.d.ts.map +1 -0
  391. package/dist/tools/generated/snipeit_gen_hardware_checkout.js +26 -0
  392. package/dist/tools/generated/snipeit_gen_hardware_checkout.js.map +1 -0
  393. package/dist/tools/generated/snipeit_gen_hardware_create.d.ts +4 -0
  394. package/dist/tools/generated/snipeit_gen_hardware_create.d.ts.map +1 -0
  395. package/dist/tools/generated/snipeit_gen_hardware_create.js +26 -0
  396. package/dist/tools/generated/snipeit_gen_hardware_create.js.map +1 -0
  397. package/dist/tools/generated/snipeit_gen_hardware_delete.d.ts +4 -0
  398. package/dist/tools/generated/snipeit_gen_hardware_delete.d.ts.map +1 -0
  399. package/dist/tools/generated/snipeit_gen_hardware_delete.js +26 -0
  400. package/dist/tools/generated/snipeit_gen_hardware_delete.js.map +1 -0
  401. package/dist/tools/generated/snipeit_gen_hardware_files_delete.d.ts +4 -0
  402. package/dist/tools/generated/snipeit_gen_hardware_files_delete.d.ts.map +1 -0
  403. package/dist/tools/generated/snipeit_gen_hardware_files_delete.js +26 -0
  404. package/dist/tools/generated/snipeit_gen_hardware_files_delete.js.map +1 -0
  405. package/dist/tools/generated/snipeit_gen_hardware_list.d.ts +4 -0
  406. package/dist/tools/generated/snipeit_gen_hardware_list.d.ts.map +1 -0
  407. package/dist/tools/generated/snipeit_gen_hardware_list.js +23 -0
  408. package/dist/tools/generated/snipeit_gen_hardware_list.js.map +1 -0
  409. package/dist/tools/generated/snipeit_gen_hardware_list_files.d.ts +4 -0
  410. package/dist/tools/generated/snipeit_gen_hardware_list_files.d.ts.map +1 -0
  411. package/dist/tools/generated/snipeit_gen_hardware_list_files.js +23 -0
  412. package/dist/tools/generated/snipeit_gen_hardware_list_files.js.map +1 -0
  413. package/dist/tools/generated/snipeit_gen_hardware_partial_update.d.ts +4 -0
  414. package/dist/tools/generated/snipeit_gen_hardware_partial_update.d.ts.map +1 -0
  415. package/dist/tools/generated/snipeit_gen_hardware_partial_update.js +26 -0
  416. package/dist/tools/generated/snipeit_gen_hardware_partial_update.js.map +1 -0
  417. package/dist/tools/generated/snipeit_gen_hardware_update.d.ts +4 -0
  418. package/dist/tools/generated/snipeit_gen_hardware_update.d.ts.map +1 -0
  419. package/dist/tools/generated/snipeit_gen_hardware_update.js +26 -0
  420. package/dist/tools/generated/snipeit_gen_hardware_update.js.map +1 -0
  421. package/dist/tools/generated/snipeit_gen_hardware_upload_files.d.ts +4 -0
  422. package/dist/tools/generated/snipeit_gen_hardware_upload_files.d.ts.map +1 -0
  423. package/dist/tools/generated/snipeit_gen_hardware_upload_files.js +26 -0
  424. package/dist/tools/generated/snipeit_gen_hardware_upload_files.js.map +1 -0
  425. package/dist/tools/generated/snipeit_gen_hardwareaudit.d.ts +4 -0
  426. package/dist/tools/generated/snipeit_gen_hardwareaudit.d.ts.map +1 -0
  427. package/dist/tools/generated/snipeit_gen_hardwareaudit.js +26 -0
  428. package/dist/tools/generated/snipeit_gen_hardwareaudit.js.map +1 -0
  429. package/dist/tools/generated/snipeit_gen_hardwareauditdue.d.ts +4 -0
  430. package/dist/tools/generated/snipeit_gen_hardwareauditdue.d.ts.map +1 -0
  431. package/dist/tools/generated/snipeit_gen_hardwareauditdue.js +21 -0
  432. package/dist/tools/generated/snipeit_gen_hardwareauditdue.js.map +1 -0
  433. package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.d.ts +4 -0
  434. package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.d.ts.map +1 -0
  435. package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.js +21 -0
  436. package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.js.map +1 -0
  437. package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.d.ts +4 -0
  438. package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.d.ts.map +1 -0
  439. package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.js +23 -0
  440. package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.js.map +1 -0
  441. package/dist/tools/generated/snipeit_gen_hardwareidlicenses.d.ts +4 -0
  442. package/dist/tools/generated/snipeit_gen_hardwareidlicenses.d.ts.map +1 -0
  443. package/dist/tools/generated/snipeit_gen_hardwareidlicenses.js +23 -0
  444. package/dist/tools/generated/snipeit_gen_hardwareidlicenses.js.map +1 -0
  445. package/dist/tools/generated/snipeit_gen_hardwareidrestore.d.ts +4 -0
  446. package/dist/tools/generated/snipeit_gen_hardwareidrestore.d.ts.map +1 -0
  447. package/dist/tools/generated/snipeit_gen_hardwareidrestore.js +24 -0
  448. package/dist/tools/generated/snipeit_gen_hardwareidrestore.js.map +1 -0
  449. package/dist/tools/generated/snipeit_gen_licenses.d.ts +4 -0
  450. package/dist/tools/generated/snipeit_gen_licenses.d.ts.map +1 -0
  451. package/dist/tools/generated/snipeit_gen_licenses.js +23 -0
  452. package/dist/tools/generated/snipeit_gen_licenses.js.map +1 -0
  453. package/dist/tools/generated/snipeit_gen_licensesid.d.ts +4 -0
  454. package/dist/tools/generated/snipeit_gen_licensesid.d.ts.map +1 -0
  455. package/dist/tools/generated/snipeit_gen_licensesid.js +23 -0
  456. package/dist/tools/generated/snipeit_gen_licensesid.js.map +1 -0
  457. package/dist/tools/generated/snipeit_gen_licensesid_1.d.ts +4 -0
  458. package/dist/tools/generated/snipeit_gen_licensesid_1.d.ts.map +1 -0
  459. package/dist/tools/generated/snipeit_gen_licensesid_1.js +26 -0
  460. package/dist/tools/generated/snipeit_gen_licensesid_1.js.map +1 -0
  461. package/dist/tools/generated/snipeit_gen_licensesid_2.d.ts +4 -0
  462. package/dist/tools/generated/snipeit_gen_licensesid_2.d.ts.map +1 -0
  463. package/dist/tools/generated/snipeit_gen_licensesid_2.js +26 -0
  464. package/dist/tools/generated/snipeit_gen_licensesid_2.js.map +1 -0
  465. package/dist/tools/generated/snipeit_gen_licensesid_3.d.ts +4 -0
  466. package/dist/tools/generated/snipeit_gen_licensesid_3.d.ts.map +1 -0
  467. package/dist/tools/generated/snipeit_gen_licensesid_3.js +26 -0
  468. package/dist/tools/generated/snipeit_gen_licensesid_3.js.map +1 -0
  469. package/dist/tools/generated/snipeit_gen_licensesidseats.d.ts +4 -0
  470. package/dist/tools/generated/snipeit_gen_licensesidseats.d.ts.map +1 -0
  471. package/dist/tools/generated/snipeit_gen_licensesidseats.js +23 -0
  472. package/dist/tools/generated/snipeit_gen_licensesidseats.js.map +1 -0
  473. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.d.ts +4 -0
  474. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.d.ts.map +1 -0
  475. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.js +23 -0
  476. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.js.map +1 -0
  477. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.d.ts +4 -0
  478. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.d.ts.map +1 -0
  479. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.js +26 -0
  480. package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.js.map +1 -0
  481. package/dist/tools/generated/snipeit_gen_locations.d.ts +4 -0
  482. package/dist/tools/generated/snipeit_gen_locations.d.ts.map +1 -0
  483. package/dist/tools/generated/snipeit_gen_locations.js +23 -0
  484. package/dist/tools/generated/snipeit_gen_locations.js.map +1 -0
  485. package/dist/tools/generated/snipeit_gen_locations_1.d.ts +4 -0
  486. package/dist/tools/generated/snipeit_gen_locations_1.d.ts.map +1 -0
  487. package/dist/tools/generated/snipeit_gen_locations_1.js +23 -0
  488. package/dist/tools/generated/snipeit_gen_locations_1.js.map +1 -0
  489. package/dist/tools/generated/snipeit_gen_locations_2.d.ts +4 -0
  490. package/dist/tools/generated/snipeit_gen_locations_2.d.ts.map +1 -0
  491. package/dist/tools/generated/snipeit_gen_locations_2.js +26 -0
  492. package/dist/tools/generated/snipeit_gen_locations_2.js.map +1 -0
  493. package/dist/tools/generated/snipeit_gen_locations_3.d.ts +4 -0
  494. package/dist/tools/generated/snipeit_gen_locations_3.d.ts.map +1 -0
  495. package/dist/tools/generated/snipeit_gen_locations_3.js +26 -0
  496. package/dist/tools/generated/snipeit_gen_locations_3.js.map +1 -0
  497. package/dist/tools/generated/snipeit_gen_locationsid.d.ts +4 -0
  498. package/dist/tools/generated/snipeit_gen_locationsid.d.ts.map +1 -0
  499. package/dist/tools/generated/snipeit_gen_locationsid.js +26 -0
  500. package/dist/tools/generated/snipeit_gen_locationsid.js.map +1 -0
  501. package/dist/tools/generated/snipeit_gen_locationsid_2.d.ts +4 -0
  502. package/dist/tools/generated/snipeit_gen_locationsid_2.d.ts.map +1 -0
  503. package/dist/tools/generated/snipeit_gen_locationsid_2.js +26 -0
  504. package/dist/tools/generated/snipeit_gen_locationsid_2.js.map +1 -0
  505. package/dist/tools/generated/snipeit_gen_maintenances.d.ts +4 -0
  506. package/dist/tools/generated/snipeit_gen_maintenances.d.ts.map +1 -0
  507. package/dist/tools/generated/snipeit_gen_maintenances.js +23 -0
  508. package/dist/tools/generated/snipeit_gen_maintenances.js.map +1 -0
  509. package/dist/tools/generated/snipeit_gen_maintenances_1.d.ts +4 -0
  510. package/dist/tools/generated/snipeit_gen_maintenances_1.d.ts.map +1 -0
  511. package/dist/tools/generated/snipeit_gen_maintenances_1.js +26 -0
  512. package/dist/tools/generated/snipeit_gen_maintenances_1.js.map +1 -0
  513. package/dist/tools/generated/snipeit_gen_maintenances_copy.d.ts +4 -0
  514. package/dist/tools/generated/snipeit_gen_maintenances_copy.d.ts.map +1 -0
  515. package/dist/tools/generated/snipeit_gen_maintenances_copy.js +26 -0
  516. package/dist/tools/generated/snipeit_gen_maintenances_copy.js.map +1 -0
  517. package/dist/tools/generated/snipeit_gen_maintenances_copy_1.d.ts +4 -0
  518. package/dist/tools/generated/snipeit_gen_maintenances_copy_1.d.ts.map +1 -0
  519. package/dist/tools/generated/snipeit_gen_maintenances_copy_1.js +26 -0
  520. package/dist/tools/generated/snipeit_gen_maintenances_copy_1.js.map +1 -0
  521. package/dist/tools/generated/snipeit_gen_maintenancesid.d.ts +4 -0
  522. package/dist/tools/generated/snipeit_gen_maintenancesid.d.ts.map +1 -0
  523. package/dist/tools/generated/snipeit_gen_maintenancesid.js +26 -0
  524. package/dist/tools/generated/snipeit_gen_maintenancesid.js.map +1 -0
  525. package/dist/tools/generated/snipeit_gen_manufacturers.d.ts +4 -0
  526. package/dist/tools/generated/snipeit_gen_manufacturers.d.ts.map +1 -0
  527. package/dist/tools/generated/snipeit_gen_manufacturers.js +23 -0
  528. package/dist/tools/generated/snipeit_gen_manufacturers.js.map +1 -0
  529. package/dist/tools/generated/snipeit_gen_manufacturers_1.d.ts +4 -0
  530. package/dist/tools/generated/snipeit_gen_manufacturers_1.d.ts.map +1 -0
  531. package/dist/tools/generated/snipeit_gen_manufacturers_1.js +26 -0
  532. package/dist/tools/generated/snipeit_gen_manufacturers_1.js.map +1 -0
  533. package/dist/tools/generated/snipeit_gen_manufacturersid.d.ts +4 -0
  534. package/dist/tools/generated/snipeit_gen_manufacturersid.d.ts.map +1 -0
  535. package/dist/tools/generated/snipeit_gen_manufacturersid.js +26 -0
  536. package/dist/tools/generated/snipeit_gen_manufacturersid.js.map +1 -0
  537. package/dist/tools/generated/snipeit_gen_manufacturersid_1.d.ts +4 -0
  538. package/dist/tools/generated/snipeit_gen_manufacturersid_1.d.ts.map +1 -0
  539. package/dist/tools/generated/snipeit_gen_manufacturersid_1.js +23 -0
  540. package/dist/tools/generated/snipeit_gen_manufacturersid_1.js.map +1 -0
  541. package/dist/tools/generated/snipeit_gen_manufacturersid_2.d.ts +4 -0
  542. package/dist/tools/generated/snipeit_gen_manufacturersid_2.d.ts.map +1 -0
  543. package/dist/tools/generated/snipeit_gen_manufacturersid_2.js +26 -0
  544. package/dist/tools/generated/snipeit_gen_manufacturersid_2.js.map +1 -0
  545. package/dist/tools/generated/snipeit_gen_manufacturersid_3.d.ts +4 -0
  546. package/dist/tools/generated/snipeit_gen_manufacturersid_3.d.ts.map +1 -0
  547. package/dist/tools/generated/snipeit_gen_manufacturersid_3.js +26 -0
  548. package/dist/tools/generated/snipeit_gen_manufacturersid_3.js.map +1 -0
  549. package/dist/tools/generated/snipeit_gen_models.d.ts +4 -0
  550. package/dist/tools/generated/snipeit_gen_models.d.ts.map +1 -0
  551. package/dist/tools/generated/snipeit_gen_models.js +23 -0
  552. package/dist/tools/generated/snipeit_gen_models.js.map +1 -0
  553. package/dist/tools/generated/snipeit_gen_models_1.d.ts +4 -0
  554. package/dist/tools/generated/snipeit_gen_models_1.d.ts.map +1 -0
  555. package/dist/tools/generated/snipeit_gen_models_1.js +26 -0
  556. package/dist/tools/generated/snipeit_gen_models_1.js.map +1 -0
  557. package/dist/tools/generated/snipeit_gen_models_files_list.d.ts +4 -0
  558. package/dist/tools/generated/snipeit_gen_models_files_list.d.ts.map +1 -0
  559. package/dist/tools/generated/snipeit_gen_models_files_list.js +23 -0
  560. package/dist/tools/generated/snipeit_gen_models_files_list.js.map +1 -0
  561. package/dist/tools/generated/snipeit_gen_modelsid.d.ts +4 -0
  562. package/dist/tools/generated/snipeit_gen_modelsid.d.ts.map +1 -0
  563. package/dist/tools/generated/snipeit_gen_modelsid.js +23 -0
  564. package/dist/tools/generated/snipeit_gen_modelsid.js.map +1 -0
  565. package/dist/tools/generated/snipeit_gen_modelsid_1.d.ts +4 -0
  566. package/dist/tools/generated/snipeit_gen_modelsid_1.d.ts.map +1 -0
  567. package/dist/tools/generated/snipeit_gen_modelsid_1.js +26 -0
  568. package/dist/tools/generated/snipeit_gen_modelsid_1.js.map +1 -0
  569. package/dist/tools/generated/snipeit_gen_modelsid_2.d.ts +4 -0
  570. package/dist/tools/generated/snipeit_gen_modelsid_2.d.ts.map +1 -0
  571. package/dist/tools/generated/snipeit_gen_modelsid_2.js +26 -0
  572. package/dist/tools/generated/snipeit_gen_modelsid_2.js.map +1 -0
  573. package/dist/tools/generated/snipeit_gen_modelsid_3.d.ts +4 -0
  574. package/dist/tools/generated/snipeit_gen_modelsid_3.d.ts.map +1 -0
  575. package/dist/tools/generated/snipeit_gen_modelsid_3.js +26 -0
  576. package/dist/tools/generated/snipeit_gen_modelsid_3.js.map +1 -0
  577. package/dist/tools/generated/snipeit_gen_modelsidfiles.d.ts +4 -0
  578. package/dist/tools/generated/snipeit_gen_modelsidfiles.d.ts.map +1 -0
  579. package/dist/tools/generated/snipeit_gen_modelsidfiles.js +26 -0
  580. package/dist/tools/generated/snipeit_gen_modelsidfiles.js.map +1 -0
  581. package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.d.ts +4 -0
  582. package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.d.ts.map +1 -0
  583. package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.js +26 -0
  584. package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.js.map +1 -0
  585. package/dist/tools/generated/snipeit_gen_post_auditid.d.ts +4 -0
  586. package/dist/tools/generated/snipeit_gen_post_auditid.d.ts.map +1 -0
  587. package/dist/tools/generated/snipeit_gen_post_auditid.js +26 -0
  588. package/dist/tools/generated/snipeit_gen_post_auditid.js.map +1 -0
  589. package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.d.ts +4 -0
  590. package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.d.ts.map +1 -0
  591. package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.js +26 -0
  592. package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.js.map +1 -0
  593. package/dist/tools/generated/snipeit_gen_reportsactivity.d.ts +4 -0
  594. package/dist/tools/generated/snipeit_gen_reportsactivity.d.ts.map +1 -0
  595. package/dist/tools/generated/snipeit_gen_reportsactivity.js +23 -0
  596. package/dist/tools/generated/snipeit_gen_reportsactivity.js.map +1 -0
  597. package/dist/tools/generated/snipeit_gen_statuslabels.d.ts +4 -0
  598. package/dist/tools/generated/snipeit_gen_statuslabels.d.ts.map +1 -0
  599. package/dist/tools/generated/snipeit_gen_statuslabels.js +23 -0
  600. package/dist/tools/generated/snipeit_gen_statuslabels.js.map +1 -0
  601. package/dist/tools/generated/snipeit_gen_statuslabels_1.d.ts +4 -0
  602. package/dist/tools/generated/snipeit_gen_statuslabels_1.d.ts.map +1 -0
  603. package/dist/tools/generated/snipeit_gen_statuslabels_1.js +26 -0
  604. package/dist/tools/generated/snipeit_gen_statuslabels_1.js.map +1 -0
  605. package/dist/tools/generated/snipeit_gen_statuslabelsid.d.ts +4 -0
  606. package/dist/tools/generated/snipeit_gen_statuslabelsid.d.ts.map +1 -0
  607. package/dist/tools/generated/snipeit_gen_statuslabelsid.js +23 -0
  608. package/dist/tools/generated/snipeit_gen_statuslabelsid.js.map +1 -0
  609. package/dist/tools/generated/snipeit_gen_statuslabelsid_1.d.ts +4 -0
  610. package/dist/tools/generated/snipeit_gen_statuslabelsid_1.d.ts.map +1 -0
  611. package/dist/tools/generated/snipeit_gen_statuslabelsid_1.js +26 -0
  612. package/dist/tools/generated/snipeit_gen_statuslabelsid_1.js.map +1 -0
  613. package/dist/tools/generated/snipeit_gen_statuslabelsid_2.d.ts +4 -0
  614. package/dist/tools/generated/snipeit_gen_statuslabelsid_2.d.ts.map +1 -0
  615. package/dist/tools/generated/snipeit_gen_statuslabelsid_2.js +26 -0
  616. package/dist/tools/generated/snipeit_gen_statuslabelsid_2.js.map +1 -0
  617. package/dist/tools/generated/snipeit_gen_statuslabelsid_3.d.ts +4 -0
  618. package/dist/tools/generated/snipeit_gen_statuslabelsid_3.d.ts.map +1 -0
  619. package/dist/tools/generated/snipeit_gen_statuslabelsid_3.js +26 -0
  620. package/dist/tools/generated/snipeit_gen_statuslabelsid_3.js.map +1 -0
  621. package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.d.ts +4 -0
  622. package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.d.ts.map +1 -0
  623. package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.js +23 -0
  624. package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.js.map +1 -0
  625. package/dist/tools/generated/snipeit_gen_suppliers.d.ts +4 -0
  626. package/dist/tools/generated/snipeit_gen_suppliers.d.ts.map +1 -0
  627. package/dist/tools/generated/snipeit_gen_suppliers.js +23 -0
  628. package/dist/tools/generated/snipeit_gen_suppliers.js.map +1 -0
  629. package/dist/tools/generated/snipeit_gen_suppliersid.d.ts +4 -0
  630. package/dist/tools/generated/snipeit_gen_suppliersid.d.ts.map +1 -0
  631. package/dist/tools/generated/snipeit_gen_suppliersid.js +23 -0
  632. package/dist/tools/generated/snipeit_gen_suppliersid.js.map +1 -0
  633. package/dist/tools/generated/snipeit_gen_testinput.d.ts +4 -0
  634. package/dist/tools/generated/snipeit_gen_testinput.d.ts.map +1 -0
  635. package/dist/tools/generated/snipeit_gen_testinput.js +26 -0
  636. package/dist/tools/generated/snipeit_gen_testinput.js.map +1 -0
  637. package/dist/tools/generated/snipeit_gen_update_fields.d.ts +4 -0
  638. package/dist/tools/generated/snipeit_gen_update_fields.d.ts.map +1 -0
  639. package/dist/tools/generated/snipeit_gen_update_fields.js +26 -0
  640. package/dist/tools/generated/snipeit_gen_update_fields.js.map +1 -0
  641. package/dist/tools/generated/snipeit_gen_users.d.ts +4 -0
  642. package/dist/tools/generated/snipeit_gen_users.d.ts.map +1 -0
  643. package/dist/tools/generated/snipeit_gen_users.js +23 -0
  644. package/dist/tools/generated/snipeit_gen_users.js.map +1 -0
  645. package/dist/tools/generated/snipeit_gen_users_2.d.ts +4 -0
  646. package/dist/tools/generated/snipeit_gen_users_2.d.ts.map +1 -0
  647. package/dist/tools/generated/snipeit_gen_users_2.js +26 -0
  648. package/dist/tools/generated/snipeit_gen_users_2.js.map +1 -0
  649. package/dist/tools/generated/snipeit_gen_users_3.d.ts +4 -0
  650. package/dist/tools/generated/snipeit_gen_users_3.d.ts.map +1 -0
  651. package/dist/tools/generated/snipeit_gen_users_3.js +26 -0
  652. package/dist/tools/generated/snipeit_gen_users_3.js.map +1 -0
  653. package/dist/tools/generated/snipeit_gen_users_restore.d.ts +4 -0
  654. package/dist/tools/generated/snipeit_gen_users_restore.d.ts.map +1 -0
  655. package/dist/tools/generated/snipeit_gen_users_restore.js +26 -0
  656. package/dist/tools/generated/snipeit_gen_users_restore.js.map +1 -0
  657. package/dist/tools/generated/snipeit_gen_usersid.d.ts +4 -0
  658. package/dist/tools/generated/snipeit_gen_usersid.d.ts.map +1 -0
  659. package/dist/tools/generated/snipeit_gen_usersid.js +23 -0
  660. package/dist/tools/generated/snipeit_gen_usersid.js.map +1 -0
  661. package/dist/tools/generated/snipeit_gen_usersid_1.d.ts +4 -0
  662. package/dist/tools/generated/snipeit_gen_usersid_1.d.ts.map +1 -0
  663. package/dist/tools/generated/snipeit_gen_usersid_1.js +26 -0
  664. package/dist/tools/generated/snipeit_gen_usersid_1.js.map +1 -0
  665. package/dist/tools/generated/snipeit_gen_usersid_2.d.ts +4 -0
  666. package/dist/tools/generated/snipeit_gen_usersid_2.d.ts.map +1 -0
  667. package/dist/tools/generated/snipeit_gen_usersid_2.js +26 -0
  668. package/dist/tools/generated/snipeit_gen_usersid_2.js.map +1 -0
  669. package/dist/tools/generated/snipeit_gen_usersidaccessories.d.ts +4 -0
  670. package/dist/tools/generated/snipeit_gen_usersidaccessories.d.ts.map +1 -0
  671. package/dist/tools/generated/snipeit_gen_usersidaccessories.js +23 -0
  672. package/dist/tools/generated/snipeit_gen_usersidaccessories.js.map +1 -0
  673. package/dist/tools/generated/snipeit_gen_usersidassets.d.ts +4 -0
  674. package/dist/tools/generated/snipeit_gen_usersidassets.d.ts.map +1 -0
  675. package/dist/tools/generated/snipeit_gen_usersidassets.js +23 -0
  676. package/dist/tools/generated/snipeit_gen_usersidassets.js.map +1 -0
  677. package/dist/tools/generated/snipeit_gen_usersideulas.d.ts +4 -0
  678. package/dist/tools/generated/snipeit_gen_usersideulas.d.ts.map +1 -0
  679. package/dist/tools/generated/snipeit_gen_usersideulas.js +23 -0
  680. package/dist/tools/generated/snipeit_gen_usersideulas.js.map +1 -0
  681. package/dist/tools/generated/snipeit_gen_usersidlicenses.d.ts +4 -0
  682. package/dist/tools/generated/snipeit_gen_usersidlicenses.d.ts.map +1 -0
  683. package/dist/tools/generated/snipeit_gen_usersidlicenses.js +23 -0
  684. package/dist/tools/generated/snipeit_gen_usersidlicenses.js.map +1 -0
  685. package/dist/tools/generated/snipeit_gen_usersme.d.ts +4 -0
  686. package/dist/tools/generated/snipeit_gen_usersme.d.ts.map +1 -0
  687. package/dist/tools/generated/snipeit_gen_usersme.js +21 -0
  688. package/dist/tools/generated/snipeit_gen_usersme.js.map +1 -0
  689. package/dist/tools/hardware.d.ts +4 -0
  690. package/dist/tools/hardware.d.ts.map +1 -0
  691. package/dist/tools/hardware.js +102 -0
  692. package/dist/tools/hardware.js.map +1 -0
  693. package/dist/tools/helpers.d.ts +70 -0
  694. package/dist/tools/helpers.d.ts.map +1 -0
  695. package/dist/tools/helpers.js +111 -0
  696. package/dist/tools/helpers.js.map +1 -0
  697. package/dist/tools/identity.d.ts +4 -0
  698. package/dist/tools/identity.d.ts.map +1 -0
  699. package/dist/tools/identity.js +22 -0
  700. package/dist/tools/identity.js.map +1 -0
  701. package/dist/tools/licenses.d.ts +4 -0
  702. package/dist/tools/licenses.d.ts.map +1 -0
  703. package/dist/tools/licenses.js +62 -0
  704. package/dist/tools/licenses.js.map +1 -0
  705. package/dist/tools/locations.d.ts +4 -0
  706. package/dist/tools/locations.d.ts.map +1 -0
  707. package/dist/tools/locations.js +37 -0
  708. package/dist/tools/locations.js.map +1 -0
  709. package/dist/tools/maintenances.d.ts +4 -0
  710. package/dist/tools/maintenances.d.ts.map +1 -0
  711. package/dist/tools/maintenances.js +55 -0
  712. package/dist/tools/maintenances.js.map +1 -0
  713. package/dist/tools/rawRequest.d.ts +4 -0
  714. package/dist/tools/rawRequest.d.ts.map +1 -0
  715. package/dist/tools/rawRequest.js +47 -0
  716. package/dist/tools/rawRequest.js.map +1 -0
  717. package/dist/tools/statuslabels.d.ts +4 -0
  718. package/dist/tools/statuslabels.d.ts.map +1 -0
  719. package/dist/tools/statuslabels.js +41 -0
  720. package/dist/tools/statuslabels.js.map +1 -0
  721. package/dist/tools/users.d.ts +4 -0
  722. package/dist/tools/users.d.ts.map +1 -0
  723. package/dist/tools/users.js +61 -0
  724. package/dist/tools/users.js.map +1 -0
  725. package/dist/utils/logger.d.ts +37 -0
  726. package/dist/utils/logger.d.ts.map +1 -0
  727. package/dist/utils/logger.js +62 -0
  728. package/dist/utils/logger.js.map +1 -0
  729. package/package.json +55 -0
package/.env.example ADDED
@@ -0,0 +1,8 @@
1
+ # Required: Snipe-IT Personal API Token (JWT). Get from Snipe-IT > User > Manage API Keys.
2
+ SNIPEIT_API_TOKEN=
3
+
4
+ # Optional overrides
5
+ SNIPEIT_API_BASE=https://snipe-it.example.com/api/v1
6
+ SNIPEIT_CONFIRM_WRITES=false
7
+ SNIPEIT_TIMEOUT_MS=30000
8
+ SNIPEIT_LOG_LEVEL=info
package/CHANGELOG.md ADDED
@@ -0,0 +1,51 @@
1
+ # Changelog
2
+
3
+ ## 0.1.5 — 2026-05-25
4
+
5
+ - Public release preparation: neutralized example domain in defaults (`https://snipe-it.example.com/api/v1`, RFC 2606 reserved).
6
+ - `package.json` polished for npm publish: `author`, `repository`, `homepage`, `bugs`, `keywords`, `publishConfig.access: public`.
7
+ - First npm release (`the-real-snipeit-mcp@0.1.5`).
8
+ - Repo switched from private to public.
9
+
10
+ ## 0.1.4 — 2026-05-25
11
+
12
+ - Docs: README extended with full tool reference (39 hand-wrappers in tables, plus workflow recipes).
13
+ - Docs: new `ARCHITECTURE.md` (layer diagram, data flow, codegen pipeline, file map).
14
+ - Docs: new `CONTRIBUTING.md` (workflows for adding tools/resources/prompts, codegen regeneration, release process).
15
+ - Docs: JSDoc annotations on all exported functions across `client/`, `codegen/`, `tools/`, `config`, `logger`, `server`.
16
+ - Docs: expanded inline code-comment block at the Snipe-IT status-envelope check.
17
+
18
+ ## 0.1.3 — 2026-05-25
19
+
20
+ - Test coverage: `callWrite` preview full-URL path, raw_request preview full-URL path, summary auto-pagination.
21
+ - `schemaToZod`: recursively flatten nested `allOf` via `$ref`.
22
+ - `snipeit_raw_request` preview now shows full URL (consistency with `callWrite`).
23
+
24
+ ## 0.1.2 — 2026-05-25
25
+
26
+ - Extract shared `callJson`/`callWrite` helpers, remove duplication across 9 wrapper modules.
27
+ - `runGuarded` preview now shows full URL instead of bare path.
28
+ - `schemaToZod`: resolve `$ref` inside `allOf` parts before merging (was silent no-op).
29
+ - Drop unnecessary intermediate cast in `codegen/generate.ts`.
30
+ - Parallelize `snipeit://hardware/summary` per-label and per-category fan-out (was sequential).
31
+ - Auto-paginate status-labels and categories in summary instead of hardcoded `limit: 200`.
32
+ - `callList` preserves server-reported `total` when `all: true`.
33
+
34
+ ## 0.1.1 — 2026-05-25
35
+
36
+ - feat(resources): `snipeit://hardware/summary` now includes `by_category` breakdown (spec §10).
37
+ - fix(resources): `snipeit://hardware/summary` wrapped in outer try/catch — network errors return `{error}` JSON instead of crashing.
38
+ - feat(tools): all 11 list tools now accept `all?: boolean` to auto-paginate up to 10,000 rows (spec §7); uses existing `autoPaginate` helper.
39
+ - refactor(client): fix readonly mutation bug — 429 retry-after now constructs a new `SnipeitApiError` instead of casting and mutating the `readonly details` field.
40
+ - test(client): new coverage for timeout/AbortError path (`statusCode: 0`).
41
+ - test(logger): new coverage for `"api_token":"…"` redaction pattern.
42
+
43
+ ## 0.1.0 — 2026-05-25
44
+
45
+ - Initial release.
46
+ - Hand-wrappers for hardware (13), users (5), licenses (3), accessories (3), consumables (2), components (3), locations (2), status-labels (2), maintenances (2), bulk-checkout (1), identity (1).
47
+ - Auto-generated tools for all paths in the Snipe-IT OpenAPI 3.1 spec (~145 tools).
48
+ - `snipeit_raw_request` escape hatch.
49
+ - Resources: `snipeit://me`, `snipeit://settings`, `snipeit://hardware/summary`.
50
+ - Prompts: inventory-audit, user-onboarding, license-health.
51
+ - MCPB bundle.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Manuel Guttmann
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,246 @@
1
+ # the-real-snipeit-mcp
2
+
3
+ MCP server for the [Snipe-IT](https://snipeitapp.com) REST API. 100 % endpoint coverage (read + write), hand-written wrappers for common workflows, codegen from the official OpenAPI 3.1 spec, stdio transport.
4
+
5
+ **Three tool layers:**
6
+ - **39 hand-wrappers** (`snipeit_*`) — friendlier UX for common workflows
7
+ - **~145 auto-generated tools** (`snipeit_gen_*`) — 100 % endpoint coverage
8
+ - **`snipeit_raw_request`** — escape hatch for any method/path
9
+
10
+ Plus **3 resources**, **3 prompts**, and an MCPB bundle for one-click Claude Desktop install.
11
+
12
+ ---
13
+
14
+ ## Quick start
15
+
16
+ ```bash
17
+ npm install
18
+ cp .env.example .env
19
+ # edit .env: set SNIPEIT_API_TOKEN
20
+ npm run build
21
+ npm start
22
+ ```
23
+
24
+ Verify the connection with the MCP Inspector:
25
+ ```bash
26
+ npm run inspector
27
+ ```
28
+
29
+ ## Configuration
30
+
31
+ | Variable | Default | Description |
32
+ |---|---|---|
33
+ | `SNIPEIT_API_TOKEN` | (required) | Snipe-IT Personal API Token (JWT) |
34
+ | `SNIPEIT_API_BASE` | `https://snipe-it.example.com/api/v1` | API base URL |
35
+ | `SNIPEIT_CONFIRM_WRITES` | `false` | If true, destructive tools require `confirm: "YES"` |
36
+ | `SNIPEIT_TIMEOUT_MS` | `30000` | Per-request timeout |
37
+ | `SNIPEIT_LOG_LEVEL` | `info` | `debug` \| `info` \| `warn` \| `error` |
38
+
39
+ ## Claude Desktop config
40
+
41
+ ```json
42
+ {
43
+ "mcpServers": {
44
+ "snipeit": {
45
+ "command": "node",
46
+ "args": [
47
+ "--env-file=/absolute/path/to/the-real-snipeit-mcp/.env",
48
+ "/absolute/path/to/the-real-snipeit-mcp/dist/index.js"
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ Or install via the MCPB bundle: `npm run build:mcpb` → install the `.mcpb` file in Claude Desktop.
56
+
57
+ ---
58
+
59
+ ## Tool reference
60
+
61
+ ### Hand-wrappers (39 tools)
62
+
63
+ #### Identity (1)
64
+
65
+ | Tool | Endpoint | Annotations |
66
+ |---|---|---|
67
+ | `snipeit_me` | `GET /users/me` | readOnly |
68
+
69
+ #### Hardware / Assets (13)
70
+
71
+ | Tool | Endpoint | Annotations |
72
+ |---|---|---|
73
+ | `snipeit_list_hardware` | `GET /hardware` (paginated, common filters) | readOnly |
74
+ | `snipeit_search_hardware` | `GET /hardware?search={query}` (convenience) | readOnly |
75
+ | `snipeit_get_hardware_by_id` | `GET /hardware/{id}` | readOnly |
76
+ | `snipeit_get_hardware_by_tag` | `GET /hardware/bytag/{tag}` | readOnly |
77
+ | `snipeit_get_hardware_by_serial` | `GET /hardware/byserial/{serial}` | readOnly |
78
+ | `snipeit_create_hardware` | `POST /hardware` | writeOnce |
79
+ | `snipeit_update_hardware` | `PATCH /hardware/{id}` | writeIdempotent |
80
+ | `snipeit_delete_hardware` | `DELETE /hardware/{id}` | writeIdempotent |
81
+ | `snipeit_checkout_hardware` | `POST /hardware/{id}/checkout` (user/location/asset) | writeOnce |
82
+ | `snipeit_checkin_hardware` | `POST /hardware/{id}/checkin` | writeOnce |
83
+ | `snipeit_audit_hardware` | `POST /hardware/audit` | writeOnce |
84
+ | `snipeit_list_audit_due` | `GET /hardware/audit/due` | readOnly |
85
+ | `snipeit_list_audit_overdue` | `GET /hardware/audit/overdue` | readOnly |
86
+
87
+ #### Users (5)
88
+
89
+ | Tool | Endpoint | Annotations |
90
+ |---|---|---|
91
+ | `snipeit_list_users` | `GET /users` | readOnly |
92
+ | `snipeit_get_user` | `GET /users/{id}` | readOnly |
93
+ | `snipeit_get_user_assets` | `GET /users/{id}/assets` | readOnly |
94
+ | `snipeit_get_user_accessories` | `GET /users/{id}/accessories` | readOnly |
95
+ | `snipeit_get_user_licenses` | `GET /users/{id}/licenses` | readOnly |
96
+
97
+ #### Licenses (3)
98
+
99
+ | Tool | Endpoint | Annotations |
100
+ |---|---|---|
101
+ | `snipeit_list_licenses` | `GET /licenses` | readOnly |
102
+ | `snipeit_get_license_seats` | `GET /licenses/{id}/seats` | readOnly |
103
+ | `snipeit_checkout_license_seat` | `PUT /licenses/{license_id}/seats/{seat_id}` | writeIdempotent |
104
+
105
+ #### Accessories / Consumables / Components (8)
106
+
107
+ | Tool | Endpoint | Annotations |
108
+ |---|---|---|
109
+ | `snipeit_list_accessories` | `GET /accessories` | readOnly |
110
+ | `snipeit_checkout_accessory` | `POST /accessories/{id}/checkout` | writeOnce |
111
+ | `snipeit_checkin_accessory` | `POST /accessories/{id}/checkin` (pivot-id) | writeOnce |
112
+ | `snipeit_list_consumables` | `GET /consumables` | readOnly |
113
+ | `snipeit_checkout_consumable` | `POST /consumables/{id}/checkout` | writeOnce |
114
+ | `snipeit_list_components` | `GET /components` | readOnly |
115
+ | `snipeit_checkout_component` | `POST /components/{id}/checkout` (to asset) | writeOnce |
116
+ | `snipeit_checkin_component` | `POST /components/{id}/checkin` (pivot-id) | writeOnce |
117
+
118
+ #### Locations / Status-Labels / Maintenances (6)
119
+
120
+ | Tool | Endpoint | Annotations |
121
+ |---|---|---|
122
+ | `snipeit_list_locations` | `GET /locations` | readOnly |
123
+ | `snipeit_get_location` | `GET /locations/{id}` | readOnly |
124
+ | `snipeit_list_statuslabels` | `GET /statuslabels` | readOnly |
125
+ | `snipeit_get_statuslabel_assets` | `GET /statuslabels/{id}/assetlist` | readOnly |
126
+ | `snipeit_list_maintenances` | `GET /maintenances` | readOnly |
127
+ | `snipeit_create_maintenance` | `POST /maintenances` | writeOnce |
128
+
129
+ #### Bulk & Escape (2)
130
+
131
+ | Tool | Behavior | Annotations |
132
+ |---|---|---|
133
+ | `snipeit_bulk_checkout` | Serially checks out N assets, returns per-item success/error summary | writeOnce |
134
+ | `snipeit_raw_request` | Any method/path against `SNIPEIT_API_BASE` — escape hatch | writeOnce (writeIdempotent for GET) |
135
+
136
+ **List tools** (`snipeit_list_*`) accept `limit?`, `offset?`, and `all?: boolean`. With `all: true`, the tool auto-paginates up to 10 000 rows.
137
+
138
+ ### Auto-generated tools (`snipeit_gen_*`)
139
+
140
+ All 77 paths × every method in the Snipe-IT OpenAPI 3.1 spec are exposed as `snipeit_gen_<snake_operation_id>` — roughly 145 tools. Use these when the hand-wrapper layer doesn't cover what you need. Read tools have `readOnlyHint: true`; writes have `destructiveHint: true`. Regenerate with `npm run codegen` after `npm run refresh-spec`.
141
+
142
+ ### `snipeit_raw_request`
143
+
144
+ Escape hatch for anything else:
145
+ ```ts
146
+ { method: "PATCH", path: "/locations/4", body: { name: "HQ" } }
147
+ ```
148
+ GET requests bypass the destructive-write guard; other methods honor `SNIPEIT_CONFIRM_WRITES`.
149
+
150
+ ---
151
+
152
+ ## Resources
153
+
154
+ | URI | Description |
155
+ |---|---|
156
+ | `snipeit://me` | Current authenticated user (`GET /users/me`) |
157
+ | `snipeit://settings` | Server settings (`GET /settings`) |
158
+ | `snipeit://hardware/summary` | `{total, by_status_label, by_category}` — aggregated counts |
159
+
160
+ ## Prompts
161
+
162
+ | Prompt | Args | Purpose |
163
+ |---|---|---|
164
+ | `snipeit-inventory-audit` | – | Lists overdue/due audits + unassigned assets, then summarizes |
165
+ | `snipeit-user-onboarding` | `user_id`, optional `kit` | Suggests a checkout sequence for a new user |
166
+ | `snipeit-license-health` | – | Seat usage + licenses expiring within 90 days |
167
+
168
+ ---
169
+
170
+ ## Workflows / Recipes
171
+
172
+ ### Onboard a new user with a laptop
173
+
174
+ 1. Confirm the user: `snipeit_get_user(id: 42)`
175
+ 2. Find an available laptop: `snipeit_list_hardware(category_id: 3, status_id: 5)` (ready-to-deploy)
176
+ 3. Checkout: `snipeit_checkout_hardware(id: 100, checkout_to_type: "user", assigned_user: 42, note: "Onboarding 2026-05-25")`
177
+
178
+ ### Bulk-checkout a kit to one user
179
+
180
+ ```json
181
+ {
182
+ "items": [
183
+ { "asset_id": 100, "checkout_to_type": "user", "assigned_user": 42 },
184
+ { "asset_id": 101, "checkout_to_type": "user", "assigned_user": 42 },
185
+ { "asset_id": 102, "checkout_to_type": "user", "assigned_user": 42 }
186
+ ]
187
+ }
188
+ ```
189
+ Continues on per-item errors. Returns `{summary: {total, ok, errors}, results: [...]}`.
190
+
191
+ ### Audit overdue cleanup
192
+
193
+ 1. `snipeit_list_audit_overdue(all: true)` — full list, auto-paginated
194
+ 2. For each: `snipeit_audit_hardware(asset_tag: "...", location_id: 1, next_audit_date: "2027-05-25")`
195
+
196
+ ### Find an asset by tag or serial
197
+
198
+ - By asset tag: `snipeit_get_hardware_by_tag(tag: "A-42")` (handles URL encoding)
199
+ - By serial: `snipeit_get_hardware_by_serial(serial: "SN12345")`
200
+
201
+ ### Discover what an LLM can do
202
+
203
+ Browse the MCP Inspector:
204
+ ```bash
205
+ npm run build && npm run inspector
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Write safety
211
+
212
+ By default, destructive tools execute directly. Set `SNIPEIT_CONFIRM_WRITES=true` and any write tool returns a **redacted preview** instead — re-invoke with `confirm: "YES"` to actually execute. Preview includes the full URL (`apiBase + path`) and a redacted body (password/secret/token/api_key fields replaced with `(redacted)`).
213
+
214
+ ## Snipe-IT API quirk
215
+
216
+ Snipe-IT often returns **HTTP 200** with `{"status":"error","messages":…}` for validation errors. This server detects that envelope and surfaces the messages as a tool error (with `isError: true`), so callers never accidentally treat a Snipe-IT error as success. Successful envelopes (`{"status":"success","payload":…}`) are unwrapped automatically so tool data is the inner `payload`, not the outer wrapper.
217
+
218
+ ---
219
+
220
+ ## Develop
221
+
222
+ ```bash
223
+ npm run dev # tsx watch
224
+ npm test # unit + integration if env present
225
+ npm run test:unit # unit only (CI-safe)
226
+ npm run test:integration # live; requires SNIPEIT_API_TOKEN in .env
227
+ npm run lint
228
+ npm run typecheck
229
+ npm run codegen # regenerate src/tools/generated from vendor/snipe-it-rest-api.json
230
+ npm run refresh-spec # pull latest OpenAPI spec from snipe-it.readme.io
231
+ npm run inspector # MCP Inspector
232
+ npm run build:mcpb # build .mcpb installable bundle
233
+ ```
234
+
235
+ See [`ARCHITECTURE.md`](./ARCHITECTURE.md) for the layer diagram and data flow. See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for adding hand-wrappers, regenerating the codegen layer, and debugging.
236
+
237
+ ## Security
238
+
239
+ - API token is read from `SNIPEIT_API_TOKEN` env only. Never hard-coded. `.env` is git-ignored.
240
+ - The logger redacts known secret patterns (Bearer tokens, JWTs, `api_token` fields, `Authorization` header) before any output.
241
+ - All MCP stdio output goes to `stderr` only — `stdout` is reserved for the protocol.
242
+ - **If your token has ever been pasted into a chat or commit, rotate it.**
243
+
244
+ ## License
245
+
246
+ MIT.
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Error types and message formatting for Snipe-IT API failures.
3
+ *
4
+ * `SnipeitApiError` is thrown by `SnipeitClient` for any failure mode —
5
+ * non-2xx HTTP, the `{"status":"error"}` envelope on HTTP 200, timeouts (statusCode 0),
6
+ * and unrecoverable network errors. `formatMessages` converts Snipe-IT's
7
+ * variable-shape `messages` field into a single readable string.
8
+ *
9
+ * @module
10
+ */
11
+ export interface SnipeitErrorPayload {
12
+ statusCode: number;
13
+ message: string;
14
+ code?: string;
15
+ details?: unknown;
16
+ }
17
+ /**
18
+ * Custom error thrown by `SnipeitClient` for all API failures.
19
+ * Use `instanceof SnipeitApiError` to distinguish from generic Errors.
20
+ *
21
+ * - `statusCode === 0` means timeout or unrecoverable network error.
22
+ * - `statusCode === 200` with this error means a Snipe-IT envelope-level error.
23
+ * - `details` preserves the original `messages` field for programmatic inspection.
24
+ */
25
+ export declare class SnipeitApiError extends Error {
26
+ readonly statusCode: number;
27
+ readonly code: string | undefined;
28
+ readonly details: unknown;
29
+ constructor(p: SnipeitErrorPayload);
30
+ }
31
+ /**
32
+ * Format Snipe-IT's `messages` field (which can be a string, field→string map,
33
+ * field→string-array map, or arbitrary JSON) into a single readable line.
34
+ *
35
+ * @example
36
+ * formatMessages("Asset created.") // → "Asset created."
37
+ * formatMessages({ name: ["required"], asset_tag: ["unique"] })
38
+ * // → "asset_tag: unique; name: required"
39
+ * formatMessages({ name: "required" }) // → "name: required"
40
+ */
41
+ export declare function formatMessages(messages: unknown): string;
42
+ /**
43
+ * Build a `SnipeitApiError` from an HTTP error response body.
44
+ *
45
+ * Tries to JSON-parse the body and extract `messages` or `message`; falls back to
46
+ * `HTTP <status>: <body-snippet>` if neither yields a usable message.
47
+ */
48
+ export declare function parseApiError(body: string, status: number): SnipeitApiError;
49
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,CAAC,EAAE,mBAAmB;CAOnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAmBxD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAkB3E"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Custom error thrown by `SnipeitClient` for all API failures.
3
+ * Use `instanceof SnipeitApiError` to distinguish from generic Errors.
4
+ *
5
+ * - `statusCode === 0` means timeout or unrecoverable network error.
6
+ * - `statusCode === 200` with this error means a Snipe-IT envelope-level error.
7
+ * - `details` preserves the original `messages` field for programmatic inspection.
8
+ */
9
+ export class SnipeitApiError extends Error {
10
+ statusCode;
11
+ code;
12
+ details;
13
+ constructor(p) {
14
+ super(`[${p.statusCode}] ${p.message}`);
15
+ this.name = "SnipeitApiError";
16
+ this.statusCode = p.statusCode;
17
+ this.code = p.code;
18
+ this.details = p.details;
19
+ }
20
+ }
21
+ /**
22
+ * Format Snipe-IT's `messages` field (which can be a string, field→string map,
23
+ * field→string-array map, or arbitrary JSON) into a single readable line.
24
+ *
25
+ * @example
26
+ * formatMessages("Asset created.") // → "Asset created."
27
+ * formatMessages({ name: ["required"], asset_tag: ["unique"] })
28
+ * // → "asset_tag: unique; name: required"
29
+ * formatMessages({ name: "required" }) // → "name: required"
30
+ */
31
+ export function formatMessages(messages) {
32
+ if (messages === null || messages === undefined)
33
+ return "";
34
+ if (typeof messages === "string")
35
+ return messages;
36
+ if (typeof messages === "object" && !Array.isArray(messages)) {
37
+ const obj = messages;
38
+ const parts = [];
39
+ for (const key of Object.keys(obj).sort()) {
40
+ const val = obj[key];
41
+ if (Array.isArray(val))
42
+ parts.push(`${key}: ${val.join(", ")}`);
43
+ else if (typeof val === "string")
44
+ parts.push(`${key}: ${val}`);
45
+ else
46
+ parts.push(`${key}: ${JSON.stringify(val)}`);
47
+ }
48
+ return parts.join("; ");
49
+ }
50
+ try {
51
+ return JSON.stringify(messages).slice(0, 500);
52
+ }
53
+ catch {
54
+ return String(messages).slice(0, 500);
55
+ }
56
+ }
57
+ /**
58
+ * Build a `SnipeitApiError` from an HTTP error response body.
59
+ *
60
+ * Tries to JSON-parse the body and extract `messages` or `message`; falls back to
61
+ * `HTTP <status>: <body-snippet>` if neither yields a usable message.
62
+ */
63
+ export function parseApiError(body, status) {
64
+ try {
65
+ const parsed = JSON.parse(body);
66
+ if (parsed && typeof parsed === "object") {
67
+ const msg = parsed.messages !== undefined
68
+ ? formatMessages(parsed.messages)
69
+ : (typeof parsed.message === "string" ? parsed.message : "");
70
+ if (msg) {
71
+ return new SnipeitApiError({ statusCode: status, message: msg, details: parsed.messages });
72
+ }
73
+ }
74
+ }
75
+ catch {
76
+ // fall through
77
+ }
78
+ return new SnipeitApiError({
79
+ statusCode: status,
80
+ message: `HTTP ${status}${body ? `: ${body.slice(0, 200)}` : ""}`,
81
+ });
82
+ }
83
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAiBA;;;;;;;GAOG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,UAAU,CAAS;IACnB,IAAI,CAAqB;IACzB,OAAO,CAAU;IAE1B,YAAY,CAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3B,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,QAAmC,CAAC;QAChD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;;gBAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8D,CAAC;QAC7F,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS;gBACvC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACjC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,IAAI,eAAe,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,eAAe,CAAC;QACzB,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,QAAQ,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KAClE,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ export interface PaginationHint {
2
+ total: number;
3
+ returned: number;
4
+ offset: number;
5
+ limit: number;
6
+ hasMore: boolean;
7
+ nextOffset: number;
8
+ }
9
+ /**
10
+ * Detect a Snipe-IT list envelope (`{total, rows}`) and compute a pagination hint
11
+ * describing how to fetch the next page. Returns `null` if the body isn't a list envelope.
12
+ *
13
+ * @param body - The (already-unwrapped) response payload.
14
+ * @param req - The `{limit, offset}` actually used for this request.
15
+ */
16
+ export declare function parsePaginationHint(body: unknown, req: {
17
+ limit: number;
18
+ offset: number;
19
+ }): PaginationHint | null;
20
+ export interface AutoPaginateOptions {
21
+ startOffset?: number;
22
+ pageLimit?: number;
23
+ maxRows?: number;
24
+ }
25
+ /**
26
+ * Walk all pages of a list endpoint, calling `fetcher` repeatedly with increasing
27
+ * `offset` until either the server reports no more rows or `maxRows` is reached.
28
+ *
29
+ * @param fetcher - Async function that fetches a single page given `{limit, offset}`.
30
+ * @param opts.startOffset - Offset to start from (default 0).
31
+ * @param opts.pageLimit - Rows per page (default 200, capped at 500 by Snipe-IT).
32
+ * @param opts.maxRows - Hard cap on total rows (default 10 000) to prevent runaway loops.
33
+ * @returns The merged row array.
34
+ */
35
+ export declare function autoPaginate<T>(fetcher: (opts: {
36
+ limit: number;
37
+ offset: number;
38
+ }) => Promise<{
39
+ total: number;
40
+ rows: T[];
41
+ }>, opts?: AutoPaginateOptions): Promise<T[]>;
42
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/client/pagination.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAaD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC,cAAc,GAAG,IAAI,CAYvB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,OAAO,EAAE,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,EAAE,CAAA;CAAE,CAAC,EAC3F,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,CAAC,EAAE,CAAC,CAcd"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Pagination utilities for Snipe-IT list endpoints.
3
+ *
4
+ * Snipe-IT lists return `{total, rows}` with `limit`/`offset` query parameters.
5
+ * {@link parsePaginationHint} extracts a hint describing the current page; callers
6
+ * can chain pages manually using `nextOffset`. {@link autoPaginate} provides the
7
+ * walk-all-pages variant with a safety cap.
8
+ *
9
+ * @module
10
+ */
11
+ import { PAGINATION } from "../constants.js";
12
+ function isEnvelope(x) {
13
+ if (x === null || typeof x !== "object" || Array.isArray(x))
14
+ return false;
15
+ const r = x;
16
+ return typeof r.total === "number" && Array.isArray(r.rows);
17
+ }
18
+ /**
19
+ * Detect a Snipe-IT list envelope (`{total, rows}`) and compute a pagination hint
20
+ * describing how to fetch the next page. Returns `null` if the body isn't a list envelope.
21
+ *
22
+ * @param body - The (already-unwrapped) response payload.
23
+ * @param req - The `{limit, offset}` actually used for this request.
24
+ */
25
+ export function parsePaginationHint(body, req) {
26
+ if (!isEnvelope(body))
27
+ return null;
28
+ const returned = body.rows.length;
29
+ const next = req.offset + returned;
30
+ return {
31
+ total: body.total,
32
+ returned,
33
+ offset: req.offset,
34
+ limit: req.limit,
35
+ hasMore: next < body.total,
36
+ nextOffset: next,
37
+ };
38
+ }
39
+ /**
40
+ * Walk all pages of a list endpoint, calling `fetcher` repeatedly with increasing
41
+ * `offset` until either the server reports no more rows or `maxRows` is reached.
42
+ *
43
+ * @param fetcher - Async function that fetches a single page given `{limit, offset}`.
44
+ * @param opts.startOffset - Offset to start from (default 0).
45
+ * @param opts.pageLimit - Rows per page (default 200, capped at 500 by Snipe-IT).
46
+ * @param opts.maxRows - Hard cap on total rows (default 10 000) to prevent runaway loops.
47
+ * @returns The merged row array.
48
+ */
49
+ export async function autoPaginate(fetcher, opts = {}) {
50
+ const pageLimit = Math.min(opts.pageLimit ?? PAGINATION.AUTO_PAGINATE_PAGE_SIZE, PAGINATION.MAX_LIMIT);
51
+ const maxRows = opts.maxRows ?? PAGINATION.AUTO_PAGINATE_MAX_ROWS;
52
+ let offset = opts.startOffset ?? 0;
53
+ const out = [];
54
+ while (out.length < maxRows) {
55
+ const page = await fetcher({ limit: pageLimit, offset });
56
+ out.push(...page.rows);
57
+ const fetched = page.rows.length;
58
+ if (fetched === 0)
59
+ break;
60
+ offset += fetched;
61
+ if (offset >= page.total)
62
+ break;
63
+ }
64
+ return out.slice(0, maxRows);
65
+ }
66
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/client/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgB7C,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAa,EACb,GAAsC;IAEtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;IACnC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK;QAC1B,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA2F,EAC3F,OAA4B,EAAE;IAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,sBAAsB,CAAC;IAClE,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IACnC,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,OAAO,KAAK,CAAC;YAAE,MAAM;QACzB,MAAM,IAAI,OAAO,CAAC;QAClB,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM;IAClC,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface RetryOptions {
2
+ maxAttempts: number;
3
+ sleep?: (ms: number) => Promise<void>;
4
+ idempotent?: boolean;
5
+ }
6
+ /** Return the backoff (ms) for the given attempt index, capped at the last schedule entry. */
7
+ export declare function computeBackoff(attempt: number): number;
8
+ /**
9
+ * Parse a `Retry-After` HTTP header into milliseconds.
10
+ *
11
+ * Accepts both numeric seconds (`"5"`) and HTTP-date (`"Wed, 21 Oct 2026 07:28:00 GMT"`).
12
+ * Returns `null` for missing/garbage input. Capped at 60s to prevent unbounded waits.
13
+ */
14
+ export declare function parseRetryAfter(header: string | undefined | null): number | null;
15
+ /**
16
+ * Decide whether a given error is worth retrying.
17
+ *
18
+ * @param err - Caught error from a failed `fetch` call or `SnipeitClient.request`.
19
+ * @param opts.idempotent - If true, 5xx are retried; otherwise 5xx are not retried.
20
+ */
21
+ export declare function isRetriable(err: unknown, opts?: {
22
+ idempotent?: boolean;
23
+ }): boolean;
24
+ /**
25
+ * Run `fn` with bounded retries. Re-throws the last error if `maxAttempts` is exhausted
26
+ * or the error is not retriable. Honors `Retry-After` for 429 errors.
27
+ *
28
+ * @param fn - The async operation to retry.
29
+ * @param opts.maxAttempts - Maximum number of attempts (including the first).
30
+ * @param opts.idempotent - When true, 5xx errors are retried; otherwise only 429 and network errors.
31
+ * @param opts.sleep - Override the default sleep implementation (used in tests to avoid real delays).
32
+ */
33
+ export declare function withRetry<T>(fn: () => Promise<T>, opts: RetryOptions): Promise<T>;
34
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/client/retry.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAahF;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAUtF;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAkBvF"}