La collaboration API signifiait auparavant ouvrir une application lourde, attendre sa synchronisation, puis parcourir des panneaux pour voir ce qu'un coéquipier avait modifié. Vous n'avez plus besoin de tout cela. Si votre API est décrite par un fichier OpenAPI, la majeure partie du travail de collaboration est en réalité du travail textuel : le versionnement de la spécification, la révision d'un diff et la fusion d'un changement partagé. Tout cela tient dans le terminal.
Ce guide couvre les outils CLI légers qui gèrent ces trois tâches. Chaque outil présenté ici s'installe en quelques secondes, s'exécute avec une seule commande et s'intègre à Git ou à la CI. Pas d'interface graphique, pas de démon en arrière-plan, pas de configuration de poste pour toute l'équipe juste pour lire un journal des modifications. Pour avoir une vue plus complète des flux de travail d'équipe, commencez par notre tour d'horizon des outils de collaboration API ; cet article est le sous-ensemble axé sur le terminal.
Voici le cadre. La collaboration en ligne de commande se divise en trois parties : le versionnement de la spécification (qui a quelle version), la révision (qu'est-ce qui a changé et est-ce sûr), et les modifications partagées (fusionner les modifications d'une personne dans la source de vérité de chacun). Chaque outil ci-dessous fait une ou deux de ces tâches très bien. La spécification OpenAPI est le standard officiel que ces outils lisent et écrivent, c'est donc le langage partagé qui fait fonctionner l'ensemble. Vous obtiendrez sept outils, une installation réelle et une commande d'exemple pour chacun, ainsi qu'un tableau concis pour faire votre choix.
Qu'est-ce qui rend un outil CLI "léger" pour la collaboration API
La légèreté est une vraie exigence, pas une simple impression. Un outil est qualifié s'il répond à la plupart de ces critères :
- Petite installation. Un seul binaire, une invocation
npxou unnpm install -g. Pas d'installateur, pas de service à maintenir en marche. - Démarrage rapide. Il s'exécute et se termine, vous pouvez donc l'appeler dans un script ou un hook de pré-commit.
- Faible configuration. Il fonctionne avec un simple fichier OpenAPI avec une configuration nulle ou minimale. Pointez-le vers
openapi.yamlet c'est parti. - Axé sur le terminal. La sortie est destinée à être lue dans un terminal ou redirigée vers la CI, et non rendue dans un panneau web.
- Fait bien un seul travail. Différenciation, publication ou fusion ; pas une plateforme entière que vous devez adopter.
Les outils vont approximativement du plus petit et le plus ciblé au plus intégré. La dernière entrée est l'exception : un CLI de projet complet plutôt qu'un binaire à usage unique, inclus car il couvre le versionnement, la révision et la fusion en un seul endroit.
Git + un fichier de spécification (la base)
L'outil de collaboration le plus léger est celui que vous possédez déjà. Commitez votre fichier OpenAPI dans le dépôt à côté du code, et Git gère gratuitement le versionnement, l'historique et la révision. Une pull request contre openapi.yaml montre les lignes exactes qui ont changé, les coéquipiers commentent ces lignes, et la fusion représente le changement partagé. C'est toute l'idée derrière la collaboration API Git-native.
# Suivre la spécification dans le dépôt, puis examiner les changements comme n'importe quel code
git add openapi.yaml
git commit -m "Ajouter des paramètres de pagination à GET /orders"
git diff main -- openapi.yaml
Idéal pour : l'historique et la révision sans aucun nouvel outil. Chaque développeur le connaît déjà.
Limite honnête : les diffs Git bruts sur YAML sont bruyants. Une clé réordonnée ou un bloc ré-indenté ressemble à une modification même lorsque l'API est identique. C'est exactement le vide que les prochains outils comblent : ils différencient le sens de l'API, pas le texte du fichier.
oasdiff
oasdiff est un simple binaire Go qui compare deux spécifications OpenAPI et vous indique si le changement est cassant. Il est open source (Apache 2.0), détecte des centaines de types de changements distincts, et son code de sortie rend triviale la gestion d'une fusion. Exécutez-le en CI et un changement cassant fera échouer la compilation avant qu'il n'atteigne un coéquipier.
# Installation (macOS)
brew install oasdiff
# Faire échouer la compilation si la nouvelle spécification rompt les clients existants
oasdiff breaking main-spec.yaml pr-spec.yaml
# sortie 0 = sûr, sortie 1 = changements cassants détectés
Utilisez oasdiff changelog base.yaml revision.yaml pour un résumé lisible par l'homme de tout ce qui a changé, qu'il soit cassant ou non.
Idéal pour : la détection des changements cassants comme porte de fusion. Rapide, scriptable, aucun compte nécessaire.
Limite honnête : il compare et rapporte ; il ne publie pas de documentation ni ne gère de branches. C'est une tâche précise, bien exécutée.
Optic
Optic est un CLI installé via npm qui compare, linte et révise les modifications OpenAPI en tenant compte des flux de travail Git. Il est sous licence MIT et comprend $ref, oneOf, allOf, ainsi que d'autres formes de schémas qui posent problème aux comparaisons naïves. Là où oasdiff vous donne une porte d'entrée/de sortie, Optic s'oriente vers la conversation de révision : il peut comparer votre spécification de travail avec la version de votre branche principale et résumer les changements au niveau de l'API pour une PR.
# Installation
npm install -g @useoptic/optic
# Comparer la spécification actuelle à celle de la branche main
optic diff openapi.yaml --base main --check
Idéal pour : la révision structurée des changements dans les pull requests, avec des règles définissant ce qui constitue un changement cassant ou interdit.
Limite honnête : il est basé sur Node, donc plus lourd qu'un simple binaire Go, et en tirer le meilleur parti signifie adopter sa configuration et ses règles de vérification.
CLI Bump.sh
Le CLI Bump.sh publie et compare la documentation API depuis le terminal. La collaboration ici porte sur la documentation partagée et toujours à jour : vous deployez une nouvelle version lorsque la spécification change, et les coéquipiers et consommateurs lisent la même référence rendue. La commande diff affiche un journal des modifications entre la version publiée et votre fichier local, ce qui est utile à insérer dans un commentaire de PR. C'est un paquet Node (bump-cli), nécessite Node 20+, et preview et diff fonctionnent sans jeton.
# Installation
npm install -g bump-cli
# Publier une nouvelle version de la documentation partagée
bump deploy openapi.yaml --doc my-api --token $BUMP_TOKEN
# Ou simplement obtenir le journal des modifications entre les versions
bump diff openapi.yaml --doc my-api
Idéal pour : maintenir une documentation partagée et lisible par l'homme synchronisée avec la spécification, ainsi que des comparaisons (diffs) dans le terminal pour révision.
Limite honnête : la documentation hébergée et le flux de déploiement sont un produit payant de Bump.sh. Le CLI est le client ; la surface partagée réside sur leur plateforme.
CLI Redocly
Redocly CLI est une vaste boîte à outils OpenAPI : il linte, regroupe (bundle) et pousse les spécifications vers le registre Redocly (maintenant Reunite). La commande push est le levier de collaboration ; elle télécharge une version de spécification vers un registre partagé afin que le reste de l'organisation tire d'une source canonique unique au lieu de se passer des fichiers. Le regroupement est également important, car une spécification multi-fichiers avec des $ref devient un artefact propre que vos coéquipiers peuvent consommer.
# Aucune installation nécessaire ; exécuter via npx
npx @redocly/cli lint openapi.yaml
npx @redocly/cli bundle openapi.yaml -o dist/openapi.yaml
# Pousser une version vers le registre partagé (nécessite une clé API)
npx @redocly/cli push openapi.yaml --organization "Acme" --project "orders-api"
Idéal pour : le linting selon un style interne et la poussée d'une spécification source de vérité unique vers un registre partagé.
Limite honnête : lint et bundle sont gratuits et locaux, mais push et le registre font partie de la plateforme hébergée de Redocly. Pour des flux de travail d'édition de spécifications plus approfondis, consultez notre guide sur la collaboration pour l'édition de spécifications API.
CLI GitHub (gh)
Si votre révision se fait via des pull requests, le CLI GitHub apporte tout ce flux au terminal. Vous ouvrez la PR qui modifie la spécification, demandez des relecteurs et vérifiez le statut sans ouvrir de navigateur. Associez-le à oasdiff ou Optic dans un hook Git et la révision de la spécification devient une partie normale et scriptable de la révision de code.
# Ouvrir une PR pour le changement de spécification et taguer les relecteurs
gh pr create --title "Ajouter la pagination /orders" --body "Ajoute les paramètres page + limit"
gh pr review --approve
Idéal pour : piloter la conversation de révision et de fusion depuis le shell lorsque votre équipe est déjà sur GitHub.
Limite honnête : il gère la PR, pas la sémantique de l'API. Il ne sait pas si un changement est cassant ; c'est pour cela que vous connectez oasdiff ou Optic.
CLI Apidog
Le CLI Apidog est l'exception ici. Ce n'est pas un binaire à usage unique ; c'est un CLI de ressources de projet complet (npm install -g apidog-cli) qui accède aux mêmes données de conception, de versionnement et de collaboration que la plateforme Apidog, depuis le terminal. Pour la collaboration, trois groupes de commandes sont importants : branch, merge-request et git-connection.
Apidog n'est pas open source ; c'est un produit commercial avec un niveau gratuit. Mais si vous préférez ne pas assembler manuellement un outil de comparaison, un éditeur de documentation et un registre, le niveau gratuit et le CLI vous offrent des branches de spécifications, un flux de révision et une sauvegarde Git en un seul endroit.
Commencez par une branche isolée. L'option --type choisit le modèle de branche : sprint pour une fonctionnalité ou une release limitée, general pour le travail en cours, ou ai pour une branche isolée où un agent modifie les ressources sans toucher à votre source.
# Installer et authentifier
npm install -g apidog-cli
apidog login --with-token $APIDOG_TOKEN
# Démarrer une branche de sprint pour un changement partagé
apidog branch create --type sprint --name "orders-pagination"
Lorsque la branche est prête, ouvrez une demande de fusion (merge request) au lieu de fusionner directement. C'est la porte de révision : lorsque la branche `main` est protégée, un éditeur crée la demande et un administrateur l'approuve avant que quoi que ce soit ne soit intégré. Les fusions ne sélectionnent que les ressources que vous nommez, de sorte qu'un changement partagé reste ciblé.
# Proposer le changement pour révision (sécurisé contre une branche main protégée)
apidog merge-request create --branch "orders-pagination" --endpoint-ids 1,2
Et git-connection sauvegarde le fichier OpenAPI de chaque module vers un dépôt Git (GitHub, GitLab ou Azure DevOps sont supportés), de sorte que la spécification dispose d'un miroir en gestion de version à côté de votre code.
# Connecter les spécifications du projet à un dépôt Git pour la sauvegarde + l'historique
apidog git-connection --help
La sortie est un JSON structuré avec agentHints.nextSteps, ce qui facilite l'utilisation du CLI à partir de scripts ou d'un agent IA. Pour la référence complète des commandes, consultez le guide complet du CLI Apidog.
Idéal pour : un flux intégré de versionnement + révision + fusion sans assembler d'outils distincts, ainsi que des modèles de branches conçus pour les équipes et les agents.
Limite honnête : c'est un CLI de plateforme, c'est donc l'installation la plus lourde ici et il communique avec votre projet Apidog plutôt qu'avec un simple fichier local. Il n'a pas non plus de linter OpenAPI ; utilisez Redocly ou Spectral pour les règles de style. Lorsque votre équipe a besoin d'un accès basé sur les rôles en plus des branches, renseignez-vous sur la collaboration API sécurisée avec RBAC.
Comment choisir
Faites correspondre l'outil à la tâche de collaboration, et non l'inverse.
| Outil | Idéal pour | Installation | Open source ? | Notes |
|---|---|---|---|---|
| Git + fichier de spécification | Historique et révision, aucun nouvel outil | déjà installé | oui (Git) | Bruyant sur YAML ; à coupler avec un diff sémantique |
| oasdiff | Porte de fusion pour les changements cassants | brew install oasdiff |
oui (Apache 2.0) | Le code de sortie fait échouer la CI en cas de ruptures |
| Optic | Révision structurée des changements dans les PR | npm i -g @useoptic/optic |
oui (MIT) | Comprend $ref, oneOf, etc. |
| CLI Bump.sh | Publication de docs partagées + diffs | npm i -g bump-cli |
CLI ouvert, hébergement payant | Node 20+ ; diff/preview ne nécessitent pas de jeton |
| CLI Redocly | Lint, bundle, push vers le registre | npx @redocly/cli |
CLI ouvert, registre payant | push nécessite une clé API |
| CLI GitHub | Pilotage de la révision de PR depuis le shell | brew install gh |
oui (MIT) | Gère la PR, pas la sémantique API |
| CLI Apidog | Versionnement + révision + fusion intégrés | npm i -g apidog-cli |
non (niveau gratuit) | branch / merge-request / git-connection |
La plupart des équipes finissent par en combiner plusieurs. Une pile légère courante : committer la spécification sur Git, exécuter oasdiff ou Optic comme porte de fusion, et publier avec Bump.sh ou Redocly. Si vous préférez gérer le branching, la révision et la fusion depuis un seul CLI, Apidog couvre les trois. Pour un aperçu plus large du choix d'une pile, notre guide des outils d'équipe pour la collaboration API compare les options.
En résumé
La collaboration depuis le terminal se fait en trois étapes : versionner la spécification, réviser le diff, fusionner le changement partagé. Git gère la première, oasdiff et Optic affinent la seconde, Bump.sh et Redocly publient le résultat, et gh pilote la PR. Le CLI Apidog intègre le versionnement, la révision et la fusion en un seul ensemble de commandes avec des modèles de branches conçus pour les équipes et les agents.
Vous souhaitez une approche intégrée sans assembler des outils ? Téléchargez Apidog, installez apidog-cli, et exécutez vos premières commandes apidog branch create et merge-request depuis le terminal dans lequel vous travaillez déjà. L'intégration du CLI dans la CI est une étape rapide à partir de là.
