Práctica · Bloque 1

HTTP, APIs y asincronía conceptual

Preguntas para aplicar las unidades 1.1, 1.2 y 1.3 directamente en la web. Las respuestas redactadas y las selecciones tipo test se guardan en este navegador para que puedas recuperarlas y revisarlas después con Codex.

9ejercicios independientes
Directossin archivos ni entrega obligatoria
2 + 1series y caso para profundizar

Cómo trabajar este bloque

Abre un ejercicio, lee la pregunta y responde en su cuadro de texto o selecciona una opción. El guardado es automático y local: no se envía a ningún servidor.

Las descargas, criterios detallados y materiales largos quedan dentro de Profundización opcional. Las dos series y el caso profesional sí son prácticas extensas para cuando quieras trabajar con más proceso.

Ver y revisar las respuestas guardadas

11 actividades disponibles.

Ejercicios independientes

Son preguntas breves y autocontenidas. No requieren descargar archivos ni redactar un documento formal.

EX-B1-01

Anatomía de una petición extraviada

  • Respuesta redactada
  • Interpretación
  • Inicial

El equipo de soporte recibió un registro incompleto de una petición que falló. Antes de escalar la incidencia necesita reconstruir qué envió realmente el cliente y separar cada dato según su lugar en HTTP.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

¿Qué parte del registro corresponde a la URL, la ruta, la query, los headers y el body, y qué dato solo puedes inferir?

Información que necesitas

09:17:02  cliente=mobile-app/4.8
09:17:02  objetivo=https://archivo.intra.example/v1/expedientes/EXP-204?incluir=eventos&idioma=es
09:17:02  operación=actualizar parcialmente
09:17:02  x-request-id: req-8f21
09:17:02  content-type: application/json
09:17:02  authorization: Bearer [OCULTO]
09:17:02  payload-bytes=47
09:17:02  {"estado":"en_revision","notificar":false}
09:17:03  reintentos-configurados=0
09:17:03  respuesta-no-capturada

Para ordenar tu razonamiento

  1. Separa las líneas en componentes HTTP sin copiar explicaciones de memoria.
  2. Identifica las dos líneas que son configuración o contexto del cliente.
  3. Explica en una frase qué información impide conocer el resultado final.

Escribe lo que piensas. Se guarda automáticamente en este navegador.

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Empieza por los límites
  • Localiza primero la URL completa y el objeto delimitado por llaves.
  • Todo lo demás debe clasificarse, no asumirse automáticamente como header.
Pista 2 · Lee la intención
  • La frase «actualizar parcialmente» permite razonar sobre el método, pero no constituye una línea HTTP observada.
  • Anota el nivel de certeza de esa elección.
Pista 3 · Revisa la frontera
  • Un parámetro tras el signo de interrogación pertenece a la query.
  • Un contador de reintentos es configuración del cliente, no contenido del mensaje enviado.
Profundización opcional

Reconstruir URL, método, ruta, query parameters, headers y body, y explicar el recorrido cliente-servidor sin recurrir todavía a FastAPI.

Contexto adicional

  • Trabaja únicamente con las evidencias del registro. Dos líneas son contexto operativo y no forman parte del mensaje HTTP.
  • Cuando una conclusión no pueda demostrarse, márcala como desconocida en lugar de inventarla.
  • Distingue siempre el dato observado de la interpretación que haces sobre él.

Cómo revisar tu respuesta

  • URL, ruta y query no aparecen mezcladas.
  • Los headers no se atribuyen al body y el JSON no se trata como parte de la URL.
  • Las dos líneas irrelevantes se reconocen y se justifica por qué no pertenecen al mensaje HTTP.
  • Las inferencias se diferencian explícitamente de los hechos observados.
  • El recorrido conserva una petición y una respuesta como mensajes distintos.

Material descargable opcional

EX-B1-02

El código de estado del incidente

  • Tipo test
  • Clasificación razonada
  • Inicial

Una API documental responde siempre con 200, incluso cuando el consumidor no puede continuar. Debes proponer respuestas observables para seis situaciones sin diseñar todavía un contrato de errores completo.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

¿Qué código de estado escogerías en cada caso y qué tendría que hacer el cliente después de recibirlo?

Información que necesitas

