Cómo Controlar Versiones de un Archivo OpenAPI con Git

Control de versiones de tu especificación OpenAPI como código: estrategias de ramificación, revisión de los cambios en la especificación mediante pull requests y validación con CI, todo realizado en Apidog.

Ashley Innocent

Ashley Innocent

2 June 2026

Cómo Controlar Versiones de un Archivo OpenAPI con Git

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

Tu especificación OpenAPI es un contrato. Cuando se desvía, los clientes se rompen, los simulacros se vuelven obsoletos y las pruebas se ejecutan contra una API que ya no existe. Así que trata la especificación como el resto de tu código: ponla en Git, crea ramas, revísala y valídala en cada cambio.

Esta guía te mostrará el control de versiones de OpenAPI con Git desde cero. Dónde reside el archivo, cómo crear ramas, qué buscan realmente los revisores en una diferencia de especificación y cómo enviar cambios directamente desde Apidog. Al final, tendrás un flujo de trabajo en el que todo tu equipo podrá confiar.

button

Por qué controlar las versiones de tu especificación OpenAPI

Una especificación que reside en una wiki o en una unidad compartida no tiene historial. No puedes ver quién cambió la carga útil de POST /orders el martes pasado, ni por qué. Git lo soluciona.

Pon openapi.yaml bajo control de versiones y obtendrás cuatro cosas gratis:

Esta es la base de un flujo de trabajo de API nativo de Git: la especificación es código fuente, y el código fuente vive en Git.

Dónde reside el archivo de la especificación en el repositorio

Mantenlo simple y predecible. La mayoría de los equipos colocan un solo archivo openapi.yaml en la raíz del repositorio o en una carpeta api/:

my-service/
├── api/
│ └── openapi.yaml
├── src/
└── README.md

Cuando mantienes varias versiones principales en paralelo, sepáralas por versión con un archivo por cada versión principal:

api/
├── api-v1.yaml
└── api-v2.yaml

Esto mantiene los cambios que rompen la compatibilidad aislados. api-v1.yaml permanece congelado para los clientes existentes mientras que api-v2.yaml evoluciona. También hace que las diferencias sean más pequeñas y la revisión más rápida, porque cada archivo cambia por una razón. Tratar la especificación de esta manera es la idea central detrás de la especificación de API como código.

Elige una convención y documéntala. El peor resultado es que dos archivos afirmen ser "la" especificación.

Estrategias de ramificación para cambios en la especificación

No necesitas un modelo de ramificación especial para las especificaciones. Reutiliza lo que tu código ya hace. Crea una rama a partir de main, haz el cambio, abre una PR.

Convención de nombres que facilita la revisión de las ramas de especificación:

Tipo de rama Patrón Ejemplo
Nuevo endpoint api/add-<recurso> api/add-refunds
Cambio de campo api/change-<recurso>-<campo> api/change-order-status
Cambio que rompe la compatibilidad api/breaking-<descripción> api/breaking-v2-auth
Corrección / limpieza api/fix-<descripción> api/fix-pagination-schema

El prefijo api/ indica "esta PR afecta al contrato" de un vistazo. Los revisores y la CI pueden filtrarla. Para los cambios que rompen la compatibilidad, el prefijo explícito breaking- es una señal de que esto necesita atención adicional y probablemente un aumento de versión.

Mantén las ramas de corta duración. Una rama de especificación que viva dos semanas chocará con los cambios de todos los demás. Las ramas pequeñas y enfocadas se fusionan limpiamente.

Revisión de cambios de especificación en una solicitud de extracción

Aquí es donde el control de versiones demuestra su valía. Una PR de especificación es un cambio de contrato, y los cambios de contrato merecen una revisión real.

Escribe YAML de una manera que facilite la diferencia para que los revisores puedan leer el cambio, no luchar con el formato:

