fleetbase/core-api
Core API package for Fleetbase, the open-source logistics and fleet management platform. It provides the REST API foundation—routes, controllers, resources, authentication, and extension points—for building dispatch, tracking, and fleet operations services on Laravel.
fleetbase/core-api ^1.6.71. Both 1.6.70 and 1.6.71 are additive patch-level bumps — no upgrade steps beyond bumping the constraint. If you run fleetbase/storefront v0.4.25, ^1.6.70 is a hard requirement for its phone change endpoint; 1.6.71 satisfies it.php artisan cache:clear on deploy (your deploy.sh already does). Cache keys changed shape in 1.6.71, so stale entries from before the bump will simply expire within their TTL (5 min lists, 1 hour models) but clearing is cleaner.VerificationCode::generateSmsVerificationFor() — creates/saves the code, hands it to the SMS guard, and the guard does the send, counting, and tracing.GET/POST int/v1/settings/socket (read/save) and signed GET int/v1/socket/config (what the socket server polls).generateSmsVerificationFor($subject, ['phone' => $newNumber]) so the code goes to the number being verified rather than the one on file.fleetbase/fleetbase v0.7.70 or newer, then start moving socket auth config out of env and into the console settings.Default verification behaviour (unchanged): omit the option and the code is texted to the subject's own phone. Keep this for login, signup confirmation, and any flow where the number on file is the number being proven.
Phone change flow: pass the destination explicitly.
$code = VerificationCode::generateSmsVerificationFor($customer, [
'phone' => $request->input('phone'),
]);
The code is texted to that number, and the SMS guard counts and traces the send against it — not against the subject's stored phone. That matters for rate limiting and audit trails: the trace reflects the number that actually received the message.
Customer with no number on file: the case 1.6.70 fixed. Previously the request reported success while nothing was sent. With phone, the code goes to the supplied number. Use for onboarding flows where the first number is being captured rather than replaced.
Post-verification persistence: the option only affects delivery and accounting. Persisting the new number onto the subject is your code's job, after the code checks out. Treat generate → verify → persist as three distinct steps.
Socket settings from the console: administrators manage the switch, mode (off, log, enforce), token TTL, allowed origins, and publisher origin via POST int/v1/settings/socket. Each value falls back to the environment when unset — nothing changes until someone saves. Your socket server polls the signed GET int/v1/socket/config and applies changes at runtime (no restart). SOCKETCLUSTER_AUTH_KEY stays in env, is never stored or returned, and enabling the switch without a key is refused.
Category trees: the internal Category resource now includes parent_uuid, so a console can build a tree from a flat list (e.g. Storefront's nested product categories) without a second round trip.
Event subscriptions: driver-assigned order events now publish on driver.{public_id} and driver.{uuid} as well as driverAssigned.*. Subscribe to the {type}.{id} channels — that's the convention clients follow, and driverAssigned.* is now deprecated.
Cache isolation: list/model/relationship cache keys now carry the connection ({api_query}:mysql:… / {api_query}:sandbox:…). Live and test-mode responses are kept apart automatically. No action needed unless you've written custom caching keyed on the raw api_query string.
Storefront integration: if you're wiring the phone change endpoint through fleetbase/storefront v0.4.25, the ^1.6.70 constraint is already declared — just don't hold core-api back with a tighter pin elsewhere in the dependency graph.
phone option, a subject with no phone still gets a saved code and no text, and the call can still look successful. Anywhere you generate a code for a number the subject doesn't own yet, pass phone explicitly.phone is a delivery target, not an assignment. Passing it does not attach the number to the subject. Skip the persistence step and the code is valid but the account never changes.phone. No trace at all → the flow short-circuited before the guard.driverAssigned.* is deprecated but still published. Existing listeners won't break, but migrate to driver.{public_id} / driver.{uuid} now — that's where the {type}.{id} convention clients actually subscribe.Find::httpFilterForModel() previously cached the filter per model class for the life of the process, so the first controller to list a model decided the filter for every other app (the reported symptom: a network's orders page listing every order in the company). The cache is now keyed by the model's own filter and request class. If you were seeing cross-app filter leakage, confirm you're on 1.6.71 and your controller's $filter is actually set.fleetbase/fleetbase v0.7.70) keeps reading its own environment and ignores console-saved settings entirely — no error, just no effect.parent_uuid is on the internal resource only. Don't expect it on public API Category responses.How can I help you explore Laravel packages today?