La colaboración de API solía significar abrir una aplicación pesada, esperar a que se sincronizara y hacer clic en paneles para ver qué había cambiado un compañero de equipo. No necesitas nada de eso. Si tu API se describe mediante un archivo OpenAPI, la mayor parte del trabajo de colaboración es realmente trabajo de texto: versionar la especificación, revisar una diferencia y fusionar un cambio compartido. Todo ello cabe en la terminal.
Esta guía cubre herramientas CLI ligeras que manejan esas tres tareas. Cada herramienta aquí se instala en segundos, se ejecuta desde un solo comando y se integra en Git o CI. Sin GUI, sin demonios en segundo plano, sin configuración de asientos para todo el equipo solo para leer un registro de cambios. Para una visión más completa de los flujos de trabajo en equipo, comienza con nuestro resumen de herramientas de colaboración de API; esta pieza es el subconjunto centrado en la terminal.
Aquí está el encuadre. La colaboración desde la línea de comandos se divide en versionado de la especificación (quién tiene qué versión), revisión (qué cambió y si es seguro) y cambios compartidos (fusionar las ediciones de una persona en la fuente de verdad de todos). Cada herramienta a continuación hace una o dos de esas cosas bien. La especificación OpenAPI es el estándar oficial que estas herramientas leen y escriben, por lo que es el lenguaje compartido que hace que todo funcione. Obtendrás siete herramientas, una instalación real y un comando de ejemplo para cada una, y una tabla corta para elegir.
¿Qué hace que una herramienta CLI sea "ligera" para la colaboración de API?
Ligero es un requisito real, no solo una sensación. Una herramienta califica cuando cumple la mayoría de estos puntos:
- Instalación pequeña. Un solo binario, una invocación
npx, o unnpm install -g. Sin instalador, sin servicio que mantener en ejecución. - Inicio rápido. Se ejecuta y sale, para que puedas llamarlo en un script o en un `pre-commit hook`.
- Poca configuración. Funciona con un archivo OpenAPI simple con configuración cero o mínima. Apúntalo a
openapi.yamly listo. - Primero en terminal. La salida está destinada a ser leída en una terminal o enviada a CI, no renderizada en un panel web.
- Hace un trabajo bien. Comparar diferencias, publicar o fusionar; no una plataforma completa que tengas que adoptar.
Las herramientas se ordenan aproximadamente desde las más pequeñas y enfocadas hasta las más integradas. La última entrada es la excepción: una CLI de proyecto completa en lugar de un binario de un solo propósito, incluida porque cubre el versionado, la revisión y la fusión en un solo lugar.
Git + un archivo de especificación (la base)
La herramienta de colaboración más ligera es la que ya tienes. Confirma tu archivo OpenAPI en el repositorio junto al código, y Git gestiona el versionado, el historial y la revisión de forma gratuita. Una solicitud de extracción contra openapi.yaml muestra las líneas exactas que cambiaron, los compañeros de equipo comentan esas líneas, y la fusión es el cambio compartido. Esta es la idea central detrás de la colaboración de API nativa de Git.
# Rastrea la especificación en el repositorio, luego revisa los cambios como cualquier código
git add openapi.yaml
git commit -m "Add pagination params to GET /orders"
git diff main -- openapi.yaml
Lo mejor para: historial y revisión sin herramientas nuevas. Todo desarrollador ya lo conoce.
Límite honesto: las diferencias de Git sin procesar en YAML son ruidosas. Una clave reordenada o un bloque reindentado parece un cambio incluso cuando la API es idéntica. Esa es exactamente la brecha que llenan las siguientes herramientas: comparan el significado de la API, no el texto del archivo.
oasdiff
oasdiff es un único binario de Go que compara dos especificaciones OpenAPI y te dice si el cambio es disruptivo. Es de código abierto (Apache 2.0), detecta cientos de tipos de cambios distintos, y su código de salida hace que sea trivial bloquear una fusión. Ejecútalo en CI y un cambio disruptivo fallará la compilación antes de que llegue a un compañero de equipo.
# Instalar (macOS)
brew install oasdiff
# Fallar la compilación si la nueva especificación rompe clientes existentes
oasdiff breaking main-spec.yaml pr-spec.yaml
# salida 0 = seguro, salida 1 = cambios disruptivos encontrados
Usa oasdiff changelog base.yaml revision.yaml para un resumen legible por humanos de todo lo que cambió, sea o no disruptivo.
Lo mejor para: detección de cambios disruptivos como puerta de fusión. Rápido, programable, no se necesita cuenta.
Límite honesto: compara y reporta; no publica documentación ni gestiona ramas. Es un trabajo preciso y bien hecho.
Optic
Optic es una CLI instalada con npm que compara, lints y revisa los cambios de OpenAPI pensando en los flujos de trabajo de Git. Tiene licencia MIT y entiende $ref, oneOf, allOf y otras formas de esquema que confunden a las comparaciones ingenuas. Donde oasdiff te da una puerta de paso/falla, Optic se inclina hacia la conversación de revisión: puede comparar tu especificación de trabajo con la versión de tu rama principal y resumir los cambios a nivel de API para una PR.
# Instalar
npm install -g @useoptic/optic
# Compara la especificación actual con la de la rama principal
optic diff openapi.yaml --base main --check
Lo mejor para: revisión estructurada de cambios dentro de las solicitudes de extracción, con reglas para lo que se considera un cambio disruptivo o prohibido.
Límite honesto: está basado en Node, por lo que es más pesado que un solo binario de Go, y sacarle el máximo partido significa adoptar su configuración y reglas de verificación.
Bump.sh CLI
La CLI de Bump.sh publica y compara la documentación de la API desde la terminal. La colaboración aquí se trata del documento compartido y siempre actualizado: `despliegas` una nueva versión cuando la especificación cambia, y los compañeros de equipo y consumidores leen la misma referencia renderizada. El comando `diff` publica un registro de cambios entre la versión publicada y tu archivo local, lo cual es útil para incluir en un comentario de PR. Es un paquete de Node (`bump-cli`), necesita Node 20+, y `preview` y `diff` funcionan sin un token.
# Instalar
npm install -g bump-cli
# Publicar una nueva versión de la documentación compartida
bump deploy openapi.yaml --doc my-api --token $BUMP_TOKEN
# O simplemente obtener el registro de cambios entre versiones
bump diff openapi.yaml --doc my-api
Lo mejor para: mantener un documento compartido y legible por humanos sincronizado con la especificación, además de diferencias en la terminal para revisión.
Límite honesto: la documentación alojada y el flujo de despliegue son un producto de pago de Bump.sh. La CLI es el cliente; la superficie compartida reside en su plataforma.
Redocly CLI
Redocly CLI es un amplio conjunto de herramientas OpenAPI: lints, empaqueta y sube especificaciones al registro de Redocly (ahora Reunite). El comando `push` es la palanca de colaboración; sube una versión de la especificación a un registro compartido para que el resto de la organización extraiga de una fuente canónica en lugar de pasar archivos. El empaquetado también es importante, ya que una especificación de varios archivos con $refs se convierte en un artefacto limpio que tus compañeros de equipo pueden consumir.
# No se necesita instalación; ejecutar vía npx
npx @redocly/cli lint openapi.yaml
npx @redocly/cli bundle openapi.yaml -o dist/openapi.yaml
# Empujar una versión al registro compartido (necesita una clave API)
npx @redocly/cli push openapi.yaml --organization "Acme" --project "orders-api"
Lo mejor para: aplicar linting a un estilo de la casa y empujar una especificación de fuente única de verdad a un registro compartido.
Límite honesto: `lint` y `bundle` son gratuitos y locales, pero `push` y el registro son parte de la plataforma alojada de Redocly. Para flujos de trabajo de edición de especificaciones más profundos, consulta nuestra guía sobre edición colaborativa de especificaciones API.
GitHub CLI (gh)
Si tu revisión ocurre en solicitudes de extracción, la CLI de GitHub lleva todo ese flujo a la terminal. Abres la PR que cambia la especificación, solicitas revisores y verificas el estado sin abrir un navegador. Combínala con oasdiff u Optic en un `Git hook` y la revisión de la especificación se convierte en una parte normal y programable de la revisión de código.
# Abrir una PR para el cambio de especificación y etiquetar revisores
gh pr create --title "Add /orders pagination" --body "Adds page + limit params"
gh pr review --approve
Lo mejor para: impulsar la conversación de revisión y fusión desde la shell cuando tu equipo ya trabaja en GitHub.
Límite honesto: gestiona la PR, no la semántica de la API. No sabe si un cambio es disruptivo; para eso conectas oasdiff u Optic.
Apidog CLI
La CLI de Apidog es la excepción aquí. No es un binario de un solo propósito; es una CLI completa de recursos de proyecto (`npm install -g apidog-cli`) que accede a los mismos datos de diseño, versionado y colaboración que la plataforma Apidog, desde la terminal. Para la colaboración, tres grupos de comandos son importantes: `branch`, `merge-request` y `git-connection`.
Apidog no es de código abierto; es un producto comercial con un nivel gratuito. Pero si prefieres no unir una herramienta de diferencias, un editor de documentos y un registro a mano, el nivel gratuito más la CLI te ofrece ramas de especificaciones, un flujo de revisión y una copia de seguridad de Git en un solo lugar.
Empieza con una rama aislada. La bandera `--type` elige el modelo de rama: `sprint` para una característica o lanzamiento con alcance, `general` para trabajo en curso, o `ai` para una rama aislada donde un agente edita recursos sin tocar tu código fuente.
# Instalar y autenticar
npm install -g apidog-cli
apidog login --with-token $APIDOG_TOKEN
# Iniciar una rama sprint para un cambio compartido
apidog branch create --type sprint --name "orders-pagination"
Cuando la rama esté lista, abre una solicitud de fusión en lugar de fusionar directamente. Esta es la puerta de revisión: cuando la rama principal está protegida, un editor crea la solicitud y un administrador la aprueba antes de que algo se incorpore. Las fusiones seleccionan solo los recursos que nombras, por lo que un cambio compartido permanece dentro de su alcance.
# Proponer el cambio para revisión (seguro frente a una rama principal protegida)
apidog merge-request create --branch "orders-pagination" --endpoint-ids 1,2
Y `git-connection` respalda el archivo OpenAPI de cada módulo en un repositorio Git (se admiten GitHub, GitLab o Azure DevOps), para que la especificación tenga un espejo en el control de versiones junto con tu código.
# Conectar las especificaciones del proyecto a un repositorio Git para copia de seguridad + historial
apidog git-connection --help
La salida es JSON estructurado con `agentHints.nextSteps`, lo que facilita la conducción de la CLI desde scripts o un agente de IA. Para la referencia completa de comandos, consulta la guía completa de Apidog CLI.
Lo mejor para: un flujo integrado de versionado + revisión + fusión sin ensamblar herramientas separadas, además de modelos de rama creados para equipos y agentes.
Límite honesto: es una CLI de plataforma, por lo que es la instalación más pesada aquí y se comunica con tu proyecto Apidog en lugar de con un archivo local simple. Tampoco tiene un linter de OpenAPI; usa Redocly o Spectral para las reglas de estilo. Cuando tu equipo necesite acceso basado en roles además de las ramas, consulta sobre la colaboración segura de API con RBAC.
Cómo elegir
Adapta la herramienta a la tarea de colaboración, no al revés.
| Herramienta | Mejor para | Instalación | ¿Código abierto? | Notas |
|---|---|---|---|---|
| Git + archivo de especificación | Historial y revisión, cero herramientas nuevas | ya instalado | sí (Git) | Ruidoso en YAML; combínalo con una diferencia semántica |
| oasdiff | Puerta de fusión de cambios disruptivos | brew install oasdiff |
sí (Apache 2.0) | El código de salida falla CI en interrupciones |
| Optic | Revisión estructurada de cambios en PRs | npm i -g @useoptic/optic |
sí (MIT) | Entiende $ref, oneOf, etc. |
| Bump.sh CLI | Publicación de docs compartidos + diffs | npm i -g bump-cli |
CLI abierto, alojamiento de pago | Node 20+; diff/preview no necesitan token |
| Redocly CLI | Lint, empaquetar, empujar al registro | npx @redocly/cli |
CLI abierto, registro de pago | push necesita una clave API |
| GitHub CLI | Impulsar la revisión de PR desde la shell | brew install gh |
sí (MIT) | Gestiona la PR, no la semántica de la API |
| Apidog CLI | Versión + revisión + fusión integrada | npm i -g apidog-cli |
no (nivel gratuito) | branch / merge-request / git-connection |
La mayoría de los equipos terminan combinando varias. Una pila ligera común: confirma la especificación en Git, ejecuta oasdiff u Optic como puerta de fusión, y publica con Bump.sh o Redocly. Si prefieres ejecutar ramificación, revisión y fusión desde una única CLI, Apidog cubre las tres. Para una visión más amplia sobre cómo elegir una pila, nuestra guía de herramientas de colaboración de equipos de API compara las opciones.
Conclusión
La colaboración desde la terminal implica tres movimientos: versionar la especificación, revisar la diferencia, fusionar el cambio compartido. Git maneja el primero, oasdiff y Optic refinan el segundo, Bump.sh y Redocly publican el resultado, y gh impulsa la PR. La CLI de Apidog integra el versionado, la revisión y la fusión en un único conjunto de comandos con modelos de rama creados tanto para equipos como para agentes.
¿Quieres la ruta integrada sin unir herramientas? Descarga Apidog, instala apidog-cli, y ejecuta tu primer apidog branch create y merge-request desde la terminal en la que ya trabajas. Conectar la CLI a CI es un pequeño paso siguiente desde allí.
