DEV Community

Cover image for Collaboration OpenAPI sans abandonner Git : Comment les équipes basées sur les fichiers collaborent
Antoine Laurent
Antoine Laurent

Posted on • Originally published at apidog.com

Collaboration OpenAPI sans abandonner Git : Comment les équipes basées sur les fichiers collaborent

La collaboration d’équipe autour d’OpenAPI ne devrait pas s’arrêter au moment où votre spécification arrive dans Git. Git reste l’endroit idéal pour versionner un fichier openapi.yaml ou openapi.json, mais ses outils de revue sont pensés pour des ingénieurs qui relisent du code. Les QA, développeurs frontend, équipes mobile ou chefs de produit ont besoin de commenter des endpoints, tester des mocks et suivre les changements sans lire une diff YAML ligne par ligne. L’article api-spec-as-code explique pourquoi Git est une bonne source de vérité. Ici, on se concentre sur la couche de collaboration à ajouter au-dessus de Git, avec des outils comme Apidog, sans déplacer la spécification hors du dépôt.

Essayez Apidog aujourd'hui

Le problème : Git versionne la spec, mais ne suffit pas à collaborer

Git gère très bien :

  • l’historique des changements ;
  • les branches ;
  • les pull requests ;
  • les diffs ;
  • les règles de merge.

Mais une spécification OpenAPI partagée sert aussi de contrat produit, de documentation, de base de test et de support de discussion. C’est là que Git seul devient limité.

1. Les commentaires de conception ne sont pas naturels pour les non-ingénieurs

Un QA qui remarque une erreur incohérente sur POST /payments ne devrait pas avoir à commenter la ligne 247 de openapi.yaml.

Dans une PR GitHub, la discussion est liée à une ligne de diff. Pour une équipe produit ou QA, il est plus utile de commenter directement :

  • un endpoint ;
  • un schéma ;
  • un exemple de réponse ;
  • un code d’erreur ;
  • une règle métier visible dans la documentation.

2. Les mocks ne sont pas générés automatiquement depuis les branches

Un développeur frontend peut avoir besoin de tester une nouvelle version de l’API avant que le backend ne soit prêt.

Avec un fichier YAML brut dans Git, il faut généralement ajouter une étape manuelle :

npx @stoplight/prism-cli mock api/openapi.yaml
Enter fullscreen mode Exit fullscreen mode

Cela fonctionne, mais ce n’est pas un flux de collaboration complet. Chaque branche devrait pouvoir exposer son propre mock sans intervention manuelle.

3. Les notifications Git sont trop génériques

Un webhook Git peut dire : “openapi.yaml a changé”.

Mais les consommateurs de l’API veulent savoir :

  • quel endpoint a changé ;
  • si le changement est cassant ;
  • quelle équipe est concernée ;
  • quel environnement ou mock utiliser ;
  • où relire la documentation mise à jour.

4. Le contrôle d’accès à la documentation n’est pas natif dans Git

Un dépôt privé protège le fichier source, mais ne résout pas tous les cas de partage documentaire.

Exemples fréquents :

  • un partenaire externe doit voir uniquement les endpoints publics ;
  • l’équipe mobile doit accéder aux APIs client, pas aux APIs d’administration ;
  • les QA doivent tester les mocks sans accès en écriture au dépôt.

La conclusion n’est pas “remplacer Git”. La bonne architecture est plutôt : Git comme source de vérité, plus une couche de collaboration connectée au fichier.

Ce qu’une couche de collaboration doit ajouter au-dessus de Git

Une couche de collaboration OpenAPI doit relier le fichier committé à des usages concrets :

  • documentation interactive ;
  • commentaires métier et techniques ;
  • mocks ;
  • tests de contrat ;
  • notifications ;
  • contrôle d’accès ;
  • rapports CI/CD.
Catégorie Exemples Points forts Ce qu’ils ajoutent au-dessus de Git
Plateformes de spécification hébergées Stoplight, SwaggerHub UI soignée, commentaires, accès documentaire Maintiennent souvent leur propre copie de la spécification ; Git peut devenir secondaire
Couches de collaboration basées sur les fichiers Apidog Spec-First, Redocly Lisent le fichier committé ; Git reste l’autorité Ajoutent documentation, mocks, collaboration et CI au-dessus du fichier
Clients API natifs de Git Bruno, Insomnia Collections as code, bonne synchronisation fichier Restent surtout centrés sur l’exécution de requêtes

