Comparador de Contratos de API
Compara specs OpenAPI 3.x: cambios incompatibles, seguros, de seguridad y allOf/oneOf, con carga de archivos y soporte 3.1 - 100% en tu navegador.
🔒 Esta herramienta funciona totalmente en tu navegador. Tus archivos nunca se suben a un servidor.
Herramienta de navegador
Comparador de Contratos de API
Cada cuadro acepta OpenAPI 3.x en JSON o YAML — pégalo, arrastra un archivo sobre el cuadro, o usa Subir archivo. Nada se sube a un servidor — la comparación se ejecuta por completo en tu navegador. Pulsa Ctrl+Enter para comparar al instante.
Cómo funciona
- Pega tu spec base (antigua) y de revisión (nueva) OpenAPI 3.x en los dos cuadros - o arrastra un archivo .json/.yaml/.yml sobre cualquiera de ellos, o usa su botón Upload file. Funcionan tanto JSON como YAML, y no necesitas que coincidan los formatos.
- Pulsa Compare, sigue escribiendo (se vuelve a ejecutar automáticamente tras una breve pausa), o pulsa Ctrl+Enter para comparar al instante.
- Los resultados se agrupan en cambios incompatibles, cambios seguros/aditivos y otras modificaciones - incluyendo cambios de seguridad, deprecación, servidor y allOf/oneOf/anyOf - con un contador de cada uno arriba. Haz clic en una insignia de contador para ocultar o mostrar ese grupo.
- Elige un formato de informe (Text, Markdown o JSON) y pulsa Download report para guardar el diff completo.
FAQ
¿Qué comprueba realmente esta herramienta?
Pegas (o subes) una spec OpenAPI 3.x base (antigua) y una de revisión (nueva), y la herramienta recorre cada ruta, parámetro, cuerpo de petición, respuesta, requisito de seguridad y esquema de ambas, y luego informa qué cambió: endpoints añadidos o eliminados, cambios en requisitos de parámetros y campos de petición, tipos o enums restringidos, campos de respuesta o códigos de estado que desaparecieron, cambios en requisitos de seguridad y cambios de composición allOf/oneOf/anyOf.
¿Qué se considera un cambio "incompatible"?
Cualquier cosa que pueda hacer que un cliente existente deje de funcionar: un endpoint eliminado, un parámetro o campo de petición que pasó a ser obligatorio, un campo de respuesta o código de estado eliminado, un campo que ya no está garantizado en una respuesta, o un tipo/enum que se volvió más restrictivo (incluyendo los arrays de tipo nullable de OpenAPI 3.1, por ejemplo quitar "null" de `["string", "null"]`). Los endpoints nuevos, los campos opcionales nuevos y los campos de respuesta nuevos son aditivos y se muestran aparte como seguros.
¿Comprueba los cambios en el esquema de seguridad y en la deprecación?
Sí. Los requisitos de seguridad añadidos o eliminados (globales y por operación), los cambios en la definición del esquema de seguridad (por ejemplo, una clave de API que pasa de una cabecera a un parámetro de consulta), las operaciones recién marcadas como obsoletas y los cambios en la URL del servidor se informan todos - como hallazgos informativos en lugar de incompatibles o seguros, ya que (siguiendo la severidad por defecto que el propio oasdiff asigna a estas comprobaciones) ninguna dirección es universalmente correcta o incorrecta; tú decides si importa para tu API.
¿Gestiona la composición de esquemas allOf, oneOf y anyOf?
Sí. Los miembros de `allOf` se resuelven y combinan antes de comparar, así que un campo obligatorio añadido en lo profundo de un esquema compuesto sigue siendo detectado. Los conjuntos de variantes `oneOf`/`anyOf` se comparan y se marcan como informativos cuando se añade o elimina una variante, ya que si ese cambio concreto es incompatible depende de cómo tus clientes distingan entre variantes.
¿Es compatible con Swagger 2.0?
No - esto solo compara specs OpenAPI 3.x. Swagger 2.0 (el formato más antiguo) estructura parámetros y cuerpos de forma distinta, así que aplicar las mismas reglas daría resultados erróneos. Pegar un documento Swagger 2.0 produce un error claro en lugar de un diff silenciosamente incorrecto.
¿Se envía mi spec a algún sitio?
No. Tanto el análisis como la comparación se ejecutan en tu navegador - tu spec nunca sale de tu dispositivo, a diferencia de la mayoría de las otras herramientas de diff de OpenAPI, que procesan lo subido en su propio servidor aunque digan que no lo almacenan. Esto también es válido cuando usas la opción de subir archivo/arrastrar y soltar: el archivo se lee localmente y nunca se transmite.
¿Qué no comprueba?
Compara los cuerpos de petición y respuesta `application/json`, que cubre la gran mayoría de las API REST, pero no evalúa otros tipos de contenido, cabeceras de respuesta, descripciones ni ejemplos. Un `$ref` que apunta fuera del documento (un archivo o URL aparte) se informa como no resoluble en lugar de omitirse silenciosamente.
¿Puedo pegar YAML en lugar de JSON, o subir un archivo?
Sí, ambas cosas. Cada cuadro acepta JSON o YAML de forma independiente y detecta cuál usaste, así que puedes comparar una spec base en JSON contra una de revisión en YAML o viceversa. También puedes arrastrar un archivo .json/.yaml/.yml sobre cualquiera de los cuadros, o usar su botón Upload file - el archivo se lee en tu navegador y nunca se sube a ningún sitio.
¿Es compatible con OpenAPI 3.1, no solo con 3.0?
Funciona con cualquier documento que tenga un campo "openapi": "3.x" y un objeto "paths", lo que cubre tanto 3.0 como 3.1 - incluyendo el `type` en forma de array de 3.1 (por ejemplo `["string", "null"]`) - y solo rechaza documentos que parezcan Swagger 2.0.
¿Puedo exportar el diff como JSON, Markdown o HTML?
Se admiten Text (.txt), Markdown (.md) y JSON (.json) - elige uno en el desplegable de formato junto a Download report antes de descargar. La exportación JSON incluye la lista completa de hallazgos más los recuentos por severidad, así que se puede pasar a otro script (por ejemplo, una comprobación de CI) si lo necesitas.
¿Se actualiza mientras escribo, o tengo que pulsar Compare?
Funcionan ambas cosas: pulsa Compare para una nueva ejecución instantánea, o simplemente sigue escribiendo - tras una breve pausa vuelve a comparar automáticamente. También puedes pulsar Ctrl+Enter (Cmd+Enter en Mac) desde cualquiera de los cuadros para comparar de inmediato sin esperar.
Cómo comparamos
| Característica | Online Tool Store | oasdiff | SpecShield |
|---|---|---|---|
| Compara tu spec por completo en tu navegador | Sí - nada sale de tu dispositivo, incluidos los archivos subidos | No - se procesa en su servidor | No - se procesa en su servidor y luego se descarta |
| Acepta OpenAPI 3.x en JSON o YAML, pegado o subido | Sí - pega, arrastra y suelta, o usa Upload file | Pegar o subir | Pegar o subir |
| Agrupa los resultados en incompatibles, seguros y otros cambios | Sí, con insignias de clic para filtrar | Sí, mediante un modo dedicado Breaking Changes | Sí, los mismos tres grupos |
| Gestiona la composición de esquemas allOf/oneOf/anyOf | Sí - allOf se combina antes de comparar; los cambios de variantes oneOf/anyOf se marcan | No documentado en la página pública de diff | No documentado |
| Marca cambios de seguridad, deprecación y URL del servidor | Sí, los tres (mostrados como informativos, no incompatibles/seguros) | Seguridad y deprecación, mediante el motor subyacente de oasdiff | No documentado |
| Gratis, sin necesidad de cuenta | Sí | Sí, para el diff básico | Sí, para el diff básico |
Ideal para una comprobación rápida y privada de cambios incompatibles antes de publicar una nueva versión de tu API - especialmente cuando la spec en sí es sensible y prefieres no enviarla, ni enviar un archivo subido, a un servidor externo.