A. La colección se obtiene correctamente y contiene 18 documentos.
B. Se crea un expediente nuevo con identificador asignado por el servidor.
C. El campo fecha_cierre contiene "mañana" y el contrato exige una fecha ISO.
D. El expediente EXP-999 no existe.
E. La referencia externa REF-77 ya pertenece a otro expediente.
F. La base de datos deja de responder durante una operación válida.

Para ordenar tu razonamiento

  1. Clasifica primero cada situación como éxito, problema del cliente o fallo del servidor.
  2. Elige un código concreto para A–F y justifícalo con una frase.
  3. Señala un caso en el que otra respuesta también sería defendible bajo un supuesto distinto.

Selecciona tus respuestas

Cada elección se guarda automáticamente en este navegador.

1. A. La colección se obtiene correctamente y contiene 18 documentos.
2. B. Se crea un expediente con un identificador asignado por el servidor.
3. C. fecha_cierre contiene «mañana» y el contrato exige una fecha ISO.
4. D. El expediente EXP-999 no existe.
5. E. La referencia externa ya pertenece a otro expediente.
6. F. La base de datos deja de responder durante una operación válida.

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Decide primero la responsabilidad
  • Pregunta si una petición idéntica podría funcionar sin cambiar nada del servidor.
  • Después concreta el código dentro de la familia elegida.
Pista 2 · Conflicto no significa sintaxis inválida
  • Una representación puede estar bien formada y aun así chocar con el estado actual del sistema.
Profundización opcional

Seleccionar familias y códigos de estado adecuados, diferenciando éxito, error del cliente y error del servidor.

Contexto adicional

  • No basta con escribir un número: cada elección debe relacionarse con lo que ocurrió y con la acción que puede tomar el cliente.
  • Si dos códigos son defendibles, registra el supuesto que hace preferible uno de ellos.

Cómo revisar tu respuesta

  • No se utiliza 200 como respuesta universal.
  • Los errores provocados por datos del cliente no se clasifican como fallos internos.
  • La creación se distingue de una lectura satisfactoria cuando el servidor crea un recurso identificable.
  • La justificación describe comportamiento observable y no detalles de implementación.

Material descargable opcional

  • Matriz de incidentesPlantilla para código, familia, justificación, información de respuesta y alternativa descartada.

EX-B1-03

Contrato REST de una biblioteca de investigación

  • Respuesta redactada
  • Diseño
  • Básica

Una biblioteca interna necesita que otros sistemas consulten documentos y autores, y registren préstamos. El encargo describe capacidades, pero no rutas ni operaciones.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

¿Cómo representarías documentos, autores y préstamos como recursos sin convertir cada acción del enunciado en una ruta con un verbo?

Para ordenar tu razonamiento

  1. Propón una ruta de colección y una ruta individual para cada recurso imprescindible.
  2. Elige método y resultado esperado para abrir y finalizar un préstamo.
  3. Explica qué ocurriría si el cliente repite la petición después de perder la respuesta.

Escribe lo que piensas. Se guarda automáticamente en este navegador.

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Sustantivos antes que rutas
  • Empieza por qué entidades reconoce el negocio y cuáles poseen identidad.
  • No conviertas cada frase de los requisitos en un endpoint.
Pista 2 · Piensa en la repetición
  • Para cada operación de escritura, imagina que la respuesta se pierde y el cliente repite exactamente la petición.
Profundización opcional

Diseñar un contrato HTTP coherente mediante recursos, rutas, métodos y estados, separando sustantivos de acciones.

Contexto adicional

  • Existen documentos, autores y préstamos con identificadores estables.
  • Un documento puede tener varios autores y puede estar disponible o prestado.
  • Los consumidores deben listar y filtrar documentos, consultar un documento, abrir un préstamo y registrar su finalización.
  • La referencia del préstamo la asigna el servidor.
  • Un cliente puede repetir una petición después de perder la respuesta por un timeout.

Decisiones abiertas

  • Cómo expresar la devolución o cierre del préstamo.
  • Si la relación documento-autor necesita operaciones propias en el alcance mínimo.
  • Qué filtros pertenecen a la colección de documentos.

Cómo revisar tu respuesta

  • Las rutas expresan recursos y no una colección arbitraria de verbos remotos.
  • Colección y elemento individual se distinguen de forma consistente.
  • La apertura de un préstamo no se presenta como idempotente sin una condición adicional explícita.
  • El contrato contempla recurso inexistente y conflicto de disponibilidad.
  • La decisión abierta se documenta sin fingir que existe una única respuesta universal.

