Fix UniFi OS (UDM-SE) API endpoints for client/device queries
UDM-SE uses UniFi OS which requires /proxy/network prefix for Network
application API endpoints. The legacy controller endpoints (/api/s/...)
return 404 on UniFi OS devices.
Changes:
- Updated get_clients() to use /proxy/network/api/s/{site}/stat/sta
- Updated get_devices() to use /proxy/network/api/s/{site}/stat/device
- Added comments explaining UniFi OS API structure
Fixes 404 errors when querying UniFi controller for devices
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c157595ee3
commit
0267b1712b
@ -122,25 +122,26 @@ class UnifiClient:
|
|||||||
def get_clients(self) -> List[Dict]:
|
def get_clients(self) -> List[Dict]:
|
||||||
"""
|
"""
|
||||||
Get all clients from the UniFi controller.
|
Get all clients from the UniFi controller.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
list: List of client dictionaries
|
list: List of client dictionaries
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
UniFiDataError: If request fails
|
UniFiDataError: If request fails
|
||||||
"""
|
"""
|
||||||
endpoint = f'/api/s/{self.site_id}/stat/sta'
|
# UniFi OS (UDM-SE) uses /proxy/network prefix for Network application API
|
||||||
|
endpoint = f'/proxy/network/api/s/{self.site_id}/stat/sta'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = self._request_json(endpoint)
|
response = self._request_json(endpoint)
|
||||||
|
|
||||||
if isinstance(response, dict) and 'data' in response:
|
if isinstance(response, dict) and 'data' in response:
|
||||||
clients = response['data']
|
clients = response['data']
|
||||||
self.logger.debug(f"Retrieved {len(clients)} clients from UniFi controller")
|
self.logger.debug(f"Retrieved {len(clients)} clients from UniFi controller")
|
||||||
return clients
|
return clients
|
||||||
else:
|
else:
|
||||||
raise UniFiDataError("Unexpected response format from UniFi controller")
|
raise UniFiDataError("Unexpected response format from UniFi controller")
|
||||||
|
|
||||||
except UniFiDataError as e:
|
except UniFiDataError as e:
|
||||||
self.logger.error(f"Failed to get clients: {e}")
|
self.logger.error(f"Failed to get clients: {e}")
|
||||||
raise
|
raise
|
||||||
@ -148,25 +149,26 @@ class UnifiClient:
|
|||||||
def get_devices(self) -> List[Dict]:
|
def get_devices(self) -> List[Dict]:
|
||||||
"""
|
"""
|
||||||
Get all devices (APs, switches, etc.) from the UniFi controller.
|
Get all devices (APs, switches, etc.) from the UniFi controller.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
list: List of device dictionaries
|
list: List of device dictionaries
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
UniFiDataError: If request fails
|
UniFiDataError: If request fails
|
||||||
"""
|
"""
|
||||||
endpoint = f'/api/s/{self.site_id}/stat/device'
|
# UniFi OS (UDM-SE) uses /proxy/network prefix for Network application API
|
||||||
|
endpoint = f'/proxy/network/api/s/{self.site_id}/stat/device'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = self._request_json(endpoint)
|
response = self._request_json(endpoint)
|
||||||
|
|
||||||
if isinstance(response, dict) and 'data' in response:
|
if isinstance(response, dict) and 'data' in response:
|
||||||
devices = response['data']
|
devices = response['data']
|
||||||
self.logger.debug(f"Retrieved {len(devices)} devices from UniFi controller")
|
self.logger.debug(f"Retrieved {len(devices)} devices from UniFi controller")
|
||||||
return devices
|
return devices
|
||||||
else:
|
else:
|
||||||
raise UniFiDataError("Unexpected response format from UniFi controller")
|
raise UniFiDataError("Unexpected response format from UniFi controller")
|
||||||
|
|
||||||
except UniFiDataError as e:
|
except UniFiDataError as e:
|
||||||
self.logger.error(f"Failed to get devices: {e}")
|
self.logger.error(f"Failed to get devices: {e}")
|
||||||
raise
|
raise
|
||||||
Loading…
Reference in New Issue
Block a user