diff -ur observium.orig.15323/html/pages/device/edit/unifi.inc.php observium/html/pages/device/edit/unifi.inc.php --- observium.orig.15323/html/pages/device/edit/unifi.inc.php 2026-10-12 12:09:38.000000000 +0200 +++ observium/html/pages/device/edit/unifi.inc.php 2026-10-14 07:21:32.480802581 +0200 @@ -24,7 +24,8 @@ del_dev_attrib($device, $param); $updated++; } - } elseif (!str_starts_with($url, [ 'http://', 'https://' ]) || preg_match('/\s/', $url)) { +// } elseif (!str_starts_with($url, [ 'http://', 'https://' ]) || preg_match('/\s/', $url)) { + } elseif ((!str_starts_with($url, 'http://') && !str_starts_with($url, 'https://')) || preg_match('/\s/', $url)) { print_error('Invalid UniFi API URL.'); } elseif (($attribs[$param] ?? '') !== $url) { set_dev_attrib($device, $param, rtrim($url, '/')); diff -ur observium.orig.15323/includes/definitions/apis.inc.php observium/includes/definitions/apis.inc.php --- observium.orig.15323/includes/definitions/apis.inc.php 2026-10-12 12:09:45.000000000 +0200 +++ observium/includes/definitions/apis.inc.php 2026-10-13 15:51:29.899915431 +0200 @@ -54,7 +54,8 @@ 'method' => 'GET', 'timeout' => 5, 'request_format' => 'urlencode', - 'request_header' => [ 'Authorization' => 'Bearer %token%' ], +// 'request_header' => [ 'Authorization' => 'Bearer %token%' ], + 'request_header' => [ 'X-API-Key' => '%token%' ], 'url' => '%url%/proxy/network/api/s/%site%/stat/device', 'request_params' => [], 'response_format' => 'json', @@ -65,7 +66,8 @@ 'method' => 'GET', 'timeout' => 5, 'request_format' => 'urlencode', - 'request_header' => [ 'Authorization' => 'Bearer %token%' ], +// 'request_header' => [ 'Authorization' => 'Bearer %token%' ], + 'request_header' => [ 'X-API-Key' => '%token%' ], 'url' => '%url%/proxy/network/api/s/%site%/stat/device/%mac%', 'request_params' => [], 'response_format' => 'json',