Create a new user (client device) in the UniFi network
Site identifier (default: 'default')
Required MAC address of the client device
Required ID of the user group to assign the user to
Optional name: stringOptional friendly name for the user
Optional note: stringOptional note/description for the user
Optional is_guest: booleanOptional flag to mark user as guest (default: false)
Optional is_wired: booleanOptional flag to indicate wired connection (default: false)
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to the created user object
Creates a new user entry for a client device with specified MAC address and assigns it to a user group. This allows for bandwidth control and access policies to be applied to the device.
When MAC address or user_group_id validation fails
When user creation fails
// Create basic user
const user = await userMgmt.create_user(
'default',
'aa:bb:cc:dd:ee:ff',
'default-usergroup'
);
// Create user with full details
await userMgmt.create_user(
'default',
'aa:bb:cc:dd:ee:ff',
'guest-usergroup',
'John Doe',
'Conference guest',
true, // is_guest
false // is_wired
);
// Create wired user
await userMgmt.create_user(
'default',
'aa:bb:cc:dd:ee:ff',
'corporate-usergroup',
'Office Workstation',
'Marketing department PC',
false, // is_guest
true // is_wired
);
1.0.0
PHP: create_user($mac, $user_group_id, $name = null, $note = null, $is_guest = null, $is_wired = null)
Set user group for a client device
Site identifier (default: 'default')
Required ID of the client device
Required ID of the user group to assign
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if assignment was successful
Assigns a client device to a specific user group, which controls bandwidth limits and access policies for that device.
When client_id or group_id validation fails
When user group assignment fails
// Assign user to VIP group
await userMgmt.set_usergroup('default', 'user123', 'vip-group-id');
// Move guest to limited bandwidth group
await userMgmt.set_usergroup('default', 'guest456', 'guest-group-id');
1.0.0
PHP: set_usergroup($client_id, $group_id)
Create user group
Site identifier (default: 'default')
Required Name for the new user group
Download bandwidth limit in Kbps (default: -1 for unlimited)
Upload bandwidth limit in Kbps (default: -1 for unlimited)
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to the created user group object
Creates a new user group with specified bandwidth limits. User groups control download/upload speeds and access policies for client devices.
When group_name validation fails
When user group creation fails
// Create unlimited bandwidth group
const group = await userMgmt.create_usergroup('default', 'VIP Users');
// Create group with bandwidth limits (10 Mbps down, 5 Mbps up)
await userMgmt.create_usergroup('default', 'Guest Users', 10000, 5000);
// Create group with download limit only
await userMgmt.create_usergroup('default', 'Basic Users', 5000, -1);
1.0.0
PHP: create_usergroup($group_name, $group_dn = -1, $group_up = -1)
List user groups
Site identifier (default: 'default')
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to array of user group objects
Retrieves all user groups configured in the site. User groups define bandwidth limits and access policies for client devices.
When user group list retrieval fails
// Get all user groups
const groups = await userMgmt.list_usergroups('default');
console.log(`Found ${groups.length} user groups`);
// Find specific group by name
const vipGroup = groups.find(group => group.name === 'VIP Users');
if (vipGroup) {
console.log(`VIP group ID: ${vipGroup._id}`);
}
1.0.0
PHP: list_usergroups()
Delete user group
Site identifier (default: 'default')
Required ID of the user group to delete
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if deletion was successful
Removes a user group from the site. Users assigned to the deleted group will be moved to the default user group.
When group_id is invalid
When user group deletion fails
// Delete user group by ID
await userMgmt.delete_usergroup('default', '507f1f77bcf86cd799439011');
// Find and delete user group by name
const groups = await userMgmt.list_usergroups('default');
const guestGroup = groups.find(group => group.name === 'Guest Users');
if (guestGroup) {
await userMgmt.delete_usergroup('default', guestGroup._id);
}
Users in the deleted group will be moved to the default group
1.0.0
PHP: delete_usergroup($group_id)
Edit user group
Site identifier (default: 'default')
Required ID of the user group to edit
Required Site ID where the group exists
Required New name for the user group
Download bandwidth limit in Kbps (default: -1 for unlimited)
Upload bandwidth limit in Kbps (default: -1 for unlimited)
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to the updated user group object
Updates an existing user group's configuration including name and bandwidth limits. This allows modification of download/upload speed limits and group identification.
When group_id, site_id, or group_name validation fails
When user group update fails
// Update group name only
await userMgmt.edit_usergroup(
'default',
'group123',
'site456',
'Updated VIP Users'
);
// Update group with new bandwidth limits (20 Mbps down, 10 Mbps up)
await userMgmt.edit_usergroup(
'default',
'group123',
'site456',
'High Speed Users',
20000, // 20 Mbps down
10000 // 10 Mbps up
);
// Remove bandwidth limits (set to unlimited)
await userMgmt.edit_usergroup(
'default',
'group123',
'site456',
'Unlimited Users',
-1, // unlimited down
-1 // unlimited up
);
1.0.0
PHP: edit_usergroup($group_id, $site_id, $group_name, $group_dn = -1, $group_up = -1)
List site administrators
Site identifier (default: 'default')
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to array of site administrator objects
Retrieves a list of administrators who have access to the current site. Includes information about admin roles and permissions.
When administrator list retrieval fails
// Get all site administrators
const admins = await userMgmt.list_admins('default');
console.log(`Site has ${admins.length} administrators`);
// Find super administrators
const superAdmins = admins.filter(admin => admin.role === 'admin');
// List admin emails
const adminEmails = admins.map(admin => admin.email);
console.log('Admin emails:', adminEmails);
1.0.0
PHP: list_admins()
List all administrators across all sites
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to array of all administrator objects
Retrieves a comprehensive list of all administrators across all sites in the UniFi Controller. This is useful for global administrator management.
When administrator list retrieval fails
// Get all administrators across all sites
const allAdmins = await userMgmt.list_all_admins();
console.log(`Total administrators: ${allAdmins.length}`);
// Find administrators by email domain
const companyAdmins = allAdmins.filter(admin =>
admin.email.endsWith('@company.com')
);
list_admins to get administrators for a specific site
1.0.0
PHP: list_all_admins()
Invite admin user
Site identifier (default: 'default')
Required Full name of the administrator
Required Email address for the administrator
Enable single sign-on for the administrator (default: true)
Grant read-only access instead of full admin (default: false)
Allow device adoption permissions (default: false)
Allow device restart permissions (default: false)
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if invitation was sent successfully
Invites a new administrator to the site with specified permissions. The invited user will receive an email invitation to access the UniFi Controller.
When email validation fails
When admin invitation fails
// Invite basic administrator
await userMgmt.invite_admin(
'default',
'John Smith',
'john.smith@company.com'
);
// Invite read-only administrator
await userMgmt.invite_admin(
'default',
'Jane Doe',
'jane.doe@company.com',
true, // enable_sso
true // readonly
);
// Invite administrator with device permissions
await userMgmt.invite_admin(
'default',
'Tech Lead',
'tech@company.com',
true, // enable_sso
false, // readonly
true, // device_adopt
true // device_restart
);
1.0.0
PHP: invite_admin($name, $email, $enable_sso = true, $readonly = false, $device_adopt = false, $device_restart = false)
Assign an existing admin to a site
Site identifier (default: 'default')
Required ID of the existing administrator
Grant read-only access instead of full admin (default: false)
Allow device adoption permissions (default: false)
Allow device restart permissions (default: false)
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if assignment was successful
Grants an existing administrator access to a specific site with configurable permissions and roles.
When admin_id validation fails
When admin assignment fails
// Assign existing admin with full permissions
await userMgmt.assign_existing_admin('default', 'admin123');
// Assign with read-only access
await userMgmt.assign_existing_admin('default', 'admin456', true);
// Assign with device management permissions
await userMgmt.assign_existing_admin(
'default',
'admin789',
false, // readonly
true, // device_adopt
true // device_restart
);
1.0.0
PHP: assign_existing_admin($admin_id, $readonly = false, $device_adopt = false, $device_restart = false)
Update an admin
Site identifier (default: 'default')
Required ID of the administrator to update
Required Updated full name
Required Updated email address
New password (leave empty to keep current password)
Set read-only access (default: false)
Allow device adoption permissions (default: false)
Allow device restart permissions (default: false)
Optional is_super: booleanSet super administrator status (optional)
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if update was successful
Updates an existing administrator's information, permissions, and role. Can modify name, email, password, and various permission settings.
When email validation fails
When admin update fails
// Update admin name and email
await userMgmt.update_admin(
'default',
'admin123',
'John Smith Jr.',
'john.smith.jr@company.com'
);
// Update admin with new password and permissions
await userMgmt.update_admin(
'default',
'admin456',
'Jane Doe',
'jane.doe@company.com',
'newSecurePassword123',
false, // readonly
true, // device_adopt
true // device_restart
);
// Promote to super administrator
await userMgmt.update_admin(
'default',
'admin789',
'Super Admin',
'super@company.com',
'', // keep current password
false, // readonly
false, // device_adopt
false, // device_restart
true // is_super
);
1.0.0
PHP: update_admin($admin_id, $name, $email, $password = '', $readonly = false, $device_adopt = false, $device_restart = false, $is_super = null)
Revoke admin privileges
Site identifier (default: 'default')
Required ID of the administrator to revoke
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if revocation was successful
Removes administrator access from a user for the current site. The user will no longer be able to access or manage the site.
When admin_id validation fails
When admin revocation fails
// Revoke admin access
await userMgmt.revoke_admin('default', 'admin123');
// Find and revoke admin by email
const admins = await userMgmt.list_admins('default');
const targetAdmin = admins.find(admin => admin.email === 'former@company.com');
if (targetAdmin) {
await userMgmt.revoke_admin('default', targetAdmin._id);
}
This action cannot be undone. The user must be re-invited to regain access.
1.0.0
PHP: revoke_admin($admin_id)
Grant super admin privileges
Site identifier (default: 'default')
Required ID of the administrator to promote
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if promotion was successful
Grants super administrator privileges to an existing administrator. Super administrators have elevated permissions across the entire UniFi Controller.
When admin_id validation fails
When super admin promotion fails
// Grant super admin privileges
await userMgmt.grant_super_admin('default', 'admin123');
// Find and promote admin by name
const admins = await userMgmt.list_admins('default');
const targetAdmin = admins.find(admin => admin.name === 'Senior Admin');
if (targetAdmin) {
await userMgmt.grant_super_admin('default', targetAdmin._id);
}
Super admin privileges provide extensive system access. Use carefully.
1.0.0
PHP: grant_super_admin($admin_id)
Delete admin
Site identifier (default: 'default')
Required ID of the administrator to delete
Optional options: { Optional request configuration
Optional signal?: AbortSignalOptional AbortSignal to cancel the request
Promise resolving to true if deletion was successful
Removes an administrator from the site by revoking their super admin privileges. This is equivalent to calling revoke_admin but uses the delete-admin command.
When admin_id validation fails
When admin deletion fails
// Delete admin by ID
await userMgmt.delete_admin('default', 'admin123');
// Find and delete admin by email
const admins = await userMgmt.list_admins('default');
const targetAdmin = admins.find(admin => admin.email === 'former@company.com');
if (targetAdmin) {
await userMgmt.delete_admin('default', targetAdmin._id);
}
This action cannot be undone. The user must be re-invited to regain access.
1.0.0
PHP: delete_admin($admin_id)
Protected substituteProtected make
User Management API class
Handles all user, user group, and administrator management operations for the UniFi Controller.
Since
1.0.0