DEV Community

Cover image for Colaboración OpenAPI sin abandonar Git: Cómo colaboran los equipos basados en archivos
Roobia
Roobia

Posted on • Originally published at apidog.com

Colaboración OpenAPI sin abandonar Git: Cómo colaboran los equipos basados en archivos

La colaboración en OpenAPI suele romperse cuando la especificación pasa a Git. Git es el lugar correcto para versionar openapi.yaml o openapi.json, pero las revisiones de Git están pensadas para ingenieros revisando código, no para QA, frontend o producto revisando contratos de API.

Prueba Apidog hoy

Si su equipo ya trabaja con especificaciones OpenAPI como archivos en un repositorio, probablemente conoce este flujo: la especificación está versionada, pero los no ingenieros revisan una vista previa en el navegador, preguntan por Slack y esperan a que backend actualice el YAML antes de poder probar. La publicación api-spec-as-code explica por qué Git debe ser la fuente de verdad. Aquí nos enfocamos en la parte práctica: cómo cerrar la brecha de colaboración sin sacar la especificación de Git, usando una capa como Apidog.

La brecha que Git por sí solo no cierra

Git resuelve historial, ramas, diffs y pull requests. Pero cuando toda la organización trabaja sobre una especificación compartida, aparecen necesidades que Git no cubre de forma nativa.

1. Comentarios de diseño para no ingenieros

Un QA puede detectar que el esquema de error de POST /payments no coincide con otros endpoints, pero comentar la línea 247 de openapi.yaml en un PR no es el flujo más natural para alguien que revisa la API como documentación.

Lo que necesita el equipo:

  • Comentarios sobre endpoints, esquemas y ejemplos.
  • Conversaciones encadenadas.
  • Resolución de comentarios.
  • Contexto visual de la API, no solo diff de YAML.

2. Mocks vivos por rama

Frontend suele necesitar probar contra una API antes de que backend termine la implementación.

Con solo un archivo YAML en Git, el equipo debe ejecutar algo manualmente, por ejemplo:

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

Eso funciona, pero agrega pasos manuales y no siempre refleja automáticamente la rama actual.

3. Notificaciones según rol o área

Cuando cambia un contrato compartido, no todos necesitan recibir la misma alerta.

Ejemplos:

  • Cambió /payments: avisar a frontend, móvil y QA.
  • Cambió /admin: avisar solo al equipo interno.
  • Cambió un schema reutilizado: avisar a todos los consumidores afectados.

Los webhooks de Git pueden decir “cambió un archivo”, pero no entienden el impacto semántico de la API.

4. Control de acceso para documentación

Un repositorio privado limita el acceso al código, pero no resuelve escenarios como:

  • Socios externos que solo deben ver ciertos endpoints.
  • QA que necesita leer documentación, pero no modificar la especificación.
  • Equipos internos con acceso separado por producto o dominio.

Estas brechas no significan que Git sea el problema. Significan que necesita una capa de colaboración encima de Git.

Qué debe hacer una capa de colaboración

El patrón recomendado es:

  1. Git sigue siendo la fuente de verdad.
  2. La especificación vive como archivo versionado.
  3. La capa de colaboración lee ese archivo.
  4. Documentación, mocks, comentarios, pruebas y notificaciones se generan desde la especificación comprometida.

Comparación rápida:

Categoría Ejemplos Puntos fuertes Qué añaden a Git
Plataformas de especificaciones alojadas Stoplight, SwaggerHub UI, comentarios, control de acceso Mantienen su propia copia de la especificación; Git puede ser opcional
Capas de colaboración nativas de archivos Apidog Spec-First, Redocly Trabajan desde el archivo comprometido Superponen colaboración, mocks y CI sobre Git
Clientes API nativos de Git Bruno, Insomnia Colecciones como archivos, buena sincronización Se enfocan en solicitudes; docs, mocks e informes no siempre están conectados

La decisión práctica es esta: no elija una herramienta solo porque “soporta Git”. Verifique si también cubre documentación, mocks, comentarios, control de acceso y CI/CD.

Bruno: fuerte en Git, limitado a la capa de solicitud

Bruno tiene una historia sólida para equipos que quieren colecciones como archivos. Bruno Ultimate incluye almacenamiento nativo de archivos, integración con Git, SSO, SCIM, hooks para secretos y auditoría.

Es una buena opción si su necesidad principal es:

  • Guardar colecciones como código.
  • Ejecutar solicitudes.
  • Versionar entornos y requests.
  • Mantener sincronización con Git.

Pero Bruno no reemplaza una capa de colaboración completa sobre OpenAPI. No genera automáticamente documentación desde un openapi.yaml comprometido, no crea mocks por rama desde ese archivo ni enruta notificaciones por cambios de rutas o schemas.

Si hoy usa Bruno junto con Stoplight, SwaggerHub u otra plataforma, Bruno no elimina necesariamente esa segunda herramienta. La arquitectura debe quedar clara.

Cómo usar Apidog Spec-First con Git

