¿Cómo puedo usar overlays de OpenAPI para enriquecer esquemas con reglas de validación adicionales?

¿Cómo puedo usar overlays de OpenAPI para enriquecer esquemas con reglas de validación adicionales? #

A veces se aplican reglas de validación más estrictas en un contexto que en otro: un entorno de sandbox puede aceptar datos de entrada más laxos para facilitar las pruebas, mientras que producción impone restricciones más rigurosas; o bien puede presentarse a los desarrolladores un conjunto “recomendado” de restricciones solo a efectos de documentación, sin que todos los servicios consumidores lo apliquen todavía. La OpenAPI Overlay Specification te permite añadir estas palabras clave adicionales de JSON Schema a un esquema existente sin editar la definición canónica del componente.

Añadir restricciones de formato y patrón #

overlay: 1.0.0
info:
  title: Stricter Validation Overlay
  version: 1.0.0
actions:
  - target: $.components.schemas.User.properties.email
    update:
      format: "email"
      pattern: "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$"
  - target: $.components.schemas.User.properties.phoneNumber
    update:
      pattern: "^\\+[1-9]\\d{1,14}$"
      description: "Must be in E.164 format."

Endurecer los límites numéricos para producción #

  - target: $.components.schemas.Order.properties.quantity
    update:
      minimum: 1
      maximum: 1000

Un overlay para sandbox podría, en cambio, dejar estos límites más flexibles o directamente omitirlos, lo que permite a los probadores enviar valores extremos que producción rechaza.

Añadir restricciones enum de forma progresiva #

Al introducir una nueva restricción enum en un campo de cadena que antes era de formato libre, suele ser más seguro desplegarla primero solo como documentación (mediante la descripción) y únicamente después como un overlay de cumplimiento obligatorio, una vez que hayas confirmado que ningún cliente existente envía valores fuera de rango:

  - target: $.components.schemas.Order.properties.status
    update:
      enum: ["pending", "processing", "shipped", "delivered", "cancelled"]

Añadir sugerencias de validación entre campos #

Palabras clave de JSON Schema como dependentRequired (disponibles gracias al soporte completo de JSON Schema 2020-12 en OpenAPI 3.1) pueden añadirse para documentar requisitos condicionales:

  - target: $.components.schemas.ShippingAddress
    update:
      dependentRequired:
        poBox: ["poBoxCountryCode"]

Combinar varias restricciones en una sola pasada #

  - target: $.components.schemas.Product.properties.sku
    update:
      pattern: "^[A-Z]{3}-\\d{6}$"
      minLength: 10
      maxLength: 10
      description: "Three uppercase letters, a hyphen, then six digits."

Validar que el overlay no rompa los datos existentes #

Antes de aplicar restricciones más estrictas en producción, ejecuta el esquema enriquecido contra una muestra de cargas útiles históricas reales para comprobar que ningún dato legítimo existente empiece a fallar de repente en la validación:

redocly join openapi.yaml --overlay validation-overlay.yaml -o dist/openapi.yaml
ajv validate -s dist/openapi.yaml --data "samples/*.json"

Aplicar el overlay de forma selectiva #

Como el grado de rigor de la validación suele tener que variar según el entorno, esta técnica se combina de forma natural con overlays por entorno; consulta la guía relacionada a continuación para combinar ambos enfoques.

Lecturas relacionadas #

Consulta ¿Qué es la OpenAPI Overlay Specification? y ¿Cómo puedo usar overlays de OpenAPI para personalizar la documentación por entorno (dev/staging/prod)? para combinar overlays específicos de entorno y de validación.


Última actualización: 16 de julio de 2026.

Este sitio web no está afiliado a la OpenAPI Initiative.