https://github.com/opastorello/unifi-api-docs
Espelho automatico e versionado da documentacao oficial da API UniFi (Site Manager, Network, Protect, Mobility) - OpenAPI + Markdown, atualizado diariamente por CI
https://github.com/opastorello/unifi-api-docs
api api-docs api-documentation cloud-connector mcp openapi rest-api site-manager ubiquiti unifi unifi-network unifi-protect
Last synced: 14 days ago
JSON representation
Espelho automatico e versionado da documentacao oficial da API UniFi (Site Manager, Network, Protect, Mobility) - OpenAPI + Markdown, atualizado diariamente por CI
- Host: GitHub
- URL: https://github.com/opastorello/unifi-api-docs
- Owner: opastorello
- Created: 2026-06-05T02:41:56.000Z (28 days ago)
- Default Branch: main
- Last Pushed: 2026-06-05T04:28:27.000Z (28 days ago)
- Last Synced: 2026-06-05T05:03:27.369Z (28 days ago)
- Topics: api, api-docs, api-documentation, cloud-connector, mcp, openapi, rest-api, site-manager, ubiquiti, unifi, unifi-network, unifi-protect
- Language: Python
- Homepage: https://opastorello.github.io/unifi-api-docs/
- Size: 628 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.en.md
Awesome Lists containing this project
README
# π‘ UniFi API Docs
**π Languages:** English Β· [PortuguΓͺs](./README.md)
**π Site (interactive reference):**
An **automatic, versioned** mirror of the official UniFi API documentation
([developer.ui.com](https://developer.ui.com)), ready for humans and AIs/LLMs (Markdown + OpenAPI).
   
> β οΈ **Unofficial** mirror, kept for reference and automation. The authoritative source is always [developer.ui.com](https://developer.ui.com).
---
## What it is
For each **application** (Site Manager, Network, Protect, Mobility) and each published **version**, this repo stores:
- **`//openapi.json`** - the full **OpenAPI** spec (all paths, schemas, examples). Source of truth.
- **`//reference.md`** - a Markdown reference generated from the OpenAPI (index, parameters, body, response and **Local**/**Remote** cURL examples).
Quick-access indexes:
- **[`llms.txt`](./llms.txt)** - index following the [llmstxt.org](https://llmstxt.org) convention, made for LLMs.
- **[`catalog.json`](./catalog.json)** - JSON catalog (apps β versions β counts).
- **[`skill.md`](./skill.md)** - ready-to-use skill for agents querying the API.
> βΉοΈ The `openapi.json` files are a **faithful** mirror of the source. Some of Ubiquiti's 3.1.0 specs have minor OpenAPI-schema deviations (e.g. empty `info.license` on Network; a missing `description` on Protect), kept as published. They are valid, usable JSON - only strict validators complain.
---
## Connection modes (Local Γ Remote)
The per-app APIs (Network / Protect / Mobility) run **locally on each console** and can be reached two ways:
| | π Local | βοΈ Remote (Cloud Connector) |
|---|---|---|
| **Header** | `X-API-KEY` | `X-API-Key` |
| **Key** | console β *Integrations* | unifi.ui.com β *Settings β API Keys* |
| **Local network?** | required | not needed (works behind CGNAT) |
| **Requirement** | - | console firmware β₯ 5.0.3 |
**π Local** - straight to the console:
```bash
curl -H "X-API-KEY: $LOCAL_KEY" \
"https:///proxy//integration/v1/β¦"
```
**βοΈ Remote** - via cloud, no local network access:
```bash
curl -H "X-API-Key: $SITE_MANAGER_KEY" \
"https://api.ui.com/v1/connector/consoles/{id}//integration/v1/β¦"
```
The path after `/integration` is **identical** in both modes. **Site Manager** is the multi-site cloud API (`https://api.ui.com/v1/β¦`) and includes the **Cloud Connector** used by Remote mode.
---
## π Catalog
| App | Latest | Categories | Operations | Paths | OpenAPI | Reference | Official docs |
|---|---|---:|---:|---:|---|---|---|
| **network** | `v10.3.58` | 13 | 73 | 44 | [json](network/v10.3.58/openapi.json) | [md](network/v10.3.58/reference.md) | [docs](https://developer.ui.com/network/v10.3.58) |
| **protect** | `v7.1.46` | 22 | 73 | 54 | [json](protect/v7.1.46/openapi.json) | [md](protect/v7.1.46/reference.md) | [docs](https://developer.ui.com/protect/v7.1.46) |
| **site-manager** | `v1.0.0` | 1 | 9 | 9 | [json](site-manager/v1.0.0/openapi.json) | [md](site-manager/v1.0.0/reference.md) | [docs](https://developer.ui.com/site-manager/v1.0.0) |
| **mobility** | `v1.0.0` | 4 | 8 | 7 | [json](mobility/v1.0.0/openapi.json) | [md](mobility/v1.0.0/reference.md) | [docs](https://developer.ui.com/mobility/v1.0.0) |
π Full version history - 34 versions
**network**
| Version | Categories | Operations | Paths | Updated | OpenAPI | Reference | Official docs |
|---|---:|---:|---:|---|---|---|---|
| `v10.3.58` β | 13 | 73 | 44 | 2026-06-02 | [json](network/v10.3.58/openapi.json) | [md](network/v10.3.58/reference.md) | [docs](https://developer.ui.com/network/v10.3.58) |
| `v10.1.84` | 12 | 67 | 38 | 2026-06-02 | [json](network/v10.1.84/openapi.json) | [md](network/v10.1.84/reference.md) | [docs](https://developer.ui.com/network/v10.1.84) |
| `v10.0.162` | 11 | 50 | 32 | 2026-06-02 | [json](network/v10.0.162/openapi.json) | [md](network/v10.0.162/reference.md) | [docs](https://developer.ui.com/network/v10.0.162) |
| `v9.5.21` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.5.21/openapi.json) | [md](network/v9.5.21/reference.md) | [docs](https://developer.ui.com/network/v9.5.21) |
| `v9.4.19` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.4.19/openapi.json) | [md](network/v9.4.19/reference.md) | [docs](https://developer.ui.com/network/v9.4.19) |
| `v9.4.17` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.4.17/openapi.json) | [md](network/v9.4.17/reference.md) | [docs](https://developer.ui.com/network/v9.4.17) |
| `v9.3.45` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.3.45/openapi.json) | [md](network/v9.3.45/reference.md) | [docs](https://developer.ui.com/network/v9.3.45) |
| `v9.3.43` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.3.43/openapi.json) | [md](network/v9.3.43/reference.md) | [docs](https://developer.ui.com/network/v9.3.43) |
| `v9.2.87` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.2.87/openapi.json) | [md](network/v9.2.87/reference.md) | [docs](https://developer.ui.com/network/v9.2.87) |
| `v9.2.86` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.2.86/openapi.json) | [md](network/v9.2.86/reference.md) | [docs](https://developer.ui.com/network/v9.2.86) |
| `v9.1.120` | 5 | 15 | 12 | 2026-06-02 | [json](network/v9.1.120/openapi.json) | [md](network/v9.1.120/reference.md) | [docs](https://developer.ui.com/network/v9.1.120) |
**protect**
| Version | Categories | Operations | Paths | Updated | OpenAPI | Reference | Official docs |
|---|---:|---:|---:|---|---|---|---|
| `v7.1.46` β | 22 | 73 | 54 | 2026-06-02 | [json](protect/v7.1.46/openapi.json) | [md](protect/v7.1.46/reference.md) | [docs](https://developer.ui.com/protect/v7.1.46) |
| `v7.1.42` | 22 | 73 | 54 | 2026-06-02 | [json](protect/v7.1.42/openapi.json) | [md](protect/v7.1.42/reference.md) | [docs](https://developer.ui.com/protect/v7.1.42) |
| `v7.0.107` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v7.0.107/openapi.json) | [md](protect/v7.0.107/reference.md) | [docs](https://developer.ui.com/protect/v7.0.107) |
| `v7.0.104` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v7.0.104/openapi.json) | [md](protect/v7.0.104/reference.md) | [docs](https://developer.ui.com/protect/v7.0.104) |
| `v7.0.94` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v7.0.94/openapi.json) | [md](protect/v7.0.94/reference.md) | [docs](https://developer.ui.com/protect/v7.0.94) |
| `v6.2.88` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.2.88/openapi.json) | [md](protect/v6.2.88/reference.md) | [docs](https://developer.ui.com/protect/v6.2.88) |
| `v6.2.87` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.2.87/openapi.json) | [md](protect/v6.2.87/reference.md) | [docs](https://developer.ui.com/protect/v6.2.87) |
| `v6.2.83` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.2.83/openapi.json) | [md](protect/v6.2.83/reference.md) | [docs](https://developer.ui.com/protect/v6.2.83) |
| `v6.2.72` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.2.72/openapi.json) | [md](protect/v6.2.72/reference.md) | [docs](https://developer.ui.com/protect/v6.2.72) |
| `v6.1.79` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.1.79/openapi.json) | [md](protect/v6.1.79/reference.md) | [docs](https://developer.ui.com/protect/v6.1.79) |
| `v6.1.78` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.1.78/openapi.json) | [md](protect/v6.1.78/reference.md) | [docs](https://developer.ui.com/protect/v6.1.78) |
| `v6.1.75` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.1.75/openapi.json) | [md](protect/v6.1.75/reference.md) | [docs](https://developer.ui.com/protect/v6.1.75) |
| `v6.1.68` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.1.68/openapi.json) | [md](protect/v6.1.68/reference.md) | [docs](https://developer.ui.com/protect/v6.1.68) |
| `v6.1.65` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.1.65/openapi.json) | [md](protect/v6.1.65/reference.md) | [docs](https://developer.ui.com/protect/v6.1.65) |
| `v6.0.53` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.0.53/openapi.json) | [md](protect/v6.0.53/reference.md) | [docs](https://developer.ui.com/protect/v6.0.53) |
| `v6.0.47` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.0.47/openapi.json) | [md](protect/v6.0.47/reference.md) | [docs](https://developer.ui.com/protect/v6.0.47) |
| `v6.0.41` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v6.0.41/openapi.json) | [md](protect/v6.0.41/reference.md) | [docs](https://developer.ui.com/protect/v6.0.41) |
| `v5.3.48` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v5.3.48/openapi.json) | [md](protect/v5.3.48/reference.md) | [docs](https://developer.ui.com/protect/v5.3.48) |
| `v5.3.45` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v5.3.45/openapi.json) | [md](protect/v5.3.45/reference.md) | [docs](https://developer.ui.com/protect/v5.3.45) |
| `v5.3.41` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v5.3.41/openapi.json) | [md](protect/v5.3.41/reference.md) | [docs](https://developer.ui.com/protect/v5.3.41) |
| `v5.3.38` | 12 | 35 | 25 | 2026-06-02 | [json](protect/v5.3.38/openapi.json) | [md](protect/v5.3.38/reference.md) | [docs](https://developer.ui.com/protect/v5.3.38) |
---
## Updating
```bash
python update_docs.py # every version of every app
python update_docs.py --latest-only # only the latest version of each app
python update_docs.py --app network # a specific app
python update_docs.py --dry-run # show what would change, without writing
python update_readme.py # refresh badges + catalog in the READMEs
python validate.py # validate integrity (JSON, catalog, links)
```
No browser or credentials required: `update_docs.py` reads the official `sitemap.xml`, discovers the `app/version` pairs, downloads each page's RSC payload (`RSC: 1` header) and extracts the embedded full OpenAPI. Pure Python standard library.
## π€ Automatic updates (CI)
The [`.github/workflows/update-docs.yml`](./.github/workflows/update-docs.yml) workflow runs daily (and on demand), regenerates everything and commits **only when the upstream docs change** - so new versions show up on their own as soon as Ubiquiti publishes them.