Quickstart

Minimal client setup

import asyncio
import aiohttp
from aiopnsense import OPNsenseClient

async def main() -> None:
    async with aiohttp.ClientSession() as session, OPNsenseClient(
        url="https://opnsense.example.com",
        username="YOUR_API_KEY",
        password="YOUR_API_SECRET",
        session=session,
        opts={"verify_ssl": True},
    ) as client:
        system_info = await client.get_system_info()
        print(f"Firewall name: {system_info.get('name')}")

asyncio.run(main())

Guidance

Use async with for normal lifecycle management. Entering the client context already calls validate(). Call await client.validate() yourself only when you want an explicit startup check before reusing a long-lived client outside the context manager.

Explicit validation

import asyncio
import aiohttp
from aiopnsense import OPNsenseClient

async def main() -> None:
    async with aiohttp.ClientSession() as session:
        client = OPNsenseClient(
            url="https://opnsense.example.com",
            username="YOUR_API_KEY",
            password="YOUR_API_SECRET",
            session=session,
            opts={"verify_ssl": True},
        )
        try:
            await client.validate()
            system_info = await client.get_system_info()
            print(f"Firewall name: {system_info.get('name')}")
        finally:
            await client.async_close()

asyncio.run(main())