Contenido del curso
Herramientas y Validación de APIs
- 5

Validación automática con Express OpenAPI Validator
07:19 min - 6

Validación automática con OpenAPI en Express
13:53 min - 7

Múltiples respuestas HTTP en OpenAPI
04:10 min - 8

Cómo la IA genera endpoints desde OpenAPI
09:36 min - 9

Esquemas reutilizables de productos en OpenAPI
Viendo ahora - 10

Endpoints de productos con esquemas reutilizables
05:36 min - 11

API First con IA: construye CRUD sin codificar
14:52 min
Versionado, Prototipado y Documentación
Validación y Pruebas de Contratos
Seguridad
Esquemas reutilizables de productos en OpenAPI
Resumen
Diseñar un esquema reutilizable en OpenAPI te permite estandarizar la estructura de tus datos, reducir repeticiones y validar campos antes de escribir una sola línea de código. Aquí aprenderás a construir un schema de producto dentro de la sección components, aplicando tipos de datos, validaciones y reglas que luego podrás invocar desde cualquier endpoint de tu API.
Por qué usar components en OpenAPI
La sección components actúa como una biblioteca central donde defines una vez y reutilizas en todos los paths y respuestas de tu documento.
En lugar de repetir la misma estructura en cada solicitud, defines un esquema base y lo referencias. Eso simplifica el mantenimiento y evita inconsistencias cuando tu API crece.
¿Qué son los components en OpenAPI? Son bloques reutilizables que centralizan esquemas, respuestas y parámetros para que puedas invocarlos desde distintos endpoints sin duplicar código.
Cómo definir el esquema base de un producto
Antes de escribir el esquema conviene sentarse a diseñar: qué campos tendrá el producto, cuáles son obligatorios y qué validaciones aplican a cada uno [03:45].
El esquema arranca con el nombre products, el tipo object y un bloque required que marca los campos obligatorios:
name: identifica el producto.price: define el valor monetario.category: clasifica el producto dentro de un grupo.
yaml products: type: object required: - name - price - category properties: ...
Esto no significa que el producto solo tenga tres campos. Significa que sin esos tres, el producto no es válido.
Cómo aplicar validaciones a strings y números
Cada propiedad necesita su tipo y sus reglas. Para name defines type: string con minLength: 2 y maxLength: 40, evitando nombres demasiado cortos o exageradamente largos.
Para analizar ese máximo puedes apoyarte en una inteligencia artificial que revise tu catálogo y te sugiera el promedio real de caracteres [05:20].
En description usas un string con maxLength más generoso, entre 200 y 500 caracteres, porque ahí describes el producto a fondo.
Para price el tipo es number con dos reglas clave:
minimum: 0para no permitir precios negativos.multipleOf: 0.01para garantizar dos decimales.
yaml price: type: number minimum: 0 multipleOf: 0.01
Cómo restringir valores con enum y arrays
La propiedad category es un string con valores predefinidos usando enum. Así limitas las opciones a un grupo cerrado:
yaml category: type: string enum: - electronics - books - ropa - food
Para tags defines un array cuyos items son string, con minItems: 1. La regla obliga a que cada producto tenga al menos una etiqueta [07:50].
¿Cómo se valida un array en OpenAPI? Defines
type: array, especificas el tipo de lositemsy agregas reglas comominItemsomaxItemspara controlar cuántos elementos acepta.
Cómo manejar booleanos, objetos dinámicos y arrays anidados
No todos los campos siguen el mismo patrón. Algunos necesitan flexibilidad, otros estructura estricta.
Booleanos y objetos con propiedades dinámicas
El campo inStock se resuelve con un simple type: boolean. Existe o no existe stock, sin más matices.
Para specifications el reto es distinto: cada producto puede tener atributos técnicos diferentes. Aquí entra additionalProperties:
yaml specifications: type: object additionalProperties: type: string
Eso permite que el objeto acepte cualquier clave adicional siempre que su valor sea un string. Cuida la ortografía al escribirlo, porque un typo rompe la validación.
Arrays de objetos para reseñas
Las calificaciones requieren una estructura más compleja: un array donde cada ítem es un objeto con sus propios campos obligatorios.
yaml ratings: type: array items: type: object required: - score - comment properties: score: type: integer minimum: 1 maximum: 5 comment: type: string maxLength: 200
El score se restringe a un integer entre 1 y 5. El comment es un string con tope de 200 caracteres para mantener las reseñas concisas [10:15].
Qué ganas al diseñar antes de codear
Llegar a este esquema implica una fase previa de diseño donde defines tipos, refinas valores requeridos y ajustas propiedades a casos de uso reales: rangos de precio, decimales monetarios, categorías cerradas, etiquetas mínimas, control de stock y estructura de reseñas.
Cada validación responde a una decisión de producto, no a una convención arbitraria. Por eso el contrato de tu API queda claro antes de tocar el código que lo implementa.
Con este esquema reutilizable listo, el siguiente paso es pedirle a una inteligencia artificial que actualice el documento OpenAPI usando esta estructura como base. ¿Cómo organizarías tú las categorías y validaciones de tu propio catálogo? Cuéntalo en los comentarios.