Curl PATCH locations problem

Hi

WhenI have this:

curl -X PATCH -d ‘{“lat”:“52.813258”,“lng”:“4.990110”}’ -H ‘X-Auth-Token:’ --insecure https://localhost/api/v0/locations/mdmr-wp1

It gives me a server error.

With APP_DEBUG=true I get this:

{
“message”: “Spatie\LaravelIgnition\Recorders\QueryRecorder\Query::__construct(): Argument #4 ($bindings) must be of type ?array, string given, called in /data/librenms/vendor/spatie/laravel-ignition/src/Recorders/QueryRecorder/Query.php on line 22”,
“exception”: “TypeError”,
“file”: “/data/librenms/vendor/spatie/laravel-ignition/src/Recorders/QueryRecorder/Query.php”,
“line”: 38,
“trace”: [
{
“file”: “/data/librenms/vendor/spatie/laravel-ignition/src/Recorders/QueryRecorder/Query.php”,
“line”: 22,
“function”: “__construct”,
“class”: “Spatie\LaravelIgnition\Recorders\QueryRecorder\Query”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/spatie/laravel-ignition/src/Recorders/QueryRecorder/QueryRecorder.php”,
“line”: 39,
“function”: “fromQueryExecutedEvent”,
“class”: “Spatie\LaravelIgnition\Recorders\QueryRecorder\Query”,
“type”: “::”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php”,
“line”: 488,
“function”: “record”,
“class”: “Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php”,
“line”: 315,
“function”: “Illuminate\Events\{closure}”,
“class”: “Illuminate\Events\Dispatcher”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php”,
“line”: 295,
“function”: “invokeListeners”,
“class”: “Illuminate\Events\Dispatcher”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php”,
“line”: 363,
“function”: “dispatch”,
“class”: “Illuminate\Events\Dispatcher”,
“type”: “->”
},
{
“file”: “/data/librenms/includes/dbFacile.php”,
“line”: 270,
“function”: “__callStatic”,
“class”: “Illuminate\Support\Facades\Facade”,
“type”: “::”
},
{
“file”: “/data/librenms/includes/html/api_functions.inc.php”,
“line”: 3412,
“function”: “dbFetchCell”
},
{
“file”: “/data/librenms/includes/html/api_functions.inc.php”,
“line”: 3383,
“function”: “get_location_id_by_name”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php”,
“line”: 36,
“function”: “edit_location”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Container/Util.php”,
“line”: 43,
“function”: “Illuminate\Container\{closure}”,
“class”: “Illuminate\Container\BoundMethod”,
“type”: “::”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php”,
“line”: 84,
“function”: “unwrapIfClosure”,
“class”: “Illuminate\Container\Util”,
“type”: “::”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php”,
“line”: 35,
“function”: “callBoundMethod”,
“class”: “Illuminate\Container\BoundMethod”,
“type”: “::”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Container/Container.php”,
“line”: 799,
“function”: “call”,
“class”: “Illuminate\Container\BoundMethod”,
“type”: “::”
},
{
“file”: “/data/librenms/app/Api/Controllers/LegacyApiController.php”,
“line”: 44,
“function”: “call”,
“class”: “Illuminate\Container\Container”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php”,
“line”: 46,
“function”: “__call”,
“class”: “App\Api\Controllers\LegacyApiController”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Route.php”,
“line”: 265,
“function”: “dispatch”,
“class”: “Illuminate\Routing\ControllerDispatcher”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Route.php”,
“line”: 211,
“function”: “runController”,
“class”: “Illuminate\Routing\Route”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Router.php”,
“line”: 822,
“function”: “run”,
“class”: “Illuminate\Routing\Route”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 180,
“function”: “Illuminate\Routing\{closure}”,
“class”: “Illuminate\Routing\Router”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php”,
“line”: 59,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Auth\Middleware\Authorize”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php”,
“line”: 50,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Routing\Middleware\SubstituteBindings”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php”,
“line”: 63,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Auth\Middleware\Authenticate”,
“type”: “->”
},
{
“file”: “/data/librenms/app/Http/Middleware/EnforceJson.php”,
“line”: 45,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “App\Http\Middleware\EnforceJson”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 137,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Router.php”,
“line”: 821,
“function”: “then”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Router.php”,
“line”: 800,
“function”: “runRouteWithinStack”,
“class”: “Illuminate\Routing\Router”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Router.php”,
“line”: 764,
“function”: “runRoute”,
“class”: “Illuminate\Routing\Router”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Routing/Router.php”,
“line”: 753,
“function”: “dispatchToRoute”,
“class”: “Illuminate\Routing\Router”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php”,
“line”: 200,
“function”: “dispatch”,
“class”: “Illuminate\Routing\Router”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 180,
“function”: “Illuminate\Foundation\Http\{closure}”,
“class”: “Illuminate\Foundation\Http\Kernel”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php”,
“line”: 21,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php”,
“line”: 31,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Middleware\TransformsRequest”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php”,
“line”: 21,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php”,
“line”: 51,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Middleware\TransformsRequest”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Middleware\TrimStrings”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php”,
“line”: 27,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Http\Middleware\ValidatePostSize”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php”,
“line”: 109,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php”,
“line”: 74,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Http\Middleware\HandleCors”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php”,
“line”: 58,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Http\Middleware\TrustProxies”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php”,
“line”: 22,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php”,
“line”: 26,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 219,
“function”: “handle”,
“class”: “Illuminate\Http\Middleware\ValidatePathEncoding”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php”,
“line”: 137,
“function”: “Illuminate\Pipeline\{closure}”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php”,
“line”: 175,
“function”: “then”,
“class”: “Illuminate\Pipeline\Pipeline”,
“type”: “->”
},
{
“file”: “/data/librenms/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php”,
“line”: 144,
“function”: “sendRequestThroughRouter”,
“class”: “Illuminate\Foundation\Http\Kernel”,
“type”: “->”
},
{
“file”: “/data/librenms/html/index.php”,
“line”: 51,
“function”: “handle”,
“class”: “Illuminate\Foundation\Http\Kernel”,
“type”: “->”
}
]

It did work in the past. Is this a new bug? I cannot find something similar.

Thanks.

./validate.php

Component Version
LibreNMS 26.2.0 (2026-02-16T13:13:17+01:00)
DB Schema 2026_02_13_000000_change_stp_top_changes_to_unsigned_int (365)
PHP 8.2.26
Python 3.9.2
Database MariaDB 10.5.19-MariaDB-0+deb11u2
RRDTool 1.7.2
SNMP 5.9
===========================================

[OK] Composer Version: 2.9.5
[OK] Dependencies up-to-date.
[OK] Database Connected
[OK] Database Schema is current
[OK] SQL Server meets minimum requirements
[OK] lower_case_table_names is enabled
[OK] MySQL engine is optimal
[OK] Database and column collations are correct
[OK] Database schema correct
[OK] MySQL and PHP time match
[OK] Distributed Polling setting is enabled globally
[OK] Connected to rrdcached
[OK] Active pollers found
[OK] Dispatcher Service is enabled
[OK] Locks are functional
[OK] Python wrapper cron entry is not present
[OK] Redis is functional
[WARN] IPv6 is disabled on your server, you will not be able to add IPv6 devices.
[INFO] Checking RRD files took too long, check skipped. You can run lnms maintenance:rrd-step all to check and fix all rrd files.
[OK] rrdtool version ok
[OK] Connected to rrdcached