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
Crear, publicar y comparar contratos en Maestro está incluido en todos los planes de Echo, incluido el Free. Publicar desde tu propio código necesita una clave de aplicación; emitir una nueva clave desde Aplicaciones requiere Echo Pro o Pro AI y Echo/ManageHosting, permiso concedido por defecto al administrador de la organización. 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.
Crea un contrato de respuesta en el escritorio
Abre una ruta de mock y elige el modo de respuesta Contrato. Parte de un ejemplo JSON, examina la estructura inferida y revisa las ambigüedades antes de guardar. Selecciona un campo para elegir un generador compatible y comprueba las vistas previas con una ruta de petición representativa. Un ejemplo guardado es un punto de partida; no describe automáticamente todas las respuestas posibles.
Añade escenarios con nombre para casos como un resultado vacío o una operación rechazada. Da un ejemplo a cada escenario y selecciónalo para examinar la respuesta generada. Envía X-Echo-Scenario: empty para pedir un escenario llamado empty; omite la cabecera para usar la respuesta predeterminada. X-Echo-Seed permite repetir la generación aleatoria. Una seed fija no congela los generadores que usan la fecha actual. Una ruta fijada a una versión publicada no puede editar esa versión directamente.
Importa modelos sin reescribirlos
Con una cuenta autenticada y conexión, abre Importar y exportar modelos en el editor de contratos del escritorio.
- Elige C#, TypeScript, JavaScript, Java, Python o JSON Schema.
- Pega el código o abre juntos los archivos relacionados. Incluye los tipos referenciados e indica el tipo raíz cuando haya varios.
- En C#, elige si los nombres de propiedades deben usar camelCase. Los nombres JSON explícitos tienen prioridad.
- Revisa la vista previa de la conversión. Lee el documento, el schema y los diagnósticos antes de aplicar.
- Aplica la vista previa correcta a la ruta. Cerrar el diálogo o una conversión fallida deja la ruta intacta. Cambiar la entrada exige una nueva vista previa.
Usa el ejemplo del lenguaje seleccionado para comprobar la estructura esperada antes de importar tu modelo.
| Formato | Qué proporcionar |
|---|---|
| C# | DTOs y los tipos que referencian |
| TypeScript | Interfaces, alias de tipos o campos públicos tipados |
| JavaScript | Metadatos de schema estático literal o declaraciones TypeScript .d.ts adjuntas |
| Java | DTOs con campos públicos o records |
| Python | Dataclasses con anotaciones de tipo |
| JSON Schema | Un schema explícito con la estructura de contrato admitida |
La conversión lee el código sin ejecutarlo. Las dependencias ausentes y las construcciones no admitidas generan diagnósticos. Los valores JavaScript en ejecución no bastan para deducir un modelo completo. Los serializadores propios, el polimorfismo y las estructuras recursivas pueden requerir un schema explícito compatible. Los schemas importados siguen asociados al contrato al editar el ejemplo o la ruta; actualiza su estructura mediante la importación en vez de sustituir generadores individuales.
Exporta modelos para otra aplicación
Elige el lenguaje de salida y exporta el contrato actual. Examina los archivos generados, copia uno o guarda el ZIP completo, que incluye contract.schema.json. Los mismos seis formatos están disponibles para exportar. Exportar lee el documento actual y no publica otra versión.
Revisa los diagnósticos sobre precisión numérica y campos ausentes frente a nulos. Los tipos generados no imponen por sí solos todas las reglas de intervalos, enums o propiedades adicionales; conserva la validación de schema donde tu aplicación necesite esas garantías. La exportación Python incluye from_dict y to_dict; los valores Decimal necesitan un codificador JSON adecuado.
Próximos pasos
Conecta tu aplicación con aplicaciones y claves o usa el documento para servir mocks publicados.