{
  "ok": true,
  "api": "TC2007B · Sabores y Avisos",
  "practica4": {
    "guia": "https://startdroid.com/practicas/sabores-en-red.html",
    "identidad": "manda tu matrícula en el encabezado X-Alumno",
    "endpoints": [
      "GET    /api/restaurants",
      "GET    /api/restaurants/:id",
      "GET    /api/reviews?restaurantId=:id",
      "GET    /api/reviews/:id",
      "POST   /api/reviews",
      "PATCH  /api/reviews/:id",
      "DELETE /api/reviews/:id",
      "GET    /api/me/reviews",
      "DELETE /api/me/reviews"
    ]
  },
  "practica6": {
    "guia": "https://startdroid.com/practicas/avisos.html",
    "identidad": "usuario y contraseña en /auth/login; después `Authorization: Bearer <accessToken>`",
    "accessTokenSegundos": 300,
    "refreshTokenSegundos": 604800,
    "endpoints": [
      "POST   /api/auth/register   { usuario, password, codigoProfesor? }",
      "POST   /api/auth/login      { usuario, password }",
      "POST   /api/auth/refresh    { refreshToken }",
      "POST   /api/auth/logout     { refreshToken }",
      "DELETE /api/auth/sesiones   (Bearer) cierra todas tus sesiones",
      "GET    /api/auth/me         (Bearer)",
      "GET    /api/avisos?desde=:id (Bearer) solo los avisos con id mayor a :id",
      "GET    /api/avisos/stream   (Bearer) SSE: un evento `aviso` por cada aviso nuevo, hasta que el token expira",
      "POST   /api/avisos          (Bearer, rol profesor) { titulo, cuerpo }",
      "DELETE /api/avisos/:id      (Bearer, rol profesor)"
    ]
  }
}