El modo Spec-First de Apidog, actualmente en beta, está diseñado para este flujo: usted mantiene openapi.yaml en Git y Apidog lo usa como fuente autoritativa para colaboración, documentación, mocks y pruebas.

Apidog Spec-First

Paso 1: Vincule el repositorio Git

Conecte Apidog a GitHub, GitLab o Bitbucket y apunte al archivo OpenAPI dentro del repositorio.

La guía apidog-git-integration-sync cubre el flujo de conexión.

Ejemplo de estructura:

repo/
├── api/
│   └── openapi.yaml
├── src/
└── .github/
    └── workflows/
Enter fullscreen mode Exit fullscreen mode

Ejemplo mínimo de especificación:

# api/openapi.yaml
openapi: "3.1.0"

info:
  title: API de Pagos
  version: "2.4.0"

paths:
  /payments:
    post:
      summary: Crear un pago
      operationId: createPayment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PaymentRequest"
      responses:
        "201":
          description: Pago creado
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponse"
        "422":
          description: Error de validación
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationError"

components:
  schemas:
    PaymentRequest:
      type: object
      required:
        - amount
        - currency
        - source
      properties:
        amount:
          type: integer
          description: Cantidad en la unidad monetaria más pequeña, por ejemplo centavos
        currency:
          type: string
          enum:
            - usd
            - eur
            - gbp
        source:
          type: string
          description: Token del método de pago

    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

Paso 2: Revise la API como documentación

Una vez vinculado el archivo, Apidog renderiza la especificación como documentación interactiva.

Eso permite que QA, frontend o producto comenten directamente sobre:

  • Endpoints.
  • Parámetros.
  • Headers.
  • Schemas.
  • Ejemplos de request y response.

Comentarios sobre especificación

Ejemplo práctico:

Un QA revisa POST /payments y detecta que falta un header de idempotencia. En lugar de comentar el diff del YAML, comenta sobre el endpoint:

¿Este endpoint debería requerir Idempotency-Key para evitar pagos duplicados?
Enter fullscreen mode Exit fullscreen mode

Luego backend actualiza el archivo:

parameters:
  - name: Idempotency-Key
    in: header
    required: true
    schema:
      type: string
    description: Clave única para evitar operaciones duplicadas
Enter fullscreen mode Exit fullscreen mode

El cambio vuelve a Git mediante commit y PR. La conversación queda asociada al elemento de la API, no a una línea específica que podría moverse.

Paso 3: Genere mocks por rama

Con Spec-First, cada rama de la especificación puede producir un mock separado.

Ejemplo de flujo:

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

Se modifica api/openapi.yaml:

PaymentResponse:
  type: object
  properties:
    id:
      type: string
    status:
      type: string
      enum:
        - pending
        - completed
        - failed
    riskScore:
      type: number
      format: float
Enter fullscreen mode Exit fullscreen mode

Frontend puede probar contra el mock de esa rama sin esperar a backend.

Mocks por rama

Esto reemplaza pasos manuales como ejecutar un mock local cada vez que cambia la especificación.

Paso 4: Enrute notificaciones por endpoint o dominio

Cuando se fusiona un cambio relevante, configure notificaciones hacia los equipos afectados.

Ejemplo de estrategia:

Ruta o etiqueta Canal
/payments #api-payments
/checkout #frontend-checkout
/admin #internal-admin-api
tag:mobile #mobile-api-changes

Para configurar los canales, use webhooks de su plataforma:

Antes de adoptarlo en producción, valide:

  • Si el enrutamiento se hace por etiqueta, ruta o ambos.
  • Cómo se comporta ante schemas compartidos.
  • Qué roles pueden recibir o administrar notificaciones.
  • Cómo se combina con el control de acceso de documentación.

Conecte la especificación a CI/CD

La colaboración es más útil si también bloquea cambios incorrectos en el pipeline.

Un flujo recomendado:

  1. Validar sintaxis y reglas de estilo con Spectral o Redocly CLI.
  2. Ejecutar pruebas de contrato.
  3. Publicar o sincronizar la documentación.
  4. Notificar cambios relevantes.

Ejemplo con GitHub Actions:

# .github/workflows/api-spec.yml
name: Validación y prueba de especificación API

on:
  push:
  pull_request:

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

    steps:
      - uses: actions/checkout@v4

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

      - name: Ejecutar pruebas de contrato de Apidog
        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

Ejemplo simple de reglas Spectral:

# .spectral.yaml
extends:
  - spectral:oas

rules:
  operation-operationId:
    severity: error

  operation-summary:
    severity: warn

  path-params:
    severity: error
Enter fullscreen mode Exit fullscreen mode

La especificación OpenAPI es la referencia canónica de lo que su API promete. Si el servicio real se desvía del contrato, el pipeline debe fallar aunque las pruebas unitarias pasen.

Para un flujo más completo basado en Git, consulte git-native-api-workflow.

Comparación para equipos basados en archivos

Use esta tabla como checklist inicial. Las capacidades marcadas como “verificar” dependen del plan, configuración o requisitos concretos del equipo.

