Documentation de l'API Bbox

Introduction

Dans le cadre d'un projet d'auto-hébergement, j'ai voulu étudier l'interface d'administration du routeur que me loue Bouygues Telecom, mon fournisseur d'accès internet FttH depuis 2021.

Je suis tombé sur cet article dans lequel il est mentionné une documentation à une adresse qui n'existe plus. Elle semble également absente du catalogue.

Puisqu'il n'existe plus aucune documentation officielle, je me suis mis en tête de creuser le sujet de mon côté.

1. Travaux précédents

Il existe plusieurs projets GitHub faisant usage de cette API routeur Bbox.

ProjetDernière activitéStarsLangage
pybbox2016-10-128Python
go-bbox2017-05-113Golang
bboxapi-router2018-11-089Java
bbox2023-03-204Python
bbox-exporter2026-06-213Typescript

Notons que le seul projet encore actif à l'heure actuelle est bbox-exporter. Dans ce projet, les routes utilisées sont décrites dans un objet dénommé bboxApiRoutes situé dans src/bbox/constants.ts.

Certains autres projets disposent d'une documentation plus ou moins fournie, et plus ou moins à jour. Cela permet de se faire une première idée sur les catégories principales de l'API et sur les mécanismes d'authentification.

2. Analyse d'une session Web

Pour compléter et valider cet inventaire, j'ai effectué une capture de session HTTP en utilisant l'outil Réseau de Firefox. J'ai exporté cette capture au format HAR, et converti le fichier en utilisant le projet har2openapi.

Cela m'a donné une première version de spécification OpenAPI.

3. Exploitation des résultats

Une fois retravaillée, cette spécification peut être servie par swagger-ui pour servir de documentation interactive. Il reste toutefois quelques points à régler pour pouvoir utiliser la page en tant que client d'API en direct :

On peut régler ces deux problèmes à la fois en plaçant l'API routeur Bbox derrière un reverse proxy. Cette méthode est décrite dans le projet associé.

La documentation d'API est aussi disponible ici en lecture seule.

Conclusion

A partir de cette spécification, il devrait être possible de générer automatiquement un client avec OpenAPI Generator. Cool, non ? 🙂

Références