@oddbit/unifi
Version:
Unifi API client library
83 lines (65 loc) • 2.47 kB
Markdown
[](https://www.npmjs.com/package/@oddbit/unifi) 
An easy to use and Typscript friendly API client for managing UBNT UniFi accesspoints.
The UniFi API is officially not very well documented, the project started out from [this shell script](https://dl.ubnt.com/unifi/5.4.16/unifi_sh_api) but I've found that the source code of the PHP project
[](https://github.com/Art-of-WiFi/UniFi-API-browser) is the best API documentation
at the moment. Thanks guys!
The following actions are supported.
- Authorization
- Login
- Logout
- Clients (STA/connected devices)
- Reconnect client
- List clients
- Get client
- Block client
- Unblock client
- Set or remove client alias
- Set or remove client notes
- Hotspot guest access
- Authorize guest
- Unauthorize guest
- List vouchers
- Create vouchers
- Delete vouchers
- System
- Get UniFi controller system info
- List sites
- List access points with device info
- List sessions
Below is a simple example of synchronous communication with the UniFI controller to authorize a guest (device) at the hotspot.
### Basic
The basics of how to create a controller reference and login / logout.
```typescript
import * as unifi from "@oddbit/unifi";
const controller = new unifi.UnifiController({
host: "10.11.12.13",
isSelfSigned: true,
siteName: "default"
});
await controller.login("admin", "secretPassword");
// ...
// Work with the controller
// ...
await controller.logout();
```
In some cases it can be good to first look up information about the site and update configuration accordingly.
This is a sample of fetching the site names and setting to a non-default value
```typescript
const sites = await controller.listSites();
sites.forEach(site => {
if (site.name !== "default") {
controller.setSite(site.name);
}
})
```
The first parameter is the MAC of the connecting device. This is captured by the hotspot and passed to your portal page in the page redirection.
```typescript
const clientMac = "00:11:22:33:44:55";
const accessPointMac = "66:77:88:99:aa:bb";
const authResponse = await controller.authorizeGuest(clientMac, accessPointMac);
```