.gitignore
AGENTS.md
ARCHITECTURE.md
CHANGELOG.md
CONTRIBUTING.md
LICENSE
LLMs.md
README.md
SECURITY.md
pyproject.toml
requirements-dev.txt
requirements.txt
.github/workflows/ci.yaml
.github/workflows/pypi-publish.yml
docs/README.md
docs/smoke-test-limitations.md
docs/adr/0001-http-429-retry-with-retry-after.md
docs/adr/0002-setuptools-scm-version-management.md
docs/adr/README.md
docs/examples/US01-find-hardware-by-asset-tag.py
docs/examples/US02-get-record-by-id.py
docs/examples/US03-list-assets-assigned-to-user.py
docs/examples/US04-list-hardware-by-status.py
docs/examples/US05-list-hardware-by-location.py
docs/examples/US06-list-hardware-by-category.py
docs/examples/US07-process-large-list-with-pagination.py
docs/examples/US08-combine-multiple-filters.py
docs/examples/US09-create-new-hardware.py
docs/examples/US10-assign-custom-field-value.py
docs/examples/US11-create-prerequisites-for-hardware.py
docs/examples/US12-bulk-import-assets-from-csv.py
docs/examples/US13-update-single-field.py
docs/examples/US14-bulk-status-update.py
docs/examples/US15-full-record-replacement.py
docs/examples/US16-assign-hardware-to-user.py
docs/examples/US17-return-hardware.py
docs/examples/US18-find-and-assign-deployable-hardware.py
docs/examples/US19-assign-and-release-license-seat.py
docs/examples/US20-record-deletion-soft-delete.py
docs/examples/US21-restore-soft-deleted-record.py
docs/examples/US22-find-expiring-licenses.py
docs/examples/US23-find-assets-with-overdue-audits.py
docs/examples/US24-fetch-list-sources-for-dropdowns.py
docs/examples/US25-query-activity-log.py
docs/examples/US26-assign-and-release-accessory.py
docs/examples/US27-component-checkout-and-checkin.py
docs/examples/US28-consumable-checkout.py
docs/examples/US29-create-new-user.py
docs/examples/US30-update-user-information.py
docs/examples/US31-department-based-inventory-report.py
docs/examples/US32-upload-file-to-asset.py
docs/examples/US33-download-and-delete-asset-files.py
docs/examples/US34-create-maintenance-record.py
docs/examples/US35-asset-maintenance-history.py
docs/examples/US36-hardware-refresh.py
docs/examples/US37-staff-transfer.py
docs/examples/US38-prepare-asset-inventory-form.py
docs/examples/US39-handle-auth-errors.py
docs/examples/US40-connection-error-handling-and-retry.py
docs/examples/US41-partial-error-handling-in-bulk-ops.py
docs/examples/US42-missing-data-detection.py
docs/examples/US43-detect-duplicate-serial-numbers.py
docs/examples/US44-detect-orphaned-deployments.py
docs/examples/US45-inventory-reconciliation.py
docs/examples/US46-inventory-report-by-manufacturer.py
docs/examples/US47-asset-age-distribution.py
docs/examples/US48-track-expiring-warranties.py
docs/examples/US49-free-text-search.py
docs/examples/US50-search-by-model-number.py
docs/examples/US51-search-by-custom-field-value.py
docs/examples/US52-search-by-order-number-and-supplier.py
docs/examples/US53-multi-source-search.py
docs/examples/US54-user-search.py
docs/examples/US55-date-range-search.py
docs/examples/US56-supplier-records-and-assets.py
docs/examples/US57-fix-mislocated-devices.py
docs/examples/US58-multi-dimensional-query.py
docs/examples/US59-inventory-gap-analysis.py
docs/examples/US61-depreciation-report.py
docs/examples/US64-cleanup-after-device-replacement.py
docs/examples/US65-barcode-and-label-generation.py
docs/examples/US66-custom-field-and-fieldset-management.py
docs/examples/US67-hardware-model-management.py
docs/examples/US68-status-label-management.py
docs/examples/US69-category-management.py
docs/examples/US70-location-management.py
docs/examples/US71-company-management.py
docs/examples/US72-manufacturer-management.py
docs/examples/US73-department-management.py
docs/examples/US74-audit-queue-management.py
docs/examples/US74-high-level-checkout-methods.py
docs/examples/US75-audit-trend-analysis.py
docs/examples/US76-bulk-delete-assets.py
docs/examples/US77-bulk-checkout-to-user.py
docs/examples/US78-bulk-checkout-to-location.py
docs/examples/US79-bulk-checkout-and-checkin-lifecycle.py
docs/examples/US80-clone-hardware.py
docs/examples/bulk_import.py
docs/examples/department_inventory.py
docs/examples/duplicate_serials.py
docs/examples/expiring_licenses.py
docs/examples/hardware_refresh.py
docs/examples/mcp_server.py
docs/fixes/0001-asset-assigned-to-accepts-integer.md
docs/fixes/0002-asset-maintenance-create-sends-title-not-name.md
docs/fixes/0003-accessories-checkout-wrong-field-name.md
docs/fixes/0004-restore-returns-string-not-model.md
docs/fixes/0005-assets-checkout-returns-partial-response.md
docs/fixes/0006-component-consumable-checkout-returns-none.md
docs/fixes/0007-get-by-serial-list-envelope.md
docs/fixes/0008-components-list-assets-pivot-fields.md
docs/fixes/0009-fieldset-delete-fails-field-in-use.md
docs/fixes/0010-list-audit-due-wrong-endpoint.md
docs/fixes/0011-delete-file-missing-delete-suffix.md
docs/fixes/0012-accessories-clone-endpoint-removed.md
docs/fixes/0013-asset-models-restore-endpoint-removed.md
docs/fixes/0014-locations-list-users-endpoint-removed.md
docs/fixes/0015-custom-fields-create-sends-invalid-field-type.md
docs/fixes/0016-maintenance-update-partial-test-uses-title.md
docs/fixes/0017-users-list-missing-filter-params.md
docs/fixes/0018-licenses-list-missing-filter-params.md
docs/fixes/0019-html-entities-not-decoded-in-api-responses.md
docs/fixes/0020-checkout-returns-500-when-mail-is-misconfigured.md
docs/fixes/0022-asset-maintenance-create-requires-maintenance-type-id.md
docs/fixes/0023-license-seat-assigned-to-field.md
docs/fixes/0024-asset-create-omits-name-field.md
docs/fixes/0025-clone-purchase-cost-float-type.md
docs/fixes/NNNN-format-lint-errors.md
docs/fixes/README.md
docs/snipeit-api/README.md
docs/snipeit-api/accessories.md
docs/snipeit-api/api-table.md
docs/snipeit-api/assets.md
docs/snipeit-api/categories.md
docs/snipeit-api/companies.md
docs/snipeit-api/components.md
docs/snipeit-api/consumables.md
docs/snipeit-api/custom-fields.md
docs/snipeit-api/departments.md
docs/snipeit-api/fieldsets.md
docs/snipeit-api/file-uploads.md
docs/snipeit-api/groups.md
docs/snipeit-api/licenses.md
docs/snipeit-api/locations.md
docs/snipeit-api/maintenances.md
docs/snipeit-api/manufacturers.md
docs/snipeit-api/models.md
docs/snipeit-api/reports.md
docs/snipeit-api/settings.md
docs/snipeit-api/status-labels.md
docs/snipeit-api/suppliers.md
docs/snipeit-api/users.md
docs/snipeit-api-web-docs/api-web-doc-index.md
docs/snipeit-api-web-docs/api-web-sources.md
docs/snipeit-api-web-docs/accessories/accessories-1.md
docs/snipeit-api-web-docs/accessories/accessories-checkin.md
docs/snipeit-api-web-docs/accessories/accessories-checkout.md
docs/snipeit-api-web-docs/accessories/accessories.md
docs/snipeit-api-web-docs/accessories/accessoriesid-1.md
docs/snipeit-api-web-docs/accessories/accessoriesid-2.md
docs/snipeit-api-web-docs/accessories/accessoriesid-3.md
docs/snipeit-api-web-docs/accessories/accessoriesid.md
docs/snipeit-api-web-docs/accessories/accessoriesidcheckedout.md
docs/snipeit-api-web-docs/asset_maintenances/maintenances-1.md
docs/snipeit-api-web-docs/asset_maintenances/maintenances-copy-1.md
docs/snipeit-api-web-docs/asset_maintenances/maintenances-copy.md
docs/snipeit-api-web-docs/asset_maintenances/maintenances.md
docs/snipeit-api-web-docs/asset_maintenances/maintenancesid.md
docs/snipeit-api-web-docs/assets/hardware-audit-by-id.md
docs/snipeit-api-web-docs/assets/hardware-by-asset-tag.md
docs/snipeit-api-web-docs/assets/hardware-by-id.md
docs/snipeit-api-web-docs/assets/hardware-by-serial.md
docs/snipeit-api-web-docs/assets/hardware-checkin.md
docs/snipeit-api-web-docs/assets/hardware-checkout.md
docs/snipeit-api-web-docs/assets/hardware-create.md
docs/snipeit-api-web-docs/assets/hardware-delete.md
docs/snipeit-api-web-docs/assets/hardware-files-delete.md
docs/snipeit-api-web-docs/assets/hardware-list-files.md
docs/snipeit-api-web-docs/assets/hardware-list.md
docs/snipeit-api-web-docs/assets/hardware-partial-update.md
docs/snipeit-api-web-docs/assets/hardware-update.md
docs/snipeit-api-web-docs/assets/hardware-upload-files.md
docs/snipeit-api-web-docs/assets/hardwareaudit.md
docs/snipeit-api-web-docs/assets/hardwareauditdue.md
docs/snipeit-api-web-docs/assets/hardwareauditoverdue.md
docs/snipeit-api-web-docs/assets/hardwareidfilesfile_id.md
docs/snipeit-api-web-docs/assets/hardwareidlicenses.md
docs/snipeit-api-web-docs/assets/hardwareidrestore.md
docs/snipeit-api-web-docs/assets/hardwarelabels.md
docs/snipeit-api-web-docs/assets/updating-custom-fields.md
docs/snipeit-api-web-docs/assets/uploading-files.md
docs/snipeit-api-web-docs/categories/categories-1.md
docs/snipeit-api-web-docs/categories/categories-2.md
docs/snipeit-api-web-docs/categories/categoriesid-1.md
docs/snipeit-api-web-docs/categories/categoriesid-2.md
docs/snipeit-api-web-docs/categories/categoriesid-3.md
docs/snipeit-api-web-docs/categories/categoriesid.md
docs/snipeit-api-web-docs/companies/companies-1.md
docs/snipeit-api-web-docs/companies/companies.md
docs/snipeit-api-web-docs/companies/companiesid-1.md
docs/snipeit-api-web-docs/companies/companiesid-2.md
docs/snipeit-api-web-docs/companies/companiesid-3.md
docs/snipeit-api-web-docs/companies/companiesid.md
docs/snipeit-api-web-docs/components/components-1.md
docs/snipeit-api-web-docs/components/components.md
docs/snipeit-api-web-docs/components/componentsid-1.md
docs/snipeit-api-web-docs/components/componentsid-2.md
docs/snipeit-api-web-docs/components/componentsid-3.md
docs/snipeit-api-web-docs/components/componentsid.md
docs/snipeit-api-web-docs/components/componentsidassets.md
docs/snipeit-api-web-docs/components/componentsidcheckin.md
docs/snipeit-api-web-docs/components/componentsidcheckout.md
docs/snipeit-api-web-docs/consumables/consumables-1.md
docs/snipeit-api-web-docs/consumables/consumables-2.md
docs/snipeit-api-web-docs/consumables/consumables.md
docs/snipeit-api-web-docs/consumables/consumablesid-1.md
docs/snipeit-api-web-docs/consumables/consumablesid-2.md
docs/snipeit-api-web-docs/consumables/consumablesid.md
docs/snipeit-api-web-docs/consumables/consumablesidcheckout.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fields-1.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fields-2.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fields.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsets.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsid-1.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsid-2.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsid.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsetsidfields.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsid-1.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsid-2.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsid.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsidassociate.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/fieldsiddisassociate.md
docs/snipeit-api-web-docs/custom_fields__fieldsets/update-fields.md
docs/snipeit-api-web-docs/departments/departments-1.md
docs/snipeit-api-web-docs/departments/departments-edit.md
docs/snipeit-api-web-docs/departments/departments.md
docs/snipeit-api-web-docs/departments/departmentsid-1.md
docs/snipeit-api-web-docs/departments/departmentsid-2.md
docs/snipeit-api-web-docs/departments/departmentsid.md
docs/snipeit-api-web-docs/groups/groups-1.md
docs/snipeit-api-web-docs/groups/groupsid-1.md
docs/snipeit-api-web-docs/groups/groupsid-2.md
docs/snipeit-api-web-docs/groups/groupsid-3.md
docs/snipeit-api-web-docs/groups/groupsid-4.md
docs/snipeit-api-web-docs/groups/groupsid.md
docs/snipeit-api-web-docs/licenses/license-seats-checkin-checkout-patch.md
docs/snipeit-api-web-docs/licenses/license-seats-checkin-checkout-put.md
docs/snipeit-api-web-docs/licenses/licenses.md
docs/snipeit-api-web-docs/licenses/licensesid-1.md
docs/snipeit-api-web-docs/licenses/licensesid-2.md
docs/snipeit-api-web-docs/licenses/licensesid-3.md
docs/snipeit-api-web-docs/licenses/licensesid.md
docs/snipeit-api-web-docs/licenses/licensesidseats.md
docs/snipeit-api-web-docs/licenses/licensesidseatsseat_id-2.md
docs/snipeit-api-web-docs/licenses/licensesidseatsseat_id.md
docs/snipeit-api-web-docs/licenses/testinput.md
docs/snipeit-api-web-docs/locations/locations-1.md
docs/snipeit-api-web-docs/locations/locations-2.md
docs/snipeit-api-web-docs/locations/locations-3.md
docs/snipeit-api-web-docs/locations/locations.md
docs/snipeit-api-web-docs/locations/locationsid-2.md
docs/snipeit-api-web-docs/locations/locationsid.md
docs/snipeit-api-web-docs/manufacturers/manufacturers-1.md
docs/snipeit-api-web-docs/manufacturers/manufacturers.md
docs/snipeit-api-web-docs/manufacturers/manufacturersid-1.md
docs/snipeit-api-web-docs/manufacturers/manufacturersid-2.md
docs/snipeit-api-web-docs/manufacturers/manufacturersid-3.md
docs/snipeit-api-web-docs/manufacturers/manufacturersid.md
docs/snipeit-api-web-docs/misc/version.md
docs/snipeit-api-web-docs/models/models-1.md
docs/snipeit-api-web-docs/models/models.md
docs/snipeit-api-web-docs/models/modelsid-1.md
docs/snipeit-api-web-docs/models/modelsid-2.md
docs/snipeit-api-web-docs/models/modelsid-3.md
docs/snipeit-api-web-docs/models/modelsid.md
docs/snipeit-api-web-docs/models/uploading-model-files.md
docs/snipeit-api-web-docs/reports/reportsactivity.md
docs/snipeit-api-web-docs/settings/backups-1.md
docs/snipeit-api-web-docs/settings/backupsdownloadfile.md
docs/snipeit-api-web-docs/status_labels/statuslabels-1.md
docs/snipeit-api-web-docs/status_labels/statuslabels.md
docs/snipeit-api-web-docs/status_labels/statuslabelsid-1.md
docs/snipeit-api-web-docs/status_labels/statuslabelsid-2.md
docs/snipeit-api-web-docs/status_labels/statuslabelsid-3.md
docs/snipeit-api-web-docs/status_labels/statuslabelsid.md
docs/snipeit-api-web-docs/status_labels/statuslabelsidassetlist.md
docs/snipeit-api-web-docs/suppliers/suppliers.md
docs/snipeit-api-web-docs/suppliers/suppliersid.md
docs/snipeit-api-web-docs/users/users-2.md
docs/snipeit-api-web-docs/users/users-3.md
docs/snipeit-api-web-docs/users/users-restore.md
docs/snipeit-api-web-docs/users/users.md
docs/snipeit-api-web-docs/users/usersid-1.md
docs/snipeit-api-web-docs/users/usersid-2.md
docs/snipeit-api-web-docs/users/usersid.md
docs/snipeit-api-web-docs/users/usersidaccessories.md
docs/snipeit-api-web-docs/users/usersidassets.md
docs/snipeit-api-web-docs/users/usersideulas.md
docs/snipeit-api-web-docs/users/usersidlicenses.md
docs/snipeit-api-web-docs/users/usersme.md
scripts/dev/copy_test_token.sh
scripts/dev/down_all_instances.sh
scripts/dev/down_demo_instance.sh
scripts/dev/up_all_instances.sh
scripts/dev/up_demo_instance.sh
skills/snipepy-onboarding/SKILL.md
src/snipepy/__init__.py
src/snipepy/_config.py
src/snipepy/_constants.py
src/snipepy/_http_client.py
src/snipepy/_whitelist.py
src/snipepy/py.typed
src/snipepy/snipepy.py
src/snipepy.egg-info/PKG-INFO
src/snipepy.egg-info/SOURCES.txt
src/snipepy.egg-info/dependency_links.txt
src/snipepy.egg-info/requires.txt
src/snipepy.egg-info/scm_file_list.json
src/snipepy.egg-info/scm_version.json
src/snipepy.egg-info/top_level.txt
src/snipepy/models/__init__.py
src/snipepy/models/_shared.py
src/snipepy/models/accessories.py
src/snipepy/models/asset_maintenances.py
src/snipepy/models/asset_models.py
src/snipepy/models/assets.py
src/snipepy/models/categories.py
src/snipepy/models/companies.py
src/snipepy/models/components.py
src/snipepy/models/consumables.py
src/snipepy/models/custom_fields.py
src/snipepy/models/departments.py
src/snipepy/models/groups.py
src/snipepy/models/licenses.py
src/snipepy/models/locations.py
src/snipepy/models/manufacturers.py
src/snipepy/models/reports.py
src/snipepy/models/settings.py
src/snipepy/models/status_labels.py
src/snipepy/models/suppliers.py
src/snipepy/models/users.py
src/snipepy/services/__init__.py
src/snipepy/services/_pagination.py
src/snipepy/services/accessories.py
src/snipepy/services/asset_maintenances.py
src/snipepy/services/asset_models.py
src/snipepy/services/assets.py
src/snipepy/services/categories.py
src/snipepy/services/companies.py
src/snipepy/services/components.py
src/snipepy/services/consumables.py
src/snipepy/services/custom_fields.py
src/snipepy/services/departments.py
src/snipepy/services/groups.py
src/snipepy/services/licenses.py
src/snipepy/services/locations.py
src/snipepy/services/manufacturers.py
src/snipepy/services/reports.py
src/snipepy/services/settings.py
src/snipepy/services/status_labels.py
src/snipepy/services/suppliers.py
src/snipepy/services/users.py
tests/__init__.py
tests/conftest.py
tests/docker/test/readme.md
tests/docker/test/latest/docker-compose.yaml
tests/docker/test/latest/setup.sh
tests/docker/test/v4.8.0/docker-compose.yaml
tests/docker/test/v4.8.0/setup.sh
tests/docker/test/v8.0.0/docker-compose.yaml
tests/docker/test/v8.0.0/setup.sh
tests/docker/test/v8.1.4/docker-compose.yaml
tests/docker/test/v8.1.4/setup.sh
tests/docker/test/v8.2.0/docker-compose.yaml
tests/docker/test/v8.2.0/setup.sh
tests/docker/test/v8.2.1/docker-compose.yaml
tests/docker/test/v8.2.1/setup.sh
tests/docker/test/v8.3.0/docker-compose.yaml
tests/docker/test/v8.3.0/setup.sh
tests/docker/test/v8.3.5/docker-compose.yaml
tests/docker/test/v8.3.5/setup.sh
tests/docker/test/v8.3.6/docker-compose.yaml
tests/docker/test/v8.3.6/setup.sh
tests/docker/test/v8.3.7/docker-compose.yaml
tests/docker/test/v8.3.7/setup.sh
tests/docker/test/v8.4.0/docker-compose.yaml
tests/docker/test/v8.4.0/setup.sh
tests/docker/test/v8.4.1/docker-compose.yaml
tests/docker/test/v8.4.1/setup.sh
tests/docker/test/v8.5.0/docker-compose.yaml
tests/docker/test/v8.5.0/setup.sh
tests/docker/test/v8.6.0/docker-compose.yaml
tests/docker/test/v8.6.0/setup.sh
tests/docker/test/v8.6.1/docker-compose.yaml
tests/docker/test/v8.6.1/setup.sh
tests/smoke/__init__.py
tests/smoke/conftest.py
tests/smoke/test_accessories.py
tests/smoke/test_asset_maintenances.py
tests/smoke/test_asset_models.py
tests/smoke/test_assets.py
tests/smoke/test_categories.py
tests/smoke/test_companies.py
tests/smoke/test_components.py
tests/smoke/test_consumables.py
tests/smoke/test_custom_fields.py
tests/smoke/test_departments.py
tests/smoke/test_groups.py
tests/smoke/test_licenses.py
tests/smoke/test_locations.py
tests/smoke/test_manufacturers.py
tests/smoke/test_model_fieldset_defaults.py
tests/smoke/test_reports.py
tests/smoke/test_settings.py
tests/smoke/test_status_labels.py
tests/smoke/test_suppliers.py
tests/smoke/test_us_detection.py
tests/smoke/test_us_error_handling.py
tests/smoke/test_us_files.py
tests/smoke/test_us_hardware_lifecycle.py
tests/smoke/test_us_hardware_read.py
tests/smoke/test_us_hardware_write.py
tests/smoke/test_us_license_scenarios.py
tests/smoke/test_us_maintenance_scenarios.py
tests/smoke/test_us_management.py
tests/smoke/test_us_peripherals.py
tests/smoke/test_us_report_scenarios.py
tests/smoke/test_us_search.py
tests/smoke/test_us_user_scenarios.py
tests/smoke/test_users.py
tests/unit/__init__.py
tests/unit/test_exceptions.py
tests/unit/test_public_api.py
tests/unit/test_snipepy.py
tests/unit/config/test_config.py
tests/unit/http_client/conftest.py
tests/unit/http_client/test_http_client_init.py
tests/unit/http_client/test_http_client_public_api.py
tests/unit/http_client/test_http_client_rate_limit.py
tests/unit/http_client/test_http_client_request.py
tests/unit/http_client/test_http_unescape.py
tests/unit/models/__init__.py
tests/unit/models/test_asset_models.py
tests/unit/models/test_assets.py
tests/unit/models/test_custom_fields.py
tests/unit/models/test_remaining_models.py
tests/unit/models/test_reports.py
tests/unit/models/test_shared.py
tests/unit/services/__init__.py
tests/unit/services/conftest.py
tests/unit/services/test_accessories_service.py
tests/unit/services/test_asset_maintenances_service.py
tests/unit/services/test_asset_models_service.py
tests/unit/services/test_assets_service.py
tests/unit/services/test_categories_service.py
tests/unit/services/test_companies_service.py
tests/unit/services/test_components_service.py
tests/unit/services/test_consumables_service.py
tests/unit/services/test_custom_fields_service.py
tests/unit/services/test_departments_service.py
tests/unit/services/test_groups_service.py
tests/unit/services/test_licenses_service.py
tests/unit/services/test_locations_service.py
tests/unit/services/test_manufacturers_service.py
tests/unit/services/test_pagination.py
tests/unit/services/test_reports_service.py
tests/unit/services/test_settings_service.py
tests/unit/services/test_status_labels_service.py
tests/unit/services/test_suppliers_service.py
tests/unit/services/test_users_service.py