Material descargable opcional

EX-B1-04

JSON que parece válido

  • Tipo test
  • Debugging
  • Inicial

Un importador rechaza varios payloads por motivos distintos. Algunos ni siquiera son JSON; otros son JSON válido pero contradicen el contrato esperado.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

¿Qué fragmentos no son JSON, cuáles sí son JSON pero incumplen el contrato y cuál aceptarías tal como está?

Información que necesitas

Fragmento A
{'id': 'doc-7', 'title': 'Informe', 'published': True,}

Fragmento B
{"id": 7, "title": "Informe", "tags": "api,http", "published": "false",
 "summary": null, "owner": {"id": "u-3", "name": "Ada"}}

Fragmento C
{"id": "doc-8", "title": "Acta", "tags": ["archivo", 2026],
 "published": false, "owner": null}

Fragmento D
{"id": "doc-9", "title": "Notas", "tags": [],
 "published": true, "owner": {"id": "u-8", "name": "Lin"}}

Para ordenar tu razonamiento

  1. Clasifica A–D antes de intentar corregirlos.
  2. Nombra el primer problema concreto que encuentres en cada fragmento.
  3. Explica por qué null y un campo ausente no significan necesariamente lo mismo.

Selecciona tus respuestas

Cada elección se guarda automáticamente en este navegador.

1. Fragmento A
2. Fragmento B
3. Fragmento C
4. Fragmento D

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Dos preguntas distintas
  • Primero pregunta si un parser JSON podría leer el texto.
  • Después pregunta si el valor obtenido satisface el contrato.
Pista 2 · Revisa literales y comillas
  • JSON no utiliza exactamente los mismos literales ni las mismas reglas de comillas que Python.
Pista 3 · Recorre la estructura
  • No te detengas en los campos de primer nivel: revisa elementos de arrays y objetos anidados.
Profundización opcional

Distinguir errores de sintaxis JSON de desacuerdos semánticos con un contrato, atendiendo a tipos, arrays, ausencia y null.

Contexto adicional

  • Contrato de referencia: id es string requerido; title es string requerido; tags es array de strings; published es boolean; summary puede ser string o null; owner es un objeto con id y name.
  • La ausencia de summary está permitida. La ausencia de id, title u owner no lo está.
  • No corrijas automáticamente los datos: primero clasifica y explica cada fallo.

Cómo revisar tu respuesta

  • No se valida el contrato de un fragmento antes de resolver su sintaxis JSON.
  • String, número, boolean y array no se consideran intercambiables por su apariencia.
  • Null no se interpreta como ausencia.
  • Un fragmento válido y conforme se reconoce sin introducir cambios innecesarios.

Material descargable opcional

EX-B1-05

Leer una API desde OpenAPI

  • Respuesta redactada
  • Interpretación
  • Básica

Debes preparar una integración con un catálogo cultural, pero solo dispones de un fragmento OpenAPI. La interfaz gráfica no está disponible.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

Leyendo solo el fragmento OpenAPI, ¿qué petición válida harías para buscar obras y qué respuestas puede recibir un consumidor?

Información que necesitas

GET /obras
Query opcional:
  q: string, mínimo 2 caracteres
  tipo: pintura | escultura | fotografia
  limite: integer, 1..50, default 20

Respuestas:
  200 -> WorkCollection
  400 -> Problem

GET /obras/{work_id}
  work_id: string requerido, patrón wrk-[0-9]+
  200 -> Work
  404 -> Problem

Para ordenar tu razonamiento

  1. Localiza la URL base, la ruta, el método y los parámetros disponibles.
  2. Distingue qué parámetros son opcionales y qué límites tienen.
  3. Describe una respuesta satisfactoria y un error siguiendo los schemas referenciados.

Escribe lo que piensas. Se guarda automáticamente en este navegador.

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Recorre el contrato en capas
  • Empieza por servers y paths; después baja a cada método, parameters y responses.
  • Deja components para cuando encuentres una referencia.
Pista 2 · Separa descripción y restricción
  • Una descripción explica intención; type, enum, minimum y required restringen valores.
Profundización opcional

Deducir entradas, salidas, obligatoriedad y errores directamente desde un contrato OpenAPI reducido.

Contexto adicional

  • El contrato contiene una consulta de colección y una consulta individual.
  • No se pide implementar un cliente ni memorizar toda la especificación OpenAPI.
  • Cada afirmación debe señalar el elemento del contrato que la respalda.