Ce tableau aide à éviter une erreur classique : choisir un outil pour une seule fonctionnalité, puis découvrir qu’il ne couvre pas les mocks, les notifications ou la documentation d’équipe.

Bruno : solide côté Git, mais centré sur la requête

Bruno mérite d’être évalué objectivement. Bruno Ultimate propose notamment :

  • stockage natif des collections dans des fichiers ;
  • intégration Git ;
  • SSO ;
  • SCIM ;
  • hooks de gestion de secrets ;
  • journalisation d’audit.

Si votre besoin principal est d’exécuter des requêtes et de versionner des collections API, Bruno est une option robuste.

En revanche, Bruno ne couvre pas automatiquement toute la chaîne OpenAPI collaborative :

  • génération automatique de documentation depuis un fichier OpenAPI committé ;
  • mocks spécifiques aux branches ;
  • routage de notifications par endpoint ou équipe ;
  • couche documentaire avec commentaires orientés produit/QA.

Si vous utilisez déjà Stoplight pour la documentation et les mocks, ajouter Bruno ne remplace pas forcément Stoplight. Vous ajoutez plutôt un outil de requêtes à côté de votre plateforme documentaire.

Implémenter un workflow Spec-First avec Apidog

Le mode Spec-First d’Apidog, actuellement en bêta, vise ce modèle : le fichier OpenAPI reste dans Git, et Apidog lit ce fichier comme source de vérité pour fournir la couche de collaboration.

Voici un flux de travail pratique.

Étape 1 : stocker la spécification dans Git

Commencez par garder une structure explicite dans le dépôt :

.
├── api/
│   └── openapi.yaml
├── .github/
│   └── workflows/
│       └── api-spec.yml
└── .spectral.yaml
Enter fullscreen mode Exit fullscreen mode

Exemple minimal de fichier api/openapi.yaml :

openapi: "3.1.0"
info:
  title: Payments API
  version: "2.4.0"

paths:
  /payments:
    post:
      summary: Create a payment
      operationId: createPayment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PaymentRequest"
      responses:
        "201":
          description: Payment created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponse"
        "422":
          description: Validation error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationError"

components:
  schemas:
    PaymentRequest:
      type: object
      required: [amount, currency, source]
      properties:
        amount:
          type: integer
          description: Amount in smallest currency unit, e.g. cents
        currency:
          type: string
          enum: [usd, eur, gbp]
        source:
          type: string
          description: Payment method token

    PaymentResponse:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum: [pending, completed, failed]

    ValidationError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
Enter fullscreen mode Exit fullscreen mode

Ensuite, connectez Apidog à votre dépôt GitHub, GitLab ou Bitbucket, puis indiquez le chemin du fichier OpenAPI. Le guide apidog-git-integration-sync détaille les étapes de synchronisation.

Étape 2 : relire la spécification comme documentation, pas comme diff YAML

Une fois la spec liée, Apidog peut la rendre sous forme de documentation interactive. L’équipe peut alors commenter directement les éléments utiles :

  • POST /payments ;
  • le schéma PaymentRequest ;
  • une réponse 422 ;
  • un exemple JSON ;
  • un champ obligatoire manquant.

Exemple de commentaire utile côté QA :

Le header Idempotency-Key devrait-il être obligatoire pour éviter les doubles paiements ?

Ce commentaire est plus exploitable s’il est attaché à POST /payments qu’à une ligne YAML.

Quand l’ingénieur met à jour openapi.yaml et pousse un commit, le projet Apidog lié reflète le changement. La discussion reste attachée à l’élément de spécification.

Étape 3 : exposer des mocks par branche

Avec un workflow Spec-First, une branche peut correspondre à une version testable de la spec.

Exemple :

git checkout -b feature/payment-v2
Enter fullscreen mode Exit fullscreen mode

Vous modifiez ensuite le schéma :

PaymentRequest:
  type: object
  required: [amount, currency, source, customerId]
  properties:
    amount:
      type: integer
    currency:
      type: string
      enum: [usd, eur, gbp]
    source:
      type: string
    customerId:
      type: string
      description: Customer identifier used for reconciliation
Enter fullscreen mode Exit fullscreen mode

La branche feature/payment-v2 peut alors exposer un mock distinct du mock de production.

