Metadata-Version: 2.4
Name: eero-api
Version: 4.0.2
Summary: Modern async Python client for Eero network management
Author: Eero API Contributors
Maintainer: Eero API Contributors
License: MIT
Project-URL: Homepage, https://github.com/fulviofreitas/eero-api
Project-URL: Documentation, https://github.com/fulviofreitas/eero-api/wiki
Project-URL: Repository, https://github.com/fulviofreitas/eero-api
Project-URL: Changelog, https://github.com/fulviofreitas/eero-api/blob/master/CHANGELOG.md
Project-URL: Issues, https://github.com/fulviofreitas/eero-api/issues
Keywords: eero,mesh-wifi,wifi,network,async,asyncio,home-automation,smart-home,api-client,iot
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Home Automation
Classifier: Topic :: Internet
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Networking
Classifier: Typing :: Typed
Classifier: Framework :: AsyncIO
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohttp>=3.8.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: keyring>=23.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: rich>=13.0.0; extra == "dev"
Requires-Dist: click>=8.0.0; extra == "dev"
Requires-Dist: commitizen>=3.0.0; extra == "dev"
Dynamic: license-file

<div align="center">

# 🐍 Eero API

**Your async Python toolkit for Eero mesh networks**

[![Python 3.12+](https://img.shields.io/badge/python-3.12+-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://python.org)
[![PyPI](https://img.shields.io/pypi/v/eero-api?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/eero-api/)
[![License](https://img.shields.io/badge/license-MIT-22c55e?style=for-the-badge)](LICENSE)

---

_A modern, async-first Python SDK for the Eero mesh WiFi API._  
_Raw JSON responses, system keyring integration, and smart caching._

[Get Started](#-quick-start) · [Documentation](#-docs) · [Ecosystem](#-ecosystem) · [License](#-license)

</div>

---

## ⚡ Why Eero API?

- 🚀 **Async-first** — Non-blocking, blazing fast
- 🔐 **Secure** — System keyring for credentials
- 📦 **Raw JSON** — Direct API responses, no transformations
- ⚡ **Smart caching** — Snappy responses

## 📦 Install

```bash
pip install eero-api
# or with uv
uv add eero-api
```

## 🚀 Quick Start

```python
import asyncio
from eero import EeroClient

async def main():
    async with EeroClient() as client:
        if not client.is_authenticated:
            await client.login("you@example.com")
            await client.verify(input("Code: "))
        
        # All methods return raw JSON responses
        response = await client.get_networks()
        networks = response.get("data", {}).get("networks", [])
        
        for network in networks:
            print(f"📶 {network['name']}: {network.get('status')}")

asyncio.run(main())
```

> 💡 Credentials are auto-saved to your system keyring

## 📄 Raw Response Format

All API methods return the exact JSON from Eero's API:

```python
{
    "meta": {"code": 200, "server_time": "..."},
    "data": {
        # Endpoint-specific payload
    }
}
```

See [MIGRATION.md](MIGRATION.md) for details on the raw response architecture.

## 📚 Docs

| Guide | What's inside |
|-------|---------------|
| **[📖 Python API](../../wiki/Python-API)** | Full API reference |
| **[⚙️ Configuration](../../wiki/Configuration)** | Auth & settings |
| **[🔧 Troubleshooting](../../wiki/Troubleshooting)** | Common fixes |
| **[🔄 Migration Guide](MIGRATION.md)** | v1.x → v2.0 migration |
| **[🏠 Wiki Home](../../wiki)** | All documentation |

## 🔗 Ecosystem

| Project | Description |
|---------|-------------|
| **[🖥️ eero-cli](https://github.com/fulviofreitas/eero-cli)** | Terminal interface for Eero networks |
| **[🛜 eero-ui](https://github.com/fulviofreitas/eero-ui)** | Svelte dashboard for network management |
| **[📊 eero-prometheus-exporter](https://github.com/fulviofreitas/eero-prometheus-exporter)** | Prometheus metrics for monitoring |

## ⚠️ Important Notes

> **Unofficial Project**: This library uses reverse-engineered APIs and is not affiliated with or endorsed by Eero.

> **Amazon Login Limitation**: If your Eero account uses Amazon for login, this library may not work directly due to API limitations. **Workaround**: Have someone in your household create a standard Eero account (with email/password) and invite them as an admin to your network. Then use those credentials to authenticate.

## 📄 License

[MIT](LICENSE) — Use it, fork it, build cool stuff 🎉

---

<div align="center">

## 📊 Repository Metrics

![Repository Metrics](./metrics.repository.svg)

</div>
