Nous avions 182 endpoints API. Nous avions aussi un fichier TypeScript maintenu à la main appelé api-endpoints.ts qui décrivait ces endpoints pour la page de documentation API du tableau de bord. Il contenait plus de 180 entrées. Et il était faux. Pas dramatiquement faux -- la plupart des entrées étaient à peu près correctes -- mais le genre de faux qui s'accumule silencieusement.
Nous avons utilisé utoipa pour auto-générer une spécification OpenAPI 3.1 directement depuis les annotations de handlers Rust. Puis nous avons utilisé cette spécification pour trois choses : la documentation API (rendue dans le tableau de bord), un playground interactif (testez les endpoints directement depuis le navigateur), et les définitions d'outils MCP (générées automatiquement depuis les schémas OpenAPI).
Le résultat : une seule source de vérité. Quand un handler change, la spécification OpenAPI change automatiquement, la documentation se met à jour, le playground reflète les nouveaux paramètres, et les outils MCP s'adaptent. Zéro dérive. Zéro documentation périmée.
Prochain dans la série : Le CLI sh0 : 10 commandes qui reflètent le tableau de bord.