uxicodev / unifi-access-api
An API client for the Ubiquiti Unifi Access API
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/uxicodev/unifi-access-api
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- laravel/pint: ^1.25
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.0|^12.0
README
A GuzzleHTTP client that can communicate with the Ubiquiti Unifi Access API. Ready to use with Laravel, but can also be used with other frameworks or plain PHP. Currently the following Unifi Access resources have been (partially) implemented:
- Visitor
- Credential
- DoorGroups
- System
Installation
You can install the package via composer:
composer require uxicodev/unifi-access-api
Usage
The Unifi Access API exposes several resources. The resources are represented by different Client classes.
All resources can be accessed through the UnifiAccessApi\Client\Client class.
All responses are represented by Data Transfer Objects (DTOs) that can be found in the Uxicodev\UnifiAccessApi\API\Responses namespace.
The objects returned are Entities that can be found in the Uxicodev\UnifiAccessApi\API\Entities namespace.
Laravel
Add the following to your .env file:
## Replace with your actual Unifi Access controller URL UNIFI_ACCESS_URI="https://192.168.1.1:12445/api/v1/developer/" #API key can be retrieved in your admin console at page "access/settings/system" UNIFI_ACCESS_API_KEY="your_api_key_here" UNIFI_ACCESS_SSL_VERIFY=false
use Carbon\Carbon; use GuzzleHttp\Client as GuzzleHttpClient; use Uxicodev\UnifiAccessApi\API\Enums\VisitReason; use Uxicodev\UnifiAccessApi\API\Requests\Visitor\UpsertVisitorRequest; use Uxicodev\UnifiAccessApi\UnifiAccessApiFacade; $unifiClient = UnifiAccessApiFacade::getClient(); $visitorRequest = new UpsertVisitorRequest('Jimmy', 'McGill', Carbon::now(), Carbon::now()->addHour(), VisitReason::Others); $visitorResponse = $unifiClient->visitor()->create($visitorRequest); $unifiClient->visitor()->assignQrCode($visitorResponse->data->id); $tmpFile = $unifiClient->credential()->downloadQrCode($visitorResponse->data->id);
Non-Laravel application
use Carbon\Carbon; use Uxicodev\UnifiAccessApi\API\Enums\VisitReason; use Uxicodev\UnifiAccessApi\API\Requests\Visitor\UpsertVisitorRequest; use Uxicodev\UnifiAccessApi\Client\Client as UnifiClient; use GuzzleHttp\Client as GuzzleHttpClient; $baseUri = 'https://192.168.1.1:12445/api/v1/developer/'; $apiKey = 'your_api_key_here'; $guzzleClient = new GuzzleHttpClient([ 'base_uri' => $baseUri, 'headers' => [ 'Authorization' => $apiKey, 'Accept' => 'application/json', ], 'verify' => false, ]); $unifiClient = new UnifiClient($guzzleClient); $visitorRequest = new UpsertVisitorRequest('Jimmy', 'McGill', Carbon::now(), Carbon::now()->addHour(), VisitReason::Others); $visitorResponse = $unifiClient->visitor()->create($visitorRequest); $unifiClient->visitor()->assignQrCode($visitorResponse->data->id); $tmpFile = $unifiClient->credential()->downloadQrCode($visitorResponse->data->id);
FAQ
My API key is not working
Make sure you are using the correct API key. You can create an API key at two seperate locations, but those locations serve a different purpose.
You can retrieve the Access API key in your admin console at page access/settings/system.
You can also create a Network/Protect API key at access/settings/control-plane/integrations. However, this key does NOT work for the Access API.
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email security@uxico.dev instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.