Capacidad Stoplight SwaggerHub Apidog Spec-First, beta
Git como fuente autoritativa Opcional; suele mantener copia propia Opcional Sí, en modo Spec-First
Comentarios en tiempo de diseño
Mocks específicos de rama Parcial
Acceso a documentación basado en roles Verificar en prueba
Reutilización de schemas entre proyectos Verificar en prueba
Pruebas de contrato en CI/CD Vía Prism Limitado Sí, con Apidog CLI
Reglas de linting personalizadas Vía Spectral Limitado Verificar en prueba
SSO/SCIM Niveles de pago Empresarial Verificar en prueba
Enrutamiento de notificaciones Vía webhooks Limitado
Nativo de archivos sin doble copia No No Sí, en Spec-First

Para una comparación más amplia, consulte swaggerhub-vs-apidog-collaboration.

Checklist de implementación

Antes de mover su equipo a un flujo Spec-First, pruebe lo siguiente en una rama real:

[ ] El archivo OpenAPI vive en Git y tiene una ruta estable.
[ ] El proyecto de Apidog está vinculado a esa ruta.
[ ] Los cambios en Git se reflejan en la documentación.
[ ] Los comentarios se pueden hacer sobre endpoints y schemas.
[ ] Los mocks se generan para ramas de trabajo.
[ ] Las notificaciones llegan al canal correcto.
[ ] El pipeline valida OpenAPI en cada PR.
[ ] Las pruebas de contrato fallan si la implementación rompe el contrato.
[ ] Los permisos de documentación coinciden con los roles del equipo.
Enter fullscreen mode Exit fullscreen mode

Preguntas frecuentes

¿Podemos seguir usando revisiones de PR en Git junto con comentarios de Apidog?

Sí. Son flujos complementarios.

Use PRs de Git para que ingeniería revise cambios en YAML:

+        "422":
+          description: Error de validación
Enter fullscreen mode Exit fullscreen mode

Use comentarios en Apidog para que QA, producto y frontend revisen la API como documentación.

El archivo comprometido sigue siendo la fuente de verdad.

¿Qué pasa si alguien edita la especificación desde Apidog?

En el modo Spec-First, las ediciones realizadas desde la UI de Apidog pueden enviarse de vuelta a Git como commits.

Flujo recomendado:

  1. Editar en la UI.
  2. Crear commit en una rama.
  3. Abrir PR.
  4. Revisar en Git.
  5. Fusionar.
  6. Sincronizar documentación, mocks y pruebas.

Conviene validarlo en una prueba porque la dirección exacta de sincronización afecta cómo su equipo decide dónde se originan los cambios.

Para el recorrido específico, consulte spec-first-mode-apidog-beta-walkthrough.

¿Funciona con monorepos que tienen varios archivos OpenAPI?

Sí, es un patrón común. Puede tener varios proyectos, cada uno vinculado a una ruta distinta.

Ejemplo:

repo/
├── services/
│   ├── payments/
│   │   └── openapi.yaml
│   ├── checkout/
│   │   └── openapi.yaml
│   └── admin/
│       └── openapi.yaml
Enter fullscreen mode Exit fullscreen mode

Valide en su prueba si necesita:

  • Un solo proyecto apuntando a múltiples archivos.
  • Reglas de linting compartidas.
  • Schemas comunes entre servicios.
  • Notificaciones por dominio.

¿Cómo se compara con Redocly para equipos basados en archivos?

Redocly CLI es fuerte para linting, bundling y generación de documentación desde archivos. La plataforma alojada añade colaboración y funciones de equipo.

La diferencia práctica está en qué capa quiere consolidar:

  • Redocly: linting, documentación y flujo centrado en especificaciones.
  • Apidog: documentación, mocks, pruebas de contrato, comentarios y notificaciones desde una plataforma que lee el archivo comprometido.

¿Qué pasa con las herramientas de la Iniciativa OpenAPI?

La Iniciativa OpenAPI mantiene la especificación, no una plataforma de colaboración.

Si usa OpenAPI 3.1, pruebe cualquier herramienta contra la versión real de su especificación. El soporte de OpenAPI 3.1 puede variar entre herramientas.

Conclusión

Si su equipo ya guarda OpenAPI en Git, el versionado está resuelto. Lo que falta es colaboración operativa.

Necesita una capa que conecte el archivo comprometido con:

  • Comentarios de diseño.
  • Documentación interactiva.
  • Mocks por rama.
  • Notificaciones por equipo.
  • Control de acceso.
  • Pruebas de contrato en CI/CD.

Esa capa no debe reemplazar Git. Debe leer desde Git y encajar con sus PRs, ramas y pipelines.

Si hoy combina Git con Stoplight, SwaggerHub o documentos compartidos para cubrir colaboración, ese es el tipo de arquitectura que Apidog Spec-First Mode busca consolidar. Como está en beta, haga una prueba enfocada en sus requisitos críticos: permisos, reutilización de schemas, granularidad de notificaciones y CI/CD.

Puede descargar Apidog y conectarlo a una rama de su repositorio de especificaciones para evaluar cómo encaja en su flujo actual.

Top comments (0)