Cómo revisar tu respuesta

  • Los parámetros de path y query no se intercambian.
  • La obligatoriedad se obtiene de required y no de la intuición.
  • Las referencias $ref se siguen hasta el schema correspondiente.
  • La lectura funciona sin depender de Swagger UI.

Material descargable opcional

EX-B1-06

Seguro, idempotente o ninguna de las dos

  • Tipo test
  • Clasificación
  • Básica

Tras varios timeouts, un cliente reintenta todas sus peticiones por igual. Debes revisar si la semántica declarada por cada operación permite hacerlo.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

Si la primera respuesta se pierde y el cliente repite exactamente la petición, ¿qué operaciones son seguras, idempotentes o arriesgadas de reintentar?

Información que necesitas

1. GET /reservas/{id} — consulta una reserva y registra métricas de lectura.
2. HEAD /salas/{id}/disponibilidad — devuelve únicamente cabeceras.
3. POST /cargos — crea un cargo nuevo por cada petición aceptada.
4. PUT /usuarios/{id}/preferencias — sustituye todas las preferencias por el body.
5. DELETE /suscripciones/{id} — elimina la suscripción si existe.
6. PATCH /pedidos/{id} — añade 1 al contador de intentos.
7. POST /webhooks/entregas — registra la entrega; acepta una clave única de entrega.

Para ordenar tu razonamiento

  1. Clasifica las siete operaciones en segura/no segura e idempotente/no idempotente.
  2. Compara el estado tras una ejecución con el estado tras dos peticiones iguales.
  3. Elige el caso más engañoso y explica la confusión habitual.

Selecciona tus respuestas

Cada elección se guarda automáticamente en este navegador.

1. 1. GET /reservas/{id} consulta y registra métricas de lectura.
2. 2. HEAD /salas/{id}/disponibilidad devuelve únicamente cabeceras.
3. 3. POST /cargos crea un cargo por cada petición aceptada.
4. 4. PUT /usuarios/{id}/preferencias sustituye todas las preferencias.
5. 5. DELETE /suscripciones/{id} elimina la suscripción si existe.
6. 6. PATCH /pedidos/{id} añade 1 al contador de intentos.
7. 7. POST /webhooks/entregas registra una clave única de entrega.

Sin respuesta guardada.

Pistas opcionales

Pista única · Compara el estado final
  • Para idempotencia, compara el estado relevante tras una ejecución con el estado tras varias peticiones idénticas.
Profundización opcional

Clasificar operaciones HTTP por seguridad e idempotencia y predecir el riesgo de repetirlas cuando la primera respuesta se pierde.

Contexto adicional

  • Clasifica la operación por su comportamiento prometido, no solo por el nombre del método.
  • Diferencia que una operación sea idempotente de que siempre tenga éxito o carezca de efectos secundarios.

Cómo revisar tu respuesta

  • Seguro e idempotente se evalúan como propiedades distintas.
  • Registrar métricas no invalida automáticamente la intención segura de una lectura.
  • La idempotencia no se confunde con obtener la misma representación o el mismo código en cada intento.
  • Los reintentos consideran el efecto de una primera ejecución cuya respuesta se perdió.

Material descargable opcional

EX-B1-07

Cronología de una petición

  • Respuesta redactada
  • Diseño de secuencia
  • Inicial

Dos trazas simplificadas contienen los mismos tipos de pasos, pero una reutiliza una conexión existente. Debes reconstruir ambas cronologías y separar responsabilidades.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

¿En qué orden deben ocurrir los pasos de una primera petición y cuáles podrían desaparecer cuando se reutiliza una conexión?

Información que necesitas

A · El cliente interpreta el JSON.
B · El servidor ejecuta la lógica.
C · El cliente resuelve el host.
D · El servidor envía la respuesta.
E · Se establece la conexión.
F · El cliente construye la petición.
G · El servidor recibe y analiza HTTP.
H · El cliente recibe la respuesta.
I · El cliente envía la petición.
J · El servidor serializa el resultado.

Para ordenar tu razonamiento

  1. Ordena las tarjetas A–J para la primera traza.
  2. Marca qué pasos pertenecen al cliente, la red o el servidor.
  3. Explica qué cambia en la segunda traza y por qué.