paths:
 /orders/{orderId}:
 get:
 summary: Get an order
 parameters:
 - name: orderId
 in: path
 required: true
 schema:
 type: string
 responses:
 "200":
 description: Order found
 content:
 application/json:
 schema:
 $ref: "#/components/schemas/Order"

La indentación consistente y una propiedad por línea significan que la adición de un solo campo aparece como una diferencia de una sola línea. Ese es el objetivo.

Lo que los revisores deben verificar:

Para la detección de cambios que rompen la compatibilidad, apóyate en herramientas en lugar de la vista. Un paso de CI (cubierto a continuación) puede comparar la especificación de la PR con la de main y fallar la compilación si detecta un cambio incompatible. Los humanos los pasan por alto; las herramientas de diferencia no.

Commit y push desde Apidog

Editar YAML sin procesar a mano funciona, pero un editor visual con validación en vivo es más rápido y detecta errores antes. El modo Spec-First de Apidog te ofrece sincronización bidireccional con Git: edita la especificación en la UI, haz commit y push a tu repositorio sin salir de la herramienta. Recupera los cambios de un compañero de equipo de la misma manera.

El flujo se ve así:

  1. Conecta tu repositorio Git y apunta Apidog al archivo de la especificación.
  2. Edita endpoints, esquemas y ejemplos en el editor visual.
  3. Apidog escribe YAML limpio y fácil de diferenciar de nuevo en el archivo.
  4. Haz commit en una rama y push, luego abre tu PR como de costumbre.

Debido a que Apidog serializa YAML de manera consistente, tus diferencias se mantienen pequeñas y revisables, sin reordenamientos ruidosos o reformateos. Puedes leer la configuración completa en la documentación del modo Spec-First de Apidog. Si quieres que el archivo se coloque en un proveedor específico, consulta sincronizar tu especificación OpenAPI con GitHub.

Ganchos de validación de CI

Nunca permitas que una especificación no válida llegue a main. Conecta la validación a tus comprobaciones de solicitud de extracción para que un contrato roto falle la compilación automáticamente.

Un paso mínimo de GitHub Actions:

name: Validate OpenAPI
on: [pull_request]
jobs:
 lint:
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v4
 - name: Lint spec
 run: npx @redocly/cli lint api/openapi.yaml

Añade más comprobaciones a medida que creces:

Estas comprobaciones se ejecutan en segundos y detectan los errores que un revisor humano pasaría por alto.

Mejores prácticas

Algunos hábitos mantienen saludable el control de versiones de la especificación a lo largo del tiempo:

Preguntas frecuentes

¿Cómo detecto cambios que rompen la compatibilidad en una especificación OpenAPI?

Ejecuta una herramienta de diferencia de especificaciones en CI que compare la solicitud de extracción con la versión en main. Herramientas como oasdiff clasifican cada cambio como rompedor, no rompedor o no clasificado, y pueden fallar la compilación si hay uno rompedor. Esto detecta campos eliminados, nuevos parámetros requeridos y tipos modificados que una revisión manual podría pasar por alto.

¿Debo mantener un solo archivo OpenAPI o dividirlo en varios?

Comienza con un único archivo openapi.yaml. Es el más fácil de revisar y versionar. Cuando el archivo se haga grande o mantengas varias versiones principales en paralelo, divídelo por versión principal (api-v1.yaml, api-v2.yaml) o usa $ref para dividir los esquemas en archivos separados. No dividas prematuramente; un archivo legible es mejor que cinco fragmentados.

¿Puedo controlar las versiones de mi especificación sin escribir YAML a mano?

Sí. El modo Spec-First de Apidog te permite editar la especificación en un editor visual y sincronizar los cambios con Git en ambas direcciones. Escribe YAML consistente, por lo que tus diferencias se mantienen limpias y tus solicitudes de extracción siguen siendo legibles, mientras sigues obteniendo el historial completo de Git y la revisión.

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs

Cómo Controlar Versiones de un Archivo OpenAPI con Git