43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# BE9700 Router API
|
|
|
|
A stateless Node.js proxy and interactive API documentation server for the
|
|
**TP-Link BE9700 WiFi 7** router.
|
|
|
|
## What it does
|
|
|
|
- Exposes the router's internal API as a clean, resource-oriented REST surface
|
|
(`/api/*`) covering **203 endpoints** across wireless bands (2.4 GHz / 5 GHz /
|
|
6 GHz), LAN/DHCP, NAT, UPnP, system time, and diagnostics.
|
|
- Serves **interactive Scalar API docs** at `/docs` — explore and try every
|
|
endpoint directly in the browser.
|
|
- Returns the OpenAPI 3.1 specification at `/openapi.json` for use with any
|
|
compatible tooling.
|
|
- Health/status JSON at `/`.
|
|
|
|
## Stateless header-auth model
|
|
|
|
No router credentials are stored in the container or in Runtipi form fields.
|
|
Every request to `/api/*` must carry:
|
|
|
|
| Header | Purpose |
|
|
|--------|---------|
|
|
| `X-Router-Host` | Router IP or hostname (e.g. `192.168.0.1`) |
|
|
| `X-Router-Password` | Router admin password (for fresh sessions) |
|
|
| `X-Router-Session` | Reuse a session token returned by a previous call (JSON) |
|
|
|
|
The container holds no stored secrets, but the `/api/*` surface controls your
|
|
router and CORS is open — anyone who can reach the service and supply a valid
|
|
router password can change router settings. Keep this app LAN-only unless you
|
|
place an auth middleware (e.g. Traefik forward-auth / Authentik) in front of it
|
|
before exposing it to the internet.
|
|
|
|
## Quick start
|
|
|
|
Once installed, open the **Scalar docs** at `http://<your-server>:8347/docs`
|
|
and authenticate each request with the `X-Router-Host` and
|
|
`X-Router-Password` headers.
|
|
|
|
## Source
|
|
|
|
`https://git.alexzaw.dev/alexz/be9700-api`
|