Escribe lo que piensas. Se guarda automáticamente en este navegador.

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Identifica prerequisitos
  • Una conexión necesita un destino; el servidor necesita recibir datos antes de procesarlos.
Pista 2 · Cambia de perspectiva
  • Recorre la línea temporal primero desde el cliente y luego desde el servidor para detectar inversiones.
Profundización opcional

Ordenar resolución, conexión, petición, procesamiento, respuesta y representación distinguiendo red, HTTP, aplicación y datos.

Contexto adicional

  • Las tarjetas están deliberadamente desordenadas.
  • La segunda traza no repite todos los pasos de la primera.
  • No es necesario conocer paquetes TCP ni detalles criptográficos.

Cómo revisar tu respuesta

  • La lógica de aplicación no se ejecuta antes de que el servidor reciba la petición.
  • La serialización o interpretación del JSON no se confunde con el transporte.
  • La reutilización de conexión elimina pasos solo cuando la evidencia lo permite.
  • Petición y respuesta mantienen dirección y fronteras claras.

Material descargable opcional

EX-B1-08

¿Cuándo puede avanzar otra tarea?

  • Respuesta redactada
  • Análisis temporal
  • Básica

Un servicio atiende tres trabajos con fases de red, cálculo y disco. Debes razonar sobre posibles puntos de cesión sin escribir asyncio ni código de FastAPI.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

Mientras una tarea espera red o disco, ¿qué otra tarea podría avanzar y qué parte no se vuelve más rápida por usar async?

Información que necesitas

Tarea A: preparar petición (1) → esperar red (4) → validar respuesta (2)
Tarea B: calcular informe (5) → escribir archivo (3)
Tarea C: leer archivo (3) → transformar filas (2) → esperar confirmación remota (2)

Los números son unidades relativas de duración, no segundos medidos.

Para ordenar tu razonamiento

  1. Clasifica cada fase como espera de I/O o trabajo activo de CPU.
  2. Propón un orden concurrente posible sin ejecutar dos cálculos a la vez.
  3. Explica con este caso la diferencia entre concurrencia y paralelismo.

Escribe lo que piensas. Se guarda automáticamente en este navegador.

Sin respuesta guardada.

Pistas opcionales

Pista 1 · Colorea espera y trabajo
  • Usa dos categorías iniciales: la CPU trabaja o espera a un sistema externo.
Pista 2 · Rellena huecos
  • Cuando una tarea espera, busca otra fase lista para usar la CPU.
Pista 3 · Verifica la restricción
  • En este escenario no puedes dibujar dos cálculos activos en el mismo instante.
Profundización opcional

Reconocer esperas de I/O, trabajo de CPU y oportunidades de concurrencia sin confundirlas con paralelismo.

Contexto adicional

  • Una sola CPU lógica ejecuta trabajo de Python en cada instante del escenario.
  • Las esperas de red y disco no necesitan cálculo activo durante toda su duración.
  • El planificador solo puede cambiar de tarea en los puntos de cesión marcados como posibles.

Cómo revisar tu respuesta

  • Las esperas de I/O se distinguen del cálculo activo.
  • El cronograma no ejecuta dos tramos de CPU simultáneamente en una única CPU lógica.
  • La cesión se justifica por una espera o punto cooperativo, no por magia.
  • No se afirma que async acelere el cálculo del informe.

Material descargable opcional

EX-B1-09

Cambio compatible o ruptura

  • Respuesta redactada
  • Revisión de contrato
  • Básica

Un proveedor propone una versión nueva de su contrato y afirma que ningún consumidor deberá cambiar. Debes revisar el diff antes de aprobarlo.

Pensar y responder en la web

No necesitas descargar nada ni preparar una entrega.

Pregunta central

¿Qué cambios puede aceptar un consumidor existente sin modificarse y cuáles rompen peticiones o respuestas que antes eran válidas?

Información que necesitas

Cambios propuestos:
1. /records/{record_id} pasa a /record/{id}
2. El identificador pasa de integer a string
3. owner_id se añade como campo requerido
4. archived_at se añade como string o null opcional
5. La respuesta 404 desaparece y 200 puede contener null
6. Se documenta una nueva respuesta 429

Para ordenar tu razonamiento

  1. Clasifica cada cambio como compatible, dudoso o ruptura.
  2. Explica qué consumidor se vería afectado en los dos cambios de mayor impacto.
  3. Propón una transición breve para una ruptura confirmada.

