v8.1.15
grokability/snipe-itv8.1.15Jun 2, 2025by snipe
AI Summary
This release focuses on user experience improvements, particularly in the API and import functionality. It introduces new importers for manufacturers, suppliers, and categories, while enhancing API rate limit headers for better developer experience.
Key Highlights
- Added rate limit headers (X-RateLimit-*, Retry-After) to all API requests, not just error responses.
- Added importers for manufacturers, suppliers, and categories.
- Fixed asset expiration report to exclude archived assets.
- Fixed PHP 8.3 upload limit configuration.
New Features
- Importers for Manufacturers, Suppliers, and Categories
- Enhanced API Rate Limit Headers
Full Release Notes
> [!CAUTION] > **This version of Snipe-IT REQUIRES PHP 8.2.0 or greater.** Happy Monday everyone! This release offers some UX fixes, some API enhancements for consistency, and three new classes of things you can use the importer for: manufacturers, suppliers, and categories. See what's on deck for the next release here: https://github.com/grokability/snipe-it/milestone/26. ### Important API header change: In order to to make it easier for you folks to build all the great stuff you do with the Snipe-IT REST API, we've added a few additional headers on API requests. Now every API request will return the following headers *regardless* of whether you've hit your API limit and are now returning a `429` response: | Header | Value | | ------------- | ------------- | | `X-RateLimit-Limit` | The rate limit defined in your `.env` for `API_THROTTLE_PER_MINUTE`| | `X-RateLimit-Reset` | The reset in seconds | | `X-RateLimit-Remaining` | The remaining requests within the `X-RateLimit-Reset` | | `X-RateLimit-Reset-Timestamp` | The epoch timestamp for when the rate limit will reset | | `Retry-After` | The reset in seconds, same as `X-RateLimit-Reset` | Previous versions of the API would only return some of these headers if you were getting a `429 - too many requests` response. For example: <img width="479" alt="Screenshot 2025-06-02 at 6 30 02 PM" src="https://github.com/user-attachments/assets/2369ac09-c3c8-4eb8-abd4-47fad41ec6d2" /> ## What's Changed * Fixed #16958 - exclude archived assets from expiring assets report by @snipe in https://github.com/grokability/snipe-it/pull/16982 * Moved faker out of dev reqs for seeding by @snipe in https://github.com/grokability/snipe-it/pull/16985 * Fixed: `PHP_UPLOAD_LIMIT` not set for PHP 8.3 by @Tinyblargon in https://github.com/grokability/snipe-it/pull/16993 * Better messaging when an asset fails validation on quick scan by @snipe in https://github.com/grokability/snipe-it/pull/16999 * Ensure boolean returned from method with boolean return type by @marcusmoore in https://github.com/grokability/snipe-it/pull/17007 * Fixed #16961 - Manually add API headers by @snipe in https://github.com/grokability/snipe-it/pull/16986 * Removed `Blade::render` from breadcrumbs by @snipe in https://github.com/grokability/snipe-it/pull/17014 * API Locations - added `company_id` for API request by @Robert-Azelis in https://github.com/grokability/snipe-it/pull/17012 * Updated translations by @snipe in https://github.com/grokability/snipe-it/pull/17017 * Fixed column persistence on User's Self View of Assigned Assets by @akemidx in https://github.com/grokability/snipe-it/pull/17020 * Avoid dividing by zero in DefaultLabel by @marcusmoore in https://github.com/grokability/snipe-it/pull/17022 * Fixed translation strings in Username/Email formats by @akemidx in https://github.com/grokability/snipe-it/pull/17027 * Reference correct translation string by @marcusmoore in https://github.com/grokability/snipe-it/pull/17026 * Added `created_at` date picker on Custom Reports by @akemidx in https://github.com/grokability/snipe-it/pull/17024 * Fixed clear button not actually clearing dates on date picker by @akemidx in https://github.com/grokability/snipe-it/pull/17025 * Replace `two_factor_options` macro by @marcusmoore in https://github.com/grokability/snipe-it/pull/17010 * Replace `skin` and `user_skin` macros with blade component by @marcusmoore in https://github.com/grokability/snipe-it/pull/17009 * Fixed #17034 - larger header color box on small views by @snipe in https://github.com/grokability/snipe-it/pull/17035 * Added #17036 - suppliers importer by @snipe in https://github.com/grokability/snipe-it/pull/17037 * Avoid displaying empty table in `SendAcceptanceReminder` command by @marcusmoore in https://github.com/grokability/snipe-it/pull/17040 * Small refinements for suppliers and locations API and list view by @snipe in https://github.com/grokability/snipe-it/pull/17041 * Docker: Ensure permissions on Laravel log file by @jerm in https://github.com/grokability/snipe-it/pull/17045 * Handle missing location when rendering labels by @marcusmoore in https://github.com/grokability/snipe-it/pull/17044 * Added manufacturer importer by @snipe in https://github.com/grokability/snipe-it/pull/17061 * Replace customfield_elements form macro take two by @marcusmoore in https://github.com/grokability/snipe-it/pull/17042 * Added category importer by @snipe in https://github.com/grokability/snipe-it/pull/17062 * Fixed #15320 - added status label to bulk checkout by @snipe in https://github.com/grokability/snipe-it/pull/17019 * API Models - added `requestable` filter for API request by @Robert-Azelis in https://github.com/grokability/snipe-it/pull/17013 * More robust php.ini update. by @amedranogil in https://github.com/grokability/snipe-it/pull/17038 * Fix to rate-limiter on higher rate-limits by @uberbrady in https://github.com/grokability/snipe-it/pull/17074 ## New Contributors * @Tinyblargon made their first contribution in https://github.com/grokability/snipe-it/pull/16993 * @amedranogil made their first contribution in https://github.com/grokability/snipe-it/pull/17038 ### Join the Community! - **[Join our Discord](https://discord.gg/yZFtShAcKk)!** It’s full of great people. We even wrote about it [here](https://grokstar.dev/culture/2024/06/the-unlikely-rise-of-discord-as-a-support-channel/)! - **Follow us on Bluesky** at [@snipeitapp.com](https://bsky.app/profile/snipeitapp.com) - **Follow us on Mastodon** at [hachyderm.io/@grokability](https://hachyderm.io/@grokability) - **Follow our blog** at [Grokstar.Dev](https://grokstar.dev) - **Subscribe here** on Github for notifications about new releases. (We recommend selecting "Releases" only for most users - this repo can get noisy.) **Full Changelog**: https://github.com/grokability/snipe-it/compare/v8.1.4...v8.1.15