🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEl contrato OpenAPI como requisito
5 tareas · 35 min · Principiante
Antes de revisar una API hay que saber qué promete. Un contrato OpenAPI dice, operación por operación, qué entra, qué sale y quién puede llamar, y por eso se puede revisar antes de que exista una sola línea de código. Droguerías Tasajera, una cadena de farmacias con aplicación de socios, quiere publicar el contrato de su API de pedidos como «aprobado por seguridad» porque el validador de formato no encontró errores. Te entrega el contrato, su política de APIs y las notas del equipo.
Objetivo de la sala
Antes de revisar una API hay que saber qué promete. Un contrato OpenAPI dice, operación por operación, qué entra, qué sale y quién puede llamar, y por eso se puede revisar antes de que exista una sola línea de código. Droguerías Tasajera, una cadena de farmacias con aplicación de socios, quiere publicar el contrato de su API de pedidos como «aprobado por seguridad» porque el validador de formato no encontró errores. Te entrega el contrato, su política de APIs y las notas del equipo.Un contrato OpenAPI es un documento en YAML o JSON que describe una API: sus rutas, los métodos de cada ruta, los parámetros, los esquemas de lo que se envía y de lo que se recibe, y los esquemas de seguridad que exige cada operación. La especificación la mantiene la OpenAPI Initiative, un proyecto abierto de la Linux Foundation, y hoy conviven contratos de la línea 3.x con contratos viejos en el formato 2.0, que todavía se llamaba Swagger.
Para quien revisa seguridad, el valor del contrato no está en la documentación bonita que genera, sino en que convierte la intención en algo verificable. Si el contrato dice que una operación exige sesión, que un texto no pasa de 120 caracteres o que un campo solo sale y nunca entra, eso se puede revisar en papel, se puede exigir en la pasarela y se puede probar automáticamente. Lo que el contrato no dice, nadie lo puede comprobar.
Ojo con la trampa de esta sala: un validador de formato comprueba que el documento está bien escrito, no que lo escrito sea seguro. Un contrato perfectamente válido puede declarar una operación sin autenticación que devuelve datos de clientes.
Responde para continuar
¿Por qué el contrato OpenAPI le sirve a quien revisa seguridad antes de que exista el código?
Ver pista de ayuda
Piensa en qué se puede revisar en papel y luego exigir en la pasarela y en las pruebas.
Abre el laboratorio y lee pedidos-v2.yaml con politica-apis.txt al lado. En OpenAPI, el bloque security de la raíz se aplica a todas las operaciones, y una operación puede reemplazarlo con el suyo. Una lista vacía en una operación significa que esa operación no exige nada. A veces es legítimo; la política de Tasajera dice cuándo.
Busca las operaciones que anulan la seguridad global, mira qué esquema devuelve cada una y crúzalo con la regla R2 y con las notas del equipo.
Responde para continuar
Dos operaciones anulan la seguridad global con una lista vacía. ¿Cuál de las dos incumple la política? Escribe su operationId.
Ver pista de ayuda
Una tiene aprobación citada y devuelve solo estado, sede y fecha. La otra devuelve la misma lista que ve un socio con sesión.
Un texto sin longitud máxima no es un fallo por sí solo, pero deja sin acotar lo que el servicio tendrá que guardar, procesar y devolver, y le quita a la pasarela una regla que podría aplicar sin saber nada del negocio. Por eso la regla R3 exige maxLength en toda propiedad de tipo string que no esté ya acotada por una lista de valores (enum) o por un formato (format).
Recorre los cinco esquemas de components.schemas y cuenta las propiedades de tipo texto que incumplen R3. Los parámetros de ruta no cuentan: solo las propiedades de los esquemas.
Responde para continuar
¿Cuántas propiedades de tipo texto de los esquemas del contrato incumplen la regla R3?
Ver pista de ayuda
Revisa también los esquemas de respuesta y el del seguimiento, no solo el de entrada.
Un esquema de entrada es una lista de lo que el cliente puede proponer. Si en esa lista aparece algo que solo el servidor debería decidir, el contrato está invitando al cliente a decidirlo, y el código tendrá que acordarse de ignorarlo cada vez. Es la misma familia de fallos de la asignación masiva, vista desde el contrato. OpenAPI ofrece readOnly para marcar las propiedades que solo salen, pero lo más limpio es no tenerlas en el esquema de entrada.
Compara el esquema de entrada del pedido con el de salida y con la regla R4. Las notas del equipo cuentan por qué alguien lo agregó.
Responde para continuar
¿Qué propiedad del esquema de entrada del pedido es, según la política, un valor que calcula el servidor? Escríbela tal como aparece en el contrato.
Ver pista de ayuda
En el esquema de salida esa misma propiedad sí está marcada como de solo lectura.
El equipo quiere publicar el contrato como aprobado. Tienes tres hallazgos de diseño en un documento que el validador de formato dio por bueno. La respuesta útil no es «no» ni una lista de reglas, sino qué cambiar en el contrato para que lo que se construya a partir de él ya nazca correcto.
Responde para continuar
¿Qué le recomiendas al equipo de pedidos antes de publicar el contrato?
Ver pista de ayuda
El contrato ya tiene un esquema de seguridad pensado para las sedes que nadie usa.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.