Metadata-Version: 2.4 Name: uiprotect Version: 10.5.0 Summary: Python API for Unifi Protect (Unofficial) License-Expression: MIT License-File: LICENSE Author: UI Protect Maintainers Author-email: ui@koston.org Requires-Python: >=3.11 Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Classifier: Topic :: Software Development :: Build Tools Classifier: Topic :: Software Development :: Libraries Requires-Dist: aiofiles (>=24) Requires-Dist: aiohttp (>=3.10.0) Requires-Dist: av (>=16) Requires-Dist: convertertools (>=0.5.0) Requires-Dist: dateparser (>=1.1.0) Requires-Dist: orjson (>=3.9.15) Requires-Dist: packaging (>=23) Requires-Dist: pillow (>=12.2.0) Requires-Dist: platformdirs (>=4.9.6) Requires-Dist: propcache (>=0.0.0) Requires-Dist: pydantic (>=2.13.4) Requires-Dist: pydantic-extra-types (>=2.10.1) Requires-Dist: pyjwt (>=2.6) Requires-Dist: rich (>=10) Requires-Dist: typer (>=0.12.3) Requires-Dist: yarl (>=1.9) Project-URL: Bug Tracker, https://github.com/uilibs/uiprotect/issues Project-URL: Changelog, https://github.com/uilibs/uiprotect/blob/main/CHANGELOG.md Project-URL: Documentation, https://uiprotect.readthedocs.io Project-URL: Repository, https://github.com/uilibs/uiprotect Description-Content-Type: text/markdown # Unofficial UniFi Protect Python API and CLI
--- **Documentation**: https://uiprotect.readthedocs.io **Source Code**: https://github.com/uilibs/uiprotect --- Python API for UniFi Protect (Unofficial) ## Looking for maintainers This project is looking for maintainers. ## Installation Install this via pip (or your favorite package manager): `pip install uiprotect` ## Developer Setup The recommended way to develop is using the provided **devcontainer** with VS Code: 1. Install [VS Code](https://code.visualstudio.com/) and the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) 2. Open the project in VS Code 3. When prompted, click "Reopen in Container" (or use Command Palette: "Dev Containers: Reopen in Container") 4. The devcontainer will automatically set up Python, Poetry, pre-commit hooks, and all dependencies Alternatively, if you want to develop natively without devcontainer: ```bash # Install dependencies poetry install --with dev # Install pre-commit hooks poetry run pre-commit install --install-hooks # Run tests poetry run pytest # Run pre-commit checks manually poetry run pre-commit run --all-files ``` ## History This project was split off from `pyunifiprotect` because that project changed its license to one that would not be accepted in Home Assistant. This project is committed to keeping the MIT license. ## Credits - Bjarne Riis ([@briis](https://github.com/briis/)) for the original pyunifiprotect package - Christopher Bailey ([@AngellusMortis](https://github.com/AngellusMortis/)) for the maintaining the pyunifiprotect package ## Contributors ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! `uiprotect` is an unofficial API for UniFi Protect. There is no affiliation with Ubiquiti. This module communicates with UniFi Protect surveillance software installed on a UniFi OS Console such as a Ubiquiti CloudKey+ or UniFi Dream Machine Pro. The API is not documented by Ubiquiti, so there might be misses and/or frequent changes in this module, as Ubiquiti evolves the software. The module is primarily written for the purpose of being used in Home Assistant core [integration for UniFi Protect](https://www.home-assistant.io/integrations/unifiprotect) but might be used for other purposes also. ## Documentation [Full documentation for the project](https://uiprotect.readthedocs.io/). ## Requirements If you want to install `uiprotect` natively, the below are the requirements: - [UniFi Protect](https://ui.com/camera-security) version 6.0+ - Only UniFi Protect version 6 and newer are supported. The library is generally tested against the latest stable version and the latest EA version. - [Python](https://www.python.org/) 3.11+ - POSIX compatible system - Library is only tested on Linux, specifically the latest Debian version available for the official Python Docker images, but there is no reason the library should not work on any Linux distro or macOS. - [PyAV](https://pyav.org/) (av) - included as a dependency - PyAV is used for audio streaming to camera speakers (talkback feature) Alternatively you can use the [provided Docker container](#using-docker-container), in which case the only requirement is [Docker](https://docs.docker.com/desktop/) or another OCI compatible orchestrator (such as Kubernetes or podman). Windows is **not supported**. If you need to use `uiprotect` on Windows, use Docker Desktop and the provided docker container or [WSL](https://docs.microsoft.com/en-us/windows/wsl/install). ## Install ### From PyPi `uiprotect` is available on PyPi: ```bash pip install uiprotect ``` ### From GitHub ```bash pip install git+https://github.com/uilibs/uiprotect.git#egg=uiprotect ``` ### Using Docker Container A Docker container is also provided, so you do not need to install/manage Python as well. You can add the following to your `.bashrc` or similar. ```bash function uiprotect() { docker run --rm -it \ -e UFP_USERNAME=YOUR_USERNAME_HERE \ -e UFP_PASSWORD=YOUR_PASSWORD_HERE \ -e UFP_ADDRESS=YOUR_IP_ADDRESS \ -e UFP_PORT=443 \ -e UFP_SSL_VERIFY=false \ -e TZ=America/New_York \ -v $PWD:/data ghcr.io/uilibs/uiprotect:latest "$@" } ``` Some notes about the Docker version since it is running inside a container: - You can update at any time using the command `docker pull ghcr.io/uilibs/uiprotect:latest` - Your local current working directory (`$PWD`) will automatically be mounted to `/data` inside of the container. For commands that output files, this is the _only_ path you can write to and have the file persist. - The container supports `linux/amd64` and `linux/arm64` natively. This means it will also work well on macOS or Windows using Docker Desktop. - `TZ` should be the [Olson timezone name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for the timezone your UniFi Protect instance is in. - For more details on `TZ` and other environment variables, check the [command line docs](https://uilibs.github.io/uiprotect/latest/cli/) ## Quickstart ### CLI > [!WARNING] > Ubiquiti SSO accounts are not supported and actively discouraged from being used. There is no option to use MFA. You are expected to use local access user. `uiprotect` is not designed to allow you to use your owner account to access the console or to be used over the public internet as both pose a security risk. ```bash export UFP_USERNAME=YOUR_USERNAME_HERE export UFP_PASSWORD=YOUR_PASSWORD_HERE export UFP_ADDRESS=YOUR_IP_ADDRESS export UFP_PORT=443 # set to true if you have a valid HTTPS certificate for your instance export UFP_SSL_VERIFY=false # Alternatively, use an API key for authentication (required for public API operations) export UFP_API_KEY=YOUR_API_KEY_HERE uiprotect --help uiprotect nvr ``` #### Available CLI Commands **Top-level commands:** - `uiprotect shell` - Start an interactive Python shell with the API client - `uiprotect create-api-key