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]:
|
||||
"""
|
||||
Get all clients from the UniFi controller.
|
||||
|
||||
|
||||
Returns:
|
||||
list: List of client dictionaries
|
||||
|
||||
|
||||
Raises:
|
||||
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:
|
||||
response = self._request_json(endpoint)
|
||||
|
||||
|
||||
if isinstance(response, dict) and 'data' in response:
|
||||
clients = response['data']
|
||||
self.logger.debug(f"Retrieved {len(clients)} clients from UniFi controller")
|
||||
return clients
|
||||
else:
|
||||
raise UniFiDataError("Unexpected response format from UniFi controller")
|
||||
|
||||
|
||||
except UniFiDataError as e:
|
||||
self.logger.error(f"Failed to get clients: {e}")
|
||||
raise
|
||||
@ -148,25 +149,26 @@ class UnifiClient:
|
||||
def get_devices(self) -> List[Dict]:
|
||||
"""
|
||||
Get all devices (APs, switches, etc.) from the UniFi controller.
|
||||
|
||||
|
||||
Returns:
|
||||
list: List of device dictionaries
|
||||
|
||||
|
||||
Raises:
|
||||
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:
|
||||
response = self._request_json(endpoint)
|
||||
|
||||
|
||||
if isinstance(response, dict) and 'data' in response:
|
||||
devices = response['data']
|
||||
self.logger.debug(f"Retrieved {len(devices)} devices from UniFi controller")
|
||||
return devices
|
||||
else:
|
||||
raise UniFiDataError("Unexpected response format from UniFi controller")
|
||||
|
||||
|
||||
except UniFiDataError as e:
|
||||
self.logger.error(f"Failed to get devices: {e}")
|
||||
raise
|
||||
Loading…
Reference in New Issue
Block a user