Changelog

Enterprise API

v6.3.5

Latest
10/9/2026

Patch Changes

  • - The API now serves requests when the license, licensetoggle or licenselimit table is missing.
  • At startup, the API logs an error if the license tables are missing on a schema whose f_database_version() is 4300 or higher, and warnings below 4300.
10/9/2026

Patch Changes

  • - InventoryOption.choices - An option's dynamic choice query now runs once per request, not once per option value or serial (EEW-678).
  • Inventory.serials - Filtering by status evaluates f_serial_status once per serial instead of twice (EEW-678).
  • Fix a bug preventing logging to be set at the desired level.
9/28/2026

Patch Changes

  • - Fixed "Illegal mix of collations" errors, such as in the part screen's serial search, by matching each new database connection's collation to its utf8mb4 database (EEW-682).
  • - Fixed refreshed OAuth access tokens losing the scope the user granted, which made MCP clients such as the ITrack Enterprise connector fail with SCOPE_ERROR after their first token refresh (EEW-688).
9/23/2026

Patch Changes

  • - Security: updateInventorySerial performed no permission check at all, so any authenticated session could renumber or relocate a serial at any store (EEW-675). It now requires "Can Save Parts" at the parent Inventory's store, checked before anything is changed.
  • Fixed updateInventorySerial failing with "Parent inventory not set" whenever location was supplied. The location is now looked up at the parent Inventory's store, so a real location with that name is used instead of falling back to a virtual one.
9/23/2026

Minor Changes

  • Added the ability to ignore the 'taxable' checkbox on Sales Orders when using the TaxJar integration using a setting.
  • Added the ability to skip Sales Order lines if the inventory type tax code is 'SKIP'.
  • Added additional license call sites.

Patch Changes

  • Changed InventoryFilter.vendorLeadTime from IntFilter to Decimal2Filter.
  • Fixed Inventory location changes being silently discarded (EEW-663). Location quantity changes now go through p_inventory_location_adjust_quantity, and a location's rank and permanence are saved alongside them. Location quantity changes on a non-depleting part (deplete = 'False') are still ignored, by design.
  • Fixed creating a permanent Inventory location at zero quantity not creating the location.
  • Fixed making an Inventory location permanent in the same update that set its quantity to zero deleting the location.
  • Fixed clearing an Inventory location's permanent flag while setting its quantity to zero leaving it in place as a permanent location.
  • Fixed updateInventory allowing a duplicate location when the new location was given by name rather than by id.
  • Fixed reordering an Inventory location landing it one position short of where it was moved to. Attachment reordering was affected by the same defect.
  • Fixed a rank-only or permanence-only Inventory location update failing with "Quantity must be a number!".
  • Fixed an explicit quantity: null on an Inventory location update zeroing the location instead of leaving it alone.
  • Fixed a new Inventory location with no rank being inserted at the front of the stocking list instead of appended to the end. This applied to updateInventory, to creating a part with several locations (which saved them in reverse order), and to the locations generated from a serialized part's serials.
  • Security: updateInventory resolved its Parts permissions against the session's store rather than the store of the Inventory being edited, so a user granted a permission at their own store could make that change to a part at a store where they were denied it. Permissions are now resolved at the Inventory's store. The same "Can Save Parts" check also runs when creating a part and when updating a vehicle's unit inventory, and both now check it at the Inventory's store too.
  • Security: createInventorySerial performed no permission check at all. It now requires "Can Save Parts" at the parent Inventory's store.
  • - createTaxTransaction now applies the same tax-code preparation as taxQuote. Previously a line flagged non-taxable was excluded from the quote but still included in the committed tax transaction, so the customer was billed tax the quote did not show.
  • The 'SKIP' tax code is now matched case-insensitively, the same way 'SHIP' and 'FEE' already were. An inventory type coded 'Skip' or 'skip' is now suppressed.
  • DS Tax now honours 'SKIP' as well. Previously the code was sent to DS Tax as a literal tax code, which it does not recognise.
  • BASE_CLIENT_URL and OAUTH_ISSUER now have any trailing slash stripped. A trailing slash previously produced an MCP resource of https://host//mcp against an expected https://host/mcp (rejected as invalid_audience) and a CORS_ORIGIN entry no Origin header could match.
9/16/2026
  • Fixed a build error
9/16/2026
  • Fixed a bug there Mutation.createTaxTransaction was still paying attention to the taxable flag when it was meant to ignore.
  • DSTax now also strips any lines with tax code 'SKIP'
  • Made the 'SKIP' special code caps-insensitive
9/15/2026
  • Added a setting to ignore the 'taxable' checkbox when quoting taxes.
  • Added ability to set an inventory type's tax code to 'SKIP' to suppress sending that line to TaxJar.
9/1/2026

Patch Changes

  • Optimized Manufacturer.models in order to avoid OOM errors caused by large data sets.
  • Changed Vendor.leadTime from Int to Decimal2.
9/1/2026
  • Further optimized Manufacturer.models in order to reduce load times.
Newer Older