Contratos y compatibilidad

Un contrato registra la estructura que promete una operación de API. Echo reúne el método, la ruta, el documento y las versiones publicadas. Un mock puede generar datos a partir de un contrato y una aplicación puede vincularse a una versión para declarar una dependencia. Publicar un contrato no implementa ni prueba una API en ejecución.

Crea y publica

Abre Contratos en Maestro, crea el contrato y abre Publicar versión. Pega un documento de contrato Echo y revísalo antes de publicar. Este campo espera JSON de un documento Echo, no una respuesta de ejemplo ni un JSON Schema sin convertir. La conversión de esquemas está disponible en el editor de rutas de mocks.

Las versiones publicadas son instantáneas numeradas. El vínculo de una aplicación registra la versión acordada. El diff web muestra rutas modificadas, motivos y evaluaciones separadas para consumidores y proveedores. Reutilizar contenido ya publicado puede devolver una versión anterior existente en vez de crear otra.

Lee la dirección correcta

El vínculo Consumes indica que la aplicación llama a la operación. Provides indica que la ofrece. La comparación distingue cambios de solicitud y de respuesta y evalúa cada lado.

Cambio Consumidor Proveedor
Añadir campo opcional a la solicitud Seguro Seguro
Añadir campo obligatorio a la solicitud Incompatible Incompatible
Añadir campo obligatorio a la respuesta Seguro Incompatible
Eliminar un campo de respuesta o cambiar su tipo Incompatible Incompatible
Añadir campo opcional a la respuesta Condicional Seguro

Son las evaluaciones del clasificador actual. Un campo opcional adicional en la respuesta es condicional porque JsonUnmappedMemberHandling.Disallow rechaza campos desconocidos. Lee la condición y el motivo en el diff. Safe significa que no se detectó incompatibilidad para ese lado; Warning requiere revisión; Breaking identifica incompatibilidad; ConditionalBreaking depende de la condición indicada. Una evaluación desconocida no equivale a aprobación.

Revisa antes de aceptar

Un proveedor puede publicar mediante EchoContractPublicationClient, de Gapfy.Echo.Contracts. Primero crea el contrato y el vínculo Provides, después usa una clave con PublishOwnedContracts. El cliente publica versiones de un contrato propio; no crea contratos ni asume su propiedad.

La publicación finaliza antes de devolver los resultados de compatibilidad. Una evaluación incompatible no deshace la publicación. Revisa las diferencias antes de cambiar un consumidor o aceptar una nueva referencia.

Gapfy.Echo.Testing compara contratos consumidos con instantáneas revisadas en tu repositorio. Puede hacer fallar el CI cuando un cambio rompe ese consumidor. No prueba la API en ejecución ni valida los contratos que ofrece tu aplicación.

Próximos pasos

Conecta tu aplicación con aplicaciones y claves o usa el documento para servir mocks remotos.