Escribe lo que piensas. Se guarda automáticamente en este navegador.

Sin respuesta guardada.

Pistas opcionales

Pista única · Piensa como un consumidor existente
  • Imagina una petición válida ayer y una respuesta que el cliente sabía interpretar ayer. Comprueba ambas contra el contrato propuesto.
Profundización opcional

Identificar cambios compatibles y rupturas en rutas, nombres, tipos, campos requeridos y respuestas.

Contexto adicional

  • Considera clientes que generan código desde OpenAPI y clientes que interpretan respuestas manualmente.
  • No todo cambio visible rompe necesariamente el contrato; explica quién podría verse afectado.

Cómo revisar tu respuesta

  • Se revisan rutas, parámetros, tipos, required y códigos de respuesta.
  • Añadir información opcional no se trata igual que exigir un campo nuevo.
  • El impacto se relaciona con consumidores concretos.
  • Las transiciones evitan mantener versiones paralelas sin necesidad demostrada.

Material descargable opcional

Series

Prácticas extendidas y opcionales. Cada serie conserva una base común y una parte utiliza el resultado de la anterior.

EX-B1-S01

Soporte de una API desconocida

  • Práctica extendida
  • Caso profesional
  • Básica
  • Guiado de alto a ligero
  • M-HTTP

Una aplicación móvil dejó de crear expedientes tras una actualización del proveedor. El mismo ticket, tráfico capturado y contrato reducido se conservan durante las tres partes.

Abrir práctica extendida: base común y 3 partes

Base común

  • El cliente informa de que la red funciona y otras operaciones contra el mismo host responden.
  • La captura contiene una petición completa y una respuesta HTTP.
  • El contrato declara un media type específico para la creación.
  • Cada conclusión debe enlazarse con una evidencia del paquete.

Paquete de trabajo

Parte 1 · Guiado alto

EX-B1-S01-01 · Reconstruir el intercambio

Ordenar las evidencias y producir una representación conceptual de petición y respuesta.

Qué debes hacer
  1. Separa observaciones del ticket, captura HTTP y contrato.
  2. Reconstruye método, URL, headers, body, estado y body de respuesta.
  3. Señala cualquier dato que falte o esté redactado.
  4. Anota qué evidencia respalda cada elemento.
Entrega esperada
  • Petición y respuesta reconstruidas.
  • Tabla evidencia → conclusión.
Criterios de aceptación
  • No se inventan headers o campos ausentes.
  • Petición y respuesta conservan sus fronteras.
  • Cada conclusión importante cita una línea o sección concreta.
Pista 1 · Tres fuentes
  • No mezcles lo que dice el usuario con lo capturado en red ni con lo prometido por el contrato.
Pista 2 · Orden de lectura
  • Empieza por request line y status line; después añade headers y body a cada mensaje.

Parte 2 · Guiado moderado

EX-B1-S01-02 · Clasificar el fallo

Determinar si el problema pertenece al transporte, HTTP, JSON o contrato y descartar causas plausibles.

Qué debes hacer
  1. Formula una hipótesis principal y al menos dos alternativas.
  2. Comprueba cada hipótesis contra ticket, tráfico y OpenAPI.
  3. Clasifica la capa en la que aparece la discrepancia.
  4. Explica por qué dos causas plausibles no encajan con la evidencia.
Entrega esperada
  • Diagnóstico principal con nivel de confianza.
  • Dos descartes razonados.
Criterios de aceptación
  • El diagnóstico diferencia que HTTP haya respondido de que la operación haya sido aceptada.
  • La validez sintáctica del JSON se evalúa aparte de su conformidad contractual.
  • Los descartes utilizan evidencia y no intuiciones sobre frameworks.
Pista · Compara observado y prometido
  • Busca la primera diferencia verificable entre el mensaje capturado y la operación descrita en OpenAPI.

Parte 3 · Guiado ligero

EX-B1-S01-03 · Proponer el contrato corregido

Rediseñar el comportamiento observable y explicar una transición compatible.

Qué debes hacer
  1. Decide si debe cambiar el cliente, el contrato, el servidor o una combinación.
  2. Describe el comportamiento corregido para éxito y error.
  3. Propón una transición que contemple consumidores existentes.
  4. Define criterios que permitirían verificar el cambio sin conocer la implementación.
