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',