2.5 KiB
2.5 KiB
Project Readme Hints
Architecture Overview
This package implements a comprehensive UniFi API client supporting four different UniFi applications:
Entry Points
-
UnifiAccount - Site Manager (cloud) API
- Uses API key authentication via
X-API-Keyheader - Base URL:
https://api.ui.com/v1 - Managers: SiteManager, HostManager
- Uses API key authentication via
-
UnifiController - Network Controller API (local)
- Uses session cookie authentication
- Supports multiple controller types:
unifi-os,udm-pro,standalone - Managers: DeviceManager, ClientManager
-
UnifiProtect - Protect NVR API (local)
- Uses session cookie + CSRF token authentication
- Fetches bootstrap on login for camera/NVR info
- Manager: CameraManager
-
UnifiAccess - Access Controller API (local)
- Uses bearer token authentication
- Default port: 12445
- Manager: DoorManager
Key Files
ts/classes.unifihttp.ts- Base HTTP client with SSL handlingts/interfaces/*.ts- All TypeScript interfacests/unifi.logger.ts- Logging utility
Authentication Notes
- UniFi OS consoles (UDM, UDM Pro, Cloud Key Gen2+) authenticate at console level (
/api/auth/login) then access Network API via/proxy/network - Standalone controllers authenticate directly at
/api/login - Protect API is behind
/proxy/protect/api - Access API uses port 12445 with bearer token
SSL/TLS
All local APIs default to verifySsl: false to support self-signed certificates common on UniFi devices.
Testing Environment Variables
Required in .nogit/env.json:
{
"UNIFI_CONSOLE_IP": "192.168.x.x",
"UNIFI_NETWORK_DEV_KEY": "xxx",
"UNIFI_PROTECT_DEV_KEY": "xxx"
}
Test Files
test/test.ts- Unit tests (no credentials needed)test/test.network.ts- Network Controller integration teststest/test.protect.ts- Protect API integration tests (defensive - handles missing NVR/camera data gracefully)
API Notes
- Network API works perfectly with local console API keys
- Protect API bootstrap structure may vary - NVR info may not be available with API key auth
- Events endpoint may return array or
{data: [...]}format - CameraManager handles both - Site Manager cloud API (
api.ui.com) requires different keys (from ui.com portal), not local console keys
Documentation Sources
- Local docs in
.nogit/docs/contain OpenAPI specs from console - Network API:
/unifi-api/networkon console - Protect API:
/unifi-api/protecton console