Configuration object for the UniFi client
When required configuration parameters are missing or invalid
const client = new UniFiClient({
baseUrl: 'https://192.168.1.1:8443',
username: 'admin',
password: 'mypassword',
site: 'default',
timeout: 10000,
verifySsl: false
});
Authenticates with the UniFi controller
Establishes a session with the UniFi controller using the provided credentials. This method must be called before making any API requests that require authentication.
Promise that resolves to true when login is successful
When login credentials are invalid
When unable to connect to the controller
When client configuration is invalid
try {
await client.login();
console.log('Successfully logged in');
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('Invalid credentials');
} else {
console.error('Login failed:', error.message);
}
}
Logs out from the UniFi controller
Terminates the current session with the UniFi controller and clears all authentication cookies. This method should be called when finished with the client.
Promise that resolves to true when logout is successful
// Always logout when done
try {
await client.logout();
console.log('Successfully logged out');
} catch (error) {
console.warn('Logout failed, but session cleared locally');
}
Checks if the client is currently authenticated
Returns the current authentication status without making any network requests. Note that this only reflects the local session state and doesn't verify if the session is still valid on the server.
true if the client has an active session, false otherwise
if (!client.isAuthenticated()) {
await client.login();
}
// Now safe to make API calls
const devices = await client.listDevices();
Retrieves current session information
Returns detailed information about the current session including authentication status, login time, last activity, and user details.
Session information object
const sessionInfo = client.getSessionInfo();
console.log(`Logged in as: ${sessionInfo.username}`);
console.log(`Site: ${sessionInfo.site}`);
console.log(`Session active: ${sessionInfo.isAuthenticated}`);
Gets the configured site name
Returns the site name that this client instance is configured to work with. All API operations will be performed in the context of this site.
The site name (defaults to 'default' if not specified in config)
const site = client.getSite();
console.log(`Working with site: ${site}`);
Gets the underlying HTTP client instance
Provides access to the internal HTTP client for advanced usage scenarios such as custom request configuration or direct API calls.
The HTTP client instance
const httpClient = client.getHttpClient();
// Make a custom API call
const response = await httpClient.get('/api/s/default/stat/health');
Gets the authentication API instance
Provides access to the authentication API for advanced authentication scenarios such as custom authentication flows or session monitoring.
The authentication API instance
const authAPI = client.getAuthenticationAPI();
// Check if session needs refresh
await authAPI.ensureAuthenticated();
Gets the session manager instance
Provides access to the internal session manager for advanced session management scenarios such as custom authentication flows or session monitoring.
The session manager instance
const sessionManager = client.getSessionManager();
// Check if session needs refresh
await sessionManager.ensureAuthenticated();
Gets the device management API instance
Provides access to the device management API for advanced device management scenarios such as custom device operations or bulk operations.
The device management API instance
const deviceAPI = client.getDeviceManagementAPI();
// Use device management API directly
const devices = await deviceAPI.list_devices();
Gets the client management API instance
Provides access to the client management API for advanced client management scenarios such as bulk client operations or guest management.
The client management API instance
const clientAPI = client.getClientManagementAPI();
// Use client management API directly
const clients = await clientAPI.list_users();
await clientAPI.block_sta('default', 'aa:bb:cc:dd:ee:ff');
Get the Network Management API instance
Provides access to network configuration operations including network creation, VLAN management, routing configuration, DNS settings, and port forwarding.
NetworkManagementAPI instance
const networkAPI = client.getNetworkManagementAPI();
// Use network management API directly
const networks = await networkAPI.list_networkconf();
await networkAPI.create_network({
name: 'Guest Network',
purpose: 'guest',
ip_subnet: '192.168.100.1/24'
});
Get the Site Management API instance
Provides access to site management operations including site creation, deletion, configuration, and statistics.
Site Management API instance
const siteAPI = client.getSiteManagementAPI();
// Use site management API directly
const sites = await siteAPI.list_sites();
await siteAPI.create_site('New Branch Office');
await siteAPI.set_site_name('Updated Office Name');
const stats = await siteAPI.stat_sites();
Get the User Management API instance
Provides access to user, user group, and administrator management operations including user creation, group management, and admin permissions.
User Management API instance
const userAPI = client.getUserManagementAPI();
// Use user management API directly
const users = await userAPI.list_users();
await userAPI.create_user('aa:bb:cc:dd:ee:ff', 'group_id', 'John Doe');
const groups = await userAPI.list_usergroups();
Get the Security API instance
Provides access to security-related operations including firewall management, IPS/IDS settings, RADIUS authentication, and access controls.
Security API instance
const securityAPI = client.getSecurityAPI();
// Use security API directly
const firewallGroups = await securityAPI.list_firewallgroups();
await securityAPI.create_firewallgroup('BlockedIPs', 'address-group', ['192.168.1.100']);
const radiusAccounts = await securityAPI.list_radius_accounts();
Get the Statistics API instance
Provides access to statistics and monitoring operations including system health, event monitoring, and various time-based statistics.
Statistics API instance
const statsAPI = client.getStatisticsAPI();
// Use statistics API directly
const sysInfo = await statsAPI.stat_sysinfo();
const events = await statsAPI.list_events();
const health = await statsAPI.list_health();
Optional macs: string | string[]Optional options: { Optional signal?: AbortSignalOptional options: { Optional signal?: AbortSignalOptional port: numberOptional sshKeyVerify: booleanOptional options: { Optional signal?: AbortSignalOptional up: numberOptional down: numberOptional megabytes: numberOptional apMac: stringOptional options: { Optional signal?: AbortSignalOptional enabled: booleanOptional hideSsid: booleanOptional isGuest: booleanOptional security: stringOptional wpaMode: stringOptional wpaEnc: stringOptional vlanEnabled: booleanOptional vlanId: stringOptional uapsdEnabled: booleanOptional scheduleEnabled: booleanOptional schedule: any[]Optional apGroupIds: string[]Optional additionalPayload: anyOptional options: { Optional signal?: AbortSignalOptional ttl: numberOptional enabled: booleanOptional options: { Optional signal?: AbortSignalOptional name: stringOptional note: stringOptional isGuest: booleanOptional isWired: booleanOptional options: { Optional signal?: AbortSignalOptional count: numberOptional quota: numberOptional note: stringOptional up: numberOptional down: numberOptional megabytes: numberOptional options: { Optional signal?: AbortSignalOptional groupMembers: string[]Optional options: { Optional signal?: AbortSignalOptional tunnelType: numberOptional tunnelMediumType: numberOptional vlan: numberOptional options: { Optional signal?: AbortSignalOptional readonly: booleanOptional deviceAdopt: booleanOptional deviceRestart: booleanOptional options: { Optional signal?: AbortSignalOptional method: "GET" | "DELETE" | "POST" | "PUT" | "PATCH"Optional payload: anyOptional returnType: "boolean" | "array"Optional options: { Optional signal?: AbortSignalOptional macs: string | string[]Optional options: { Optional signal?: AbortSignalOptional up: numberOptional down: numberOptional megabytes: numberOptional apMac: stringOptional options: { Optional signal?: AbortSignalOptional enabled: booleanOptional hide_ssid: booleanOptional is_guest: booleanOptional security: stringOptional wpa_mode: stringOptional wpa_enc: stringOptional vlan_enabled: booleanOptional vlan_id: stringOptional uapsd_enabled: booleanOptional schedule_enabled: booleanOptional schedule: any[]Optional ap_group_ids: string[]Optional additional_payload: anyOptional options: { Optional signal?: AbortSignal
Creates a new UniFi API client instance