Entrega esperada
  • Contrato corregido a nivel de diseño.
  • Nota de compatibilidad y transición.
  • Criterios observables de verificación.
Criterios de aceptación
  • La propuesta corrige la discrepancia diagnosticada.
  • La transición identifica al consumidor afectado.
  • Los criterios pueden comprobarse mediante mensajes HTTP.
Pista · Cambia lo mínimo necesario
  • No rediseñes toda la API si una frontera concreta explica el incidente.

EX-B1-S02

Contrato de consulta de datos públicos

  • Práctica extendida
  • Diseño
  • Básica
  • Guiado de moderado a ligero
  • M-HTTP

Un equipo de análisis quiere consultar indicadores municipales desde una API interna. Solo existe una pequeña muestra tabular y varias restricciones de consumo.

Abrir práctica extendida: base común y 3 partes

Base común

  • La muestra contiene municipios, periodos e indicadores con unidades diferentes.
  • Los consumidores necesitan consultas filtradas y una exportación.
  • La colección debe paginarse y rechazar límites desproporcionados.
  • No se consumirá todavía una API pública ni se implementará FastAPI.

Paquete de trabajo

Parte 1 · Guiado moderado

EX-B1-S02-01 · Del dato al recurso

Identificar recursos, representaciones e identificadores a partir de la muestra.

Qué debes hacer
  1. Distingue entidades con identidad de valores observados y catálogos.
  2. Propón una representación JSON para una observación y otra para una colección.
  3. Registra cómo representarás un valor ausente sin inventarlo.
  4. Describe dos relaciones entre los recursos propuestos.
Entrega esperada
  • Inventario de recursos e identificadores.
  • Dos representaciones JSON conceptuales.
Criterios de aceptación
  • La interfaz no se modela como una lista de verbos.
  • Municipio, indicador, periodo, valor y unidad no se confunden.
  • El valor ausente conserva su significado.
Pista · Busca identidad y estabilidad
  • Un nombre visible puede cambiar; revisa qué códigos de la muestra pueden funcionar como identificadores.

Parte 2 · Guiado moderado

EX-B1-S02-02 · Rutas, filtros y errores

Diseñar operaciones de consulta y exportación sobre el modelo de recursos anterior.

Qué debes hacer
  1. Define rutas y métodos para consultar colecciones y elementos.
  2. Asigna filtros a path o query y justifica la elección.
  3. Diseña paginación y un límite máximo observable.
  4. Selecciona estados para recurso ausente, filtro inválido y solicitud demasiado amplia.
  5. Decide cómo expresar la exportación sin introducir procesamiento asíncrono implementado.
Entrega esperada
  • Tabla de operaciones y parámetros.
  • Matriz de estados y condiciones.
Criterios de aceptación
  • Los filtros opcionales no se convierten arbitrariamente en segmentos de ruta.
  • La paginación tiene comportamiento y límites explícitos.
  • Los errores permiten al consumidor corregir la petición.
Pista · La ruta identifica; la query modifica la consulta
  • Utiliza esta regla como punto de partida y registra cualquier excepción.

Parte 3 · Guiado ligero

EX-B1-S02-03 · Esqueleto de contrato OpenAPI

Trasladar el diseño a un contrato que un consumidor pueda leer y convertir en casos de prueba.

Qué debes hacer
  1. Completa paths, parameters y responses del esqueleto proporcionado.
  2. Define schemas reutilizables para observación, colección paginada y error.
  3. Incluye ejemplos mínimos coherentes con la muestra.
  4. Revisa required, tipos, formatos y referencias.
Entrega esperada
  • Fragmento OpenAPI legible y autocontenido.
  • Tres casos de prueba descritos en lenguaje natural a partir del contrato.
Criterios de aceptación
  • Un consumidor puede formular una petición válida sin información externa.
  • Las respuestas satisfactoria y de error tienen schemas identificables.
  • Los ejemplos no contradicen tipos ni campos requeridos.
Pista · Contrato antes que decoración
  • Prioriza operaciones, parámetros, schemas y respuestas; no necesitas completar todos los campos opcionales de OpenAPI.

Caso profesional extenso

Práctica extendida · Caso profesional B1

Auditoría previa de integración

Revisa una propuesta de intercambio de expedientes con requisitos contradictorios, mensajes HTTP, JSON y un fragmento OpenAPI. La entrega combina inventario de recursos, contrato corregido, matriz de estados, riesgos y preguntas al cliente.