Résultat pour le frontend :

  • pas besoin d’attendre l’implémentation backend ;
  • pas besoin de lancer un mock local manuellement ;
  • possibilité de tester le nouveau contrat API depuis la branche.

Étape 4 : router les notifications aux bonnes équipes

Lorsqu’un endpoint change, toutes les équipes ne doivent pas forcément recevoir la même notification.

Exemple de routage utile :

Changement Canal
/payments/** #frontend-payments, #mobile-payments, #qa-payments
/admin/** #backend-admin
/public/** #partner-api

Pour les plateformes de chat, vous pouvez utiliser :

À vérifier pendant un essai Apidog :

  • routage par préfixe de chemin ;
  • routage par tag OpenAPI ;
  • granularité des notifications ;
  • gestion des changements cassants ;
  • correspondance avec vos rôles internes.

Connecter la collaboration OpenAPI au CI/CD

La couche de collaboration devient beaucoup plus utile lorsqu’elle est intégrée au pipeline.

Un pipeline minimal devrait faire au moins deux choses :

  1. valider la qualité de la spécification ;
  2. exécuter des tests de contrat contre l’API ou l’environnement cible.

Exemple avec GitHub Actions, Spectral et Apidog CLI :

# .github/workflows/api-spec.yml
name: API spec validation and test

on: [push, pull_request]

jobs:
  validate-and-test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Validate OpenAPI spec with Spectral
        run: |
          npm install -g @stoplight/spectral-cli
          spectral lint api/openapi.yaml --ruleset .spectral.yaml

      - name: Run Apidog contract tests
        env:
          APIDOG_TOKEN: ${{ secrets.APIDOG_TOKEN }}
        run: |
          npx apidog-cli run \
            --project-id ${{ vars.APIDOG_PROJECT_ID }} \
            --test-suite "Payments API smoke" \
            --environment staging
Enter fullscreen mode Exit fullscreen mode

Exemple simple de règles Spectral :

extends: ["spectral:oas"]

rules:
  operation-operationId:
    severity: error

  operation-description:
    severity: warn

  no-ambiguous-422:
    description: Les réponses 422 doivent référencer ValidationError
    given: "$.paths[*][*].responses['422'].content.application/json.schema.$ref"
    then:
      function: pattern
      functionOptions:
        match: "#/components/schemas/ValidationError"
Enter fullscreen mode Exit fullscreen mode

La spécification OpenAPI reste la référence canonique de ce que votre API promet. Si le service déployé ne respecte plus cette promesse, le pipeline doit échouer.

Pour un workflow Git-native plus complet, consultez git-native-api-workflow.

Comparaison des options pour une équipe qui garde OpenAPI dans Git

Capacité Stoplight SwaggerHub Apidog Spec-First, bêta
Git comme source faisant autorité Facultatif Facultatif Oui, via Spec-First
Commentaires de conception Oui Oui Oui
Mocks spécifiques à la branche Oui Partiel Oui
Accès à la documentation basé sur les rôles Oui Oui À vérifier lors de l’essai
Réutilisation de schémas inter-projets Oui Oui À vérifier lors de l’essai
Tests de contrat CI/CD Via Prism Limité Oui, via Apidog CLI
Règles de linter personnalisées Via Spectral Limité À vérifier lors de l’essai
SSO/SCIM Plans payants Entreprise À vérifier lors de l’essai
Routage des notifications Via webhooks Limité Oui
Natif fichier, sans double copie Non Non Oui, via Spec-First

Pour une comparaison plus large avec SwaggerHub, consultez swaggerhub-vs-apidog-collaboration.

Checklist d’implémentation

Avant de déployer ce workflow sur toute l’équipe, testez-le sur une API pilote.

Côté dépôt

  • [ ] Le fichier OpenAPI est dans un chemin stable, par exemple api/openapi.yaml.
  • [ ] Les changements passent par branches et pull requests.
  • [ ] Un linter OpenAPI tourne en CI.
  • [ ] Les secrets de CI sont stockés dans GitHub Actions, GitLab CI ou équivalent.

Côté collaboration

  • [ ] Les QA peuvent commenter sans modifier le YAML.
  • [ ] Les développeurs frontend peuvent accéder à un mock par branche.
  • [ ] Les changements d’endpoints déclenchent des notifications ciblées.
  • [ ] Les accès documentaires correspondent aux rôles de l’organisation.

Côté CI/CD

  • [ ] La spec est validée à chaque PR.
  • [ ] Les tests de contrat tournent sur l’environnement cible.
  • [ ] Les erreurs de contrat bloquent le merge ou le déploiement.
  • [ ] Les rapports sont visibles par l’équipe concernée.

FAQ

Peut-on continuer à utiliser les revues de PR Git avec les commentaires Apidog ?

Oui. Les deux flux répondent à des besoins différents.

Les PR Git restent utiles pour les ingénieurs qui relisent :

  • la structure YAML ;
  • les changements de schémas ;
  • les conventions internes ;
  • les impacts techniques.

Les commentaires Apidog sont plus adaptés aux parties prenantes qui relisent la spécification comme documentation : QA, produit, frontend, mobile.

Dans les deux cas, le fichier committé reste la source unique de vérité.

Que se passe-t-il si quelqu’un modifie la spécification dans Apidog ?

En mode Spec-First, les modifications effectuées via l’interface Apidog peuvent être renvoyées vers Git sous forme de commits. Le flux cible est :

  1. modification dans l’interface ;
  2. commit vers une branche ;
  3. revue de PR dans Git ;
  4. merge ;
  5. synchronisation de la documentation et des mocks.

Vérifiez ce comportement pendant votre essai, car le sens de synchronisation exact influence votre gouvernance : Git vers Apidog, Apidog vers Git, ou les deux.

Pour une présentation du mode Spec-First, consultez spec-first-mode-apidog-beta-walkthrough.

Le mode Spec-First fonctionne-t-il avec des monorepos ?

Les monorepos contiennent souvent plusieurs fichiers OpenAPI :

apis/
├── payments/openapi.yaml
├── billing/openapi.yaml
└── admin/openapi.yaml
Enter fullscreen mode Exit fullscreen mode

Apidog prend en charge plusieurs projets, chacun pouvant être lié à un chemin de fichier différent.

À vérifier selon votre architecture :

  • un projet Apidog peut-il couvrir plusieurs fichiers ;
  • vos règles de lint peuvent-elles être partagées ;
  • vos mocks doivent-ils être séparés par domaine ;
  • vos droits d’accès suivent-ils la structure du monorepo.

Comment comparer Apidog à Redocly ?

Redocly CLI est solide pour :

  • le linting ;
  • le bundling ;
  • la génération de documentation ;
  • les workflows basés sur des fichiers.

La plateforme Redocly ajoute des fonctionnalités d’équipe et de revue selon les plans.

La différence à évaluer avec Apidog concerne la couverture combinée :

  • mocks ;
  • tests de contrat ;
  • documentation ;
  • notifications ;
  • collaboration ;
  • lecture depuis le fichier committé.

Le bon choix dépend de votre besoin principal : documentation statique, gouvernance OpenAPI, mocks, tests ou collaboration multi-rôles.

Et les outils de l’OpenAPI Initiative ?

L’OpenAPI Initiative publie la spécification OpenAPI, pas une plateforme de collaboration.

Vous devez donc choisir un outil de l’écosystème. Si votre API utilise OpenAPI 3.1, testez explicitement la compatibilité avec OpenAPI 3.1, car le niveau de support varie selon les outils.

Conclusion

Si vos spécifications OpenAPI sont déjà dans Git, vous avez résolu le problème du versionnement. Il reste à résoudre le problème de collaboration.

Une équipe API a besoin de plus que des diffs YAML :

  • commentaires directement sur les endpoints ;
  • mocks par branche ;
  • notifications ciblées ;
  • documentation contrôlée par rôle ;
  • tests de contrat en CI/CD.

La bonne approche consiste à garder Git comme source de vérité et à ajouter une couche de collaboration au-dessus.

Si vous utilisez aujourd’hui Git pour versionner la spec et un autre outil pour la documentation ou les mocks, le Mode Spec-First d’Apidog vise justement à consolider ce workflow. Comme il est encore en bêta, testez d’abord les points critiques pour votre équipe : contrôle d’accès, réutilisation des schémas, granularité des notifications et intégration CI/CD.

Téléchargez Apidog, connectez-le à une branche de votre dépôt OpenAPI existant, puis vérifiez si la couche de collaboration s’intègre naturellement au workflow Git que votre équipe utilise déjà.

Top comments (0)