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.
- package/.env.example +8 -0
- package/CHANGELOG.md +51 -0
- package/LICENSE +21 -0
- package/README.md +246 -0
- package/dist/client/errors.d.ts +49 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +83 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/pagination.d.ts +42 -0
- package/dist/client/pagination.d.ts.map +1 -0
- package/dist/client/pagination.js +66 -0
- package/dist/client/pagination.js.map +1 -0
- package/dist/client/retry.d.ts +34 -0
- package/dist/client/retry.d.ts.map +1 -0
- package/dist/client/retry.js +93 -0
- package/dist/client/retry.js.map +1 -0
- package/dist/client/snipeitClient.d.ts +76 -0
- package/dist/client/snipeitClient.d.ts.map +1 -0
- package/dist/client/snipeitClient.js +182 -0
- package/dist/client/snipeitClient.js.map +1 -0
- package/dist/codegen/emit.d.ts +22 -0
- package/dist/codegen/emit.d.ts.map +1 -0
- package/dist/codegen/emit.js +102 -0
- package/dist/codegen/emit.js.map +1 -0
- package/dist/codegen/generate.d.ts +2 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/generate.js +70 -0
- package/dist/codegen/generate.js.map +1 -0
- package/dist/codegen/parseOpenapi.d.ts +63 -0
- package/dist/codegen/parseOpenapi.d.ts.map +1 -0
- package/dist/codegen/parseOpenapi.js +71 -0
- package/dist/codegen/parseOpenapi.js.map +1 -0
- package/dist/codegen/schemaToZod.d.ts +22 -0
- package/dist/codegen/schemaToZod.d.ts.map +1 -0
- package/dist/codegen/schemaToZod.js +123 -0
- package/dist/codegen/schemaToZod.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +17 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +17 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +3 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +9 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/inventoryAudit.d.ts +3 -0
- package/dist/prompts/inventoryAudit.d.ts.map +1 -0
- package/dist/prompts/inventoryAudit.js +18 -0
- package/dist/prompts/inventoryAudit.js.map +1 -0
- package/dist/prompts/licenseHealth.d.ts +3 -0
- package/dist/prompts/licenseHealth.d.ts.map +1 -0
- package/dist/prompts/licenseHealth.js +18 -0
- package/dist/prompts/licenseHealth.js.map +1 -0
- package/dist/prompts/userOnboarding.d.ts +3 -0
- package/dist/prompts/userOnboarding.d.ts.map +1 -0
- package/dist/prompts/userOnboarding.js +26 -0
- package/dist/prompts/userOnboarding.js.map +1 -0
- package/dist/resources/identity.d.ts +4 -0
- package/dist/resources/identity.d.ts.map +1 -0
- package/dist/resources/identity.js +11 -0
- package/dist/resources/identity.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +9 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/settings.d.ts +4 -0
- package/dist/resources/settings.d.ts.map +1 -0
- package/dist/resources/settings.js +11 -0
- package/dist/resources/settings.js.map +1 -0
- package/dist/resources/summary.d.ts +4 -0
- package/dist/resources/summary.d.ts.map +1 -0
- package/dist/resources/summary.js +51 -0
- package/dist/resources/summary.js.map +1 -0
- package/dist/server.d.ts +37 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +76 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/accessories.d.ts +4 -0
- package/dist/tools/accessories.d.ts.map +1 -0
- package/dist/tools/accessories.js +64 -0
- package/dist/tools/accessories.js.map +1 -0
- package/dist/tools/bulk.d.ts +4 -0
- package/dist/tools/bulk.d.ts.map +1 -0
- package/dist/tools/bulk.js +39 -0
- package/dist/tools/bulk.js.map +1 -0
- package/dist/tools/components.d.ts +4 -0
- package/dist/tools/components.d.ts.map +1 -0
- package/dist/tools/components.js +63 -0
- package/dist/tools/components.js.map +1 -0
- package/dist/tools/consumables.d.ts +4 -0
- package/dist/tools/consumables.d.ts.map +1 -0
- package/dist/tools/consumables.js +48 -0
- package/dist/tools/consumables.js.map +1 -0
- package/dist/tools/destructiveGuard.d.ts +42 -0
- package/dist/tools/destructiveGuard.d.ts.map +1 -0
- package/dist/tools/destructiveGuard.js +51 -0
- package/dist/tools/destructiveGuard.js.map +1 -0
- package/dist/tools/generated/index.d.ts +4 -0
- package/dist/tools/generated/index.d.ts.map +1 -0
- package/dist/tools/generated/index.js +293 -0
- package/dist/tools/generated/index.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessories.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories.js +23 -0
- package/dist/tools/generated/snipeit_gen_accessories.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessories_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_accessories_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkin.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkin.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkin.js +26 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkin.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkout.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkout.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkout.js +26 -0
- package/dist/tools/generated/snipeit_gen_accessories_checkout.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid.js +23 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_accessoriesid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.js +23 -0
- package/dist/tools/generated/snipeit_gen_accessoriesidcheckedout.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_backups_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_backups_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_backups_1.js +21 -0
- package/dist/tools/generated/snipeit_gen_backups_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_backupsdownloadfile.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_backupsdownloadfile.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_backupsdownloadfile.js +23 -0
- package/dist/tools/generated/snipeit_gen_backupsdownloadfile.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_categories_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_categories_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_categories_1.js +23 -0
- package/dist/tools/generated/snipeit_gen_categories_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_categories_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_categories_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_categories_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_categories_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_categoriesid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid.js +26 -0
- package/dist/tools/generated/snipeit_gen_categoriesid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_3.js +23 -0
- package/dist/tools/generated/snipeit_gen_categoriesid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_companies.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_companies.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_companies.js +23 -0
- package/dist/tools/generated/snipeit_gen_companies.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_companies_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_companies_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_companies_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_companies_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_companiesid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid.js +23 -0
- package/dist/tools/generated/snipeit_gen_companiesid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_companiesid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_companiesid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_companiesid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_companiesid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_companiesid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_companiesid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_companiesid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_components.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_components.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_components.js +23 -0
- package/dist/tools/generated/snipeit_gen_components.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_components_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_components_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_components_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_components_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_componentsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_componentsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_componentsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_componentsid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsidassets.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsidassets.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsidassets.js +23 -0
- package/dist/tools/generated/snipeit_gen_componentsidassets.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckin.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckin.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckin.js +26 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckin.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckout.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckout.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckout.js +26 -0
- package/dist/tools/generated/snipeit_gen_componentsidcheckout.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumables.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumables.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumables.js +23 -0
- package/dist/tools/generated/snipeit_gen_consumables.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumables_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumables_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumables_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_consumables_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumables_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumables_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumables_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_consumables_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumablesid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesid.js +23 -0
- package/dist/tools/generated/snipeit_gen_consumablesid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_consumablesid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesidcheckout.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_consumablesidcheckout.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_consumablesidcheckout.js +26 -0
- package/dist/tools/generated/snipeit_gen_consumablesidcheckout.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_departments.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_departments.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_departments.js +23 -0
- package/dist/tools/generated/snipeit_gen_departments.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_departments_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_departments_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_departments_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_departments_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_departments_edit.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_departments_edit.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_departments_edit.js +26 -0
- package/dist/tools/generated/snipeit_gen_departments_edit.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_departmentsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_departmentsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_departmentsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_departmentsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_departmentsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fields.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fields.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fields.js +21 -0
- package/dist/tools/generated/snipeit_gen_fields.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fields_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fields_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fields_1.js +21 -0
- package/dist/tools/generated/snipeit_gen_fields_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fields_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fields_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fields_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_fields_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsets.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsets.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsets.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsets.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsidfields.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsidfields.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsidfields.js +23 -0
- package/dist/tools/generated/snipeit_gen_fieldsetsidfields.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_fieldsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsidassociate.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsidassociate.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsidassociate.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsidassociate.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.js +26 -0
- package/dist/tools/generated/snipeit_gen_fieldsiddisassociate.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint.js +23 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.js +23 -0
- package/dist/tools/generated/snipeit_gen_get_new_endpoint_consumables_id_user.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_groups_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_groups_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_groups_1.js +23 -0
- package/dist/tools/generated/snipeit_gen_groups_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_groupsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_groupsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_groupsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_groupsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_groupsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_groupsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_groupsid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_groupsid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_4.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_groupsid_4.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_groupsid_4.js +26 -0
- package/dist/tools/generated/snipeit_gen_groupsid_4.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_asset_tag.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_id.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_id.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_id.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_id.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_serial.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_serial.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_serial.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardware_by_serial.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkin.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkin.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkin.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkin.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkout.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkout.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkout.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_checkout.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_create.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_create.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_create.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_create.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_delete.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_delete.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_delete.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_delete.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_files_delete.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_files_delete.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_files_delete.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_files_delete.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_list.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_list.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_list.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardware_list.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_list_files.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_list_files.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_list_files.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardware_list_files.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_partial_update.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_partial_update.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_partial_update.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_partial_update.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_update.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_update.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_update.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_update.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_upload_files.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardware_upload_files.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardware_upload_files.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardware_upload_files.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareaudit.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardwareaudit.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareaudit.js +26 -0
- package/dist/tools/generated/snipeit_gen_hardwareaudit.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditdue.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditdue.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditdue.js +21 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditdue.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.js +21 -0
- package/dist/tools/generated/snipeit_gen_hardwareauditoverdue.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardwareidfilesfile_id.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareidlicenses.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardwareidlicenses.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareidlicenses.js +23 -0
- package/dist/tools/generated/snipeit_gen_hardwareidlicenses.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareidrestore.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_hardwareidrestore.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_hardwareidrestore.js +24 -0
- package/dist/tools/generated/snipeit_gen_hardwareidrestore.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licenses.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licenses.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licenses.js +23 -0
- package/dist/tools/generated/snipeit_gen_licenses.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid.js +23 -0
- package/dist/tools/generated/snipeit_gen_licensesid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_licensesid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_licensesid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_licensesid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesidseats.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesidseats.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesidseats.js +23 -0
- package/dist/tools/generated/snipeit_gen_licensesidseats.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.js +23 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_licensesidseatsseat_id_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_locations.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations.js +23 -0
- package/dist/tools/generated/snipeit_gen_locations.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_locations_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations_1.js +23 -0
- package/dist/tools/generated/snipeit_gen_locations_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_locations_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_locations_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_locations_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_locations_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_locations_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_locationsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_locationsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_locationsid.js +26 -0
- package/dist/tools/generated/snipeit_gen_locationsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_locationsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_locationsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_locationsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_locationsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_maintenances.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances.js +23 -0
- package/dist/tools/generated/snipeit_gen_maintenances.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_maintenances_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_maintenances_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy.js +26 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_maintenances_copy_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenancesid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_maintenancesid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_maintenancesid.js +26 -0
- package/dist/tools/generated/snipeit_gen_maintenancesid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturers.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_manufacturers.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturers.js +23 -0
- package/dist/tools/generated/snipeit_gen_manufacturers.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturers_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_manufacturers_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturers_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_manufacturers_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid.js +26 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_1.js +23 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_manufacturersid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_models.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_models.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_models.js +23 -0
- package/dist/tools/generated/snipeit_gen_models.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_models_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_models_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_models_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_models_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_models_files_list.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_models_files_list.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_models_files_list.js +23 -0
- package/dist/tools/generated/snipeit_gen_models_files_list.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_modelsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_modelsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_modelsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_modelsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_modelsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_modelsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_modelsid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_modelsid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsidfiles.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_modelsidfiles.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsidfiles.js +26 -0
- package/dist/tools/generated/snipeit_gen_modelsidfiles.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.js +26 -0
- package/dist/tools/generated/snipeit_gen_modelsidfilesfile_id.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_post_auditid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_post_auditid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_post_auditid.js +26 -0
- package/dist/tools/generated/snipeit_gen_post_auditid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.js +26 -0
- package/dist/tools/generated/snipeit_gen_put_licensesidseatsseat_id.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_reportsactivity.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_reportsactivity.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_reportsactivity.js +23 -0
- package/dist/tools/generated/snipeit_gen_reportsactivity.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabels.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabels.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabels.js +23 -0
- package/dist/tools/generated/snipeit_gen_statuslabels.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabels_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabels_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabels_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_statuslabels_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid.js +23 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsid_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.js +23 -0
- package/dist/tools/generated/snipeit_gen_statuslabelsidassetlist.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_suppliers.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_suppliers.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_suppliers.js +23 -0
- package/dist/tools/generated/snipeit_gen_suppliers.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_suppliersid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_suppliersid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_suppliersid.js +23 -0
- package/dist/tools/generated/snipeit_gen_suppliersid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_testinput.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_testinput.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_testinput.js +26 -0
- package/dist/tools/generated/snipeit_gen_testinput.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_update_fields.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_update_fields.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_update_fields.js +26 -0
- package/dist/tools/generated/snipeit_gen_update_fields.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_users.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_users.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_users.js +23 -0
- package/dist/tools/generated/snipeit_gen_users.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_users_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_users_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_users_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_users_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_users_3.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_users_3.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_users_3.js +26 -0
- package/dist/tools/generated/snipeit_gen_users_3.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_users_restore.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_users_restore.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_users_restore.js +26 -0
- package/dist/tools/generated/snipeit_gen_users_restore.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersid.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersid.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersid.js +23 -0
- package/dist/tools/generated/snipeit_gen_usersid.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersid_1.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersid_1.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersid_1.js +26 -0
- package/dist/tools/generated/snipeit_gen_usersid_1.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersid_2.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersid_2.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersid_2.js +26 -0
- package/dist/tools/generated/snipeit_gen_usersid_2.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersidaccessories.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersidaccessories.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersidaccessories.js +23 -0
- package/dist/tools/generated/snipeit_gen_usersidaccessories.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersidassets.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersidassets.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersidassets.js +23 -0
- package/dist/tools/generated/snipeit_gen_usersidassets.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersideulas.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersideulas.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersideulas.js +23 -0
- package/dist/tools/generated/snipeit_gen_usersideulas.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersidlicenses.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersidlicenses.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersidlicenses.js +23 -0
- package/dist/tools/generated/snipeit_gen_usersidlicenses.js.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersme.d.ts +4 -0
- package/dist/tools/generated/snipeit_gen_usersme.d.ts.map +1 -0
- package/dist/tools/generated/snipeit_gen_usersme.js +21 -0
- package/dist/tools/generated/snipeit_gen_usersme.js.map +1 -0
- package/dist/tools/hardware.d.ts +4 -0
- package/dist/tools/hardware.d.ts.map +1 -0
- package/dist/tools/hardware.js +102 -0
- package/dist/tools/hardware.js.map +1 -0
- package/dist/tools/helpers.d.ts +70 -0
- package/dist/tools/helpers.d.ts.map +1 -0
- package/dist/tools/helpers.js +111 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/identity.d.ts +4 -0
- package/dist/tools/identity.d.ts.map +1 -0
- package/dist/tools/identity.js +22 -0
- package/dist/tools/identity.js.map +1 -0
- package/dist/tools/licenses.d.ts +4 -0
- package/dist/tools/licenses.d.ts.map +1 -0
- package/dist/tools/licenses.js +62 -0
- package/dist/tools/licenses.js.map +1 -0
- package/dist/tools/locations.d.ts +4 -0
- package/dist/tools/locations.d.ts.map +1 -0
- package/dist/tools/locations.js +37 -0
- package/dist/tools/locations.js.map +1 -0
- package/dist/tools/maintenances.d.ts +4 -0
- package/dist/tools/maintenances.d.ts.map +1 -0
- package/dist/tools/maintenances.js +55 -0
- package/dist/tools/maintenances.js.map +1 -0
- package/dist/tools/rawRequest.d.ts +4 -0
- package/dist/tools/rawRequest.d.ts.map +1 -0
- package/dist/tools/rawRequest.js +47 -0
- package/dist/tools/rawRequest.js.map +1 -0
- package/dist/tools/statuslabels.d.ts +4 -0
- package/dist/tools/statuslabels.d.ts.map +1 -0
- package/dist/tools/statuslabels.js +41 -0
- package/dist/tools/statuslabels.js.map +1 -0
- package/dist/tools/users.d.ts +4 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +61 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/utils/logger.d.ts +37 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +62 -0
- package/dist/utils/logger.js.map +1 -0
- 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"}
|