docs: spec — drop unused VPN servers call, make client/device counts nullable

This commit is contained in:
zachary committed 2026-09-08 15:18:32 +02:00
1 parent b486196f2d
commit 1026890e33
1 file changed
+9 -4
@@ -56,7 +56,7 @@ refusée avec un `401` sur cette API — les deux systèmes de clés sont distin
| — | **`limit` est plafonné à 200.** Une demande à 1000 renvoie `limit: 200`. | mesuré |
| `GET /sites/{id}/devices` | `state`, `model`, `macAddress`, `firmwareVersion`, `firmwareUpdatable`, `features` | 6 équipements |
| `GET /sites/{id}/devices/{id}/statistics/latest` | `uptimeSec`, `cpuUtilizationPct`, `memoryUtilizationPct`, `uplink.{tx,rx}RateBps` | — |
| `GET /sites/{id}/vpn/servers` | `type`, `enabled` | 1 serveur WireGuard actif |
| `GET /sites/{id}/vpn/servers` | `type`, `enabled` | 1 serveur WireGuard actif — **non consommé en v1**, voir §12 |
| `GET /sites/{id}/wans` | `id`, `name` **uniquement** — inexploitable pour l'état | 2 WAN |
**Types de clients** (discriminant `type`) : `WIRED`, `WIRELESS`, `VPN`,
@@ -149,20 +149,23 @@ export interface UnifiOsSummary {
} | null;
};
/** `null` si l'appel a échoué. Surtout pas un compteur à zéro : le lecteur
* ne pourrait pas distinguer « échec » de « aucun client connecté ». */
clients: {
total: number;
wired: number;
wireless: number;
vpn: number; // VPN + TELEPORT
guests: number; // access.type === "GUEST", tous types confondus
};
} | null;
/** `null` si l'appel a échoué, pour la même raison. */
devices: {
total: number;
online: number;
offline: number;
firmwareUpdatable: number;
};
} | null;
gateway: {
name: string;
@@ -270,7 +273,6 @@ appels partagent la même configuration.
3. Promise.allSettled([
GET /sites/{id}/clients?limit=200 → comptage par type (voir §7)
GET /sites/{id}/devices → états, firmwares, gateway
GET /sites/{id}/vpn/servers → VPN actif
])
4. GET /sites/{id}/devices/{gatewayId}/statistics/latest (si gateway trouvé)
5. si clé cloud présente :
@@ -446,6 +448,9 @@ Volontairement exclus de cette spec :
- **Widget cloud multi-site** (SD-WAN, fabric, vue consolidée de plusieurs
consoles). Idée retenue pour un projet ultérieur, qui réutilisera
`unifi-sm-api.ts`. Sa mention ici sert à ne pas le construire maintenant.
- **État des serveurs VPN.** L'endpoint existe et fonctionne, mais le contrat §4
n'expose pas de champ pour lui et la disposition retenue au §8 ne l'affiche pas.
Le collecter sans l'afficher serait du code mort.
- **Actions d'écriture** (adoption d'équipement, redémarrage de port, gestion de
vouchers). L'API les expose ; l'intégration reste en lecture seule.
- **Traduction au-delà de l'anglais.** Conséquence de D1.