Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Renzo717/Aula-Virtual-Universidad-Radiolocucion/llms.txt

Use this file to discover all available pages before exploring further.

The dashboard module (/api/dashboard) serves role-specific summary data. Because the information differs significantly per user type, each role has its own dedicated endpoint rather than a single multipurpose response. All routes require authentication; attempting to call an endpoint intended for a different role returns 403.

Admin Dashboard

Platform-wide statistics

GET /api/dashboard/stats
Returns a snapshot of platform-wide counters for the admin overview panel. All counts are computed in parallel from the live database. Auth: admin only
curl -X GET https://api.nuestravoz.edu.ar/api/dashboard/stats \
  -H "Authorization: Bearer <token>"
const response = await fetch("/api/dashboard/stats", {
  headers: { Authorization: `Bearer ${token}` },
});
const { data }: { data: DashboardStats } = await response.json();
data
DashboardStats
cursosActivos
number
Number of subjects (materias) with activa = true.
carrerasActivas
number
Number of careers (carreras) with activa = true.
tareasPendientes
number
Number of activities with estado = 'pendiente' across the whole platform.
totalUsuarios
number
Total number of user profiles in the system.
usuariosActivos
number
Number of profiles with status = 'activo'.
totalEstudiantes
number
Number of profiles with rol = 'estudiante'.
{
  "data": {
    "cursosActivos": 18,
    "carrerasActivas": 4,
    "tareasPendientes": 3,
    "totalUsuarios": 312,
    "usuariosActivos": 289,
    "totalEstudiantes": 274
  }
}

Recent audit activity

GET /api/dashboard/actividad
Returns the 10 most recent entries from the audit log, ordered newest-first. Each entry includes a nested usuario with the acting user’s name. Useful for the admin activity feed. Auth: admin only
curl -X GET https://api.nuestravoz.edu.ar/api/dashboard/actividad \
  -H "Authorization: Bearer <token>"
data
AuditoriaLog[]
Up to 10 audit log entries, newest first.
id
string
Log entry UUID.
accion
string
Human-readable action label (e.g. "Nueva actividad", "Entrega calificada").
modulo
string
Module that generated the event (e.g. "Aula Virtual", "Finales").
estado
string
Audit state: one of completado, procesado, revision, or alerta.
detalle
object | null
Optional structured metadata for the event.
created_at
string
ISO 8601 timestamp.
usuario
object
Acting user’s profile: nombre, apellido.
{
  "data": [
    {
      "id": "abc123",
      "accion": "Entrega calificada",
      "modulo": "Aula Virtual",
      "estado": "completado",
      "detalle": null,
      "created_at": "2025-07-10T14:32:00Z",
      "usuario": { "nombre": "Carla", "apellido": "Méndez" }
    }
  ]
}

Student Dashboard

Student summary

GET /api/dashboard/alumno
Returns personalised statistics for the authenticated student: pending tasks, overdue activities, a general grade average, the 5 most engaged forum threads across their subjects, and the next 5 upcoming deadlines. If the student has no active enrollments, all counts are zero and arrays are empty. Auth: estudiante only
curl -X GET https://api.nuestravoz.edu.ar/api/dashboard/alumno \
  -H "Authorization: Bearer <token>"
const response = await fetch("/api/dashboard/alumno", {
  headers: { Authorization: `Bearer ${token}` },
});
const { data }: { data: AlumnoDashboard } = await response.json();
data
AlumnoDashboard
tareasPendientes
number
Count of active activities across enrolled subjects that the student has not yet submitted (status neither entregada nor calificada).
promedioGeneral
number | null
Arithmetic mean of all graded (nota) submissions, rounded to one decimal place. null if the student has no grades yet.
atrasadas
number
Count of pending activities whose fecha_entrega is in the past (overdue and unsubmitted).
forosPopulares
ForoPopular[]
Up to 5 forum threads from the student’s subjects, ranked by combined respuestas_count + reacciones_count.
id
string
Thread UUID.
titulo
string
Thread title.
materia_id
string
Parent subject UUID.
materia_nombre
string
Parent subject display name.
respuestas_count
number
Total replies.
reacciones_count
number
Total likes.
autor
object | undefined
nombre, apellido of the thread author.
proximasEntregas
ProximaEntregaResumen[]
Up to 5 upcoming (future deadline) unsubmitted activities, sorted by fecha_entrega ascending.
id
string
Activity UUID.
titulo
string
Activity title.
materia_id
string
Parent subject UUID.
materia_nombre
string
Parent subject display name.
fecha_entrega
string
ISO 8601 deadline.
{
  "data": {
    "tareasPendientes": 4,
    "promedioGeneral": 7.3,
    "atrasadas": 1,
    "forosPopulares": [
      {
        "id": "f1a2b3",
        "titulo": "Dudas sobre el examen parcial",
        "materia_id": "m1",
        "materia_nombre": "Locución I",
        "respuestas_count": 14,
        "reacciones_count": 8,
        "autor": { "nombre": "Tomás", "apellido": "Ríos" }
      }
    ],
    "proximasEntregas": [
      {
        "id": "a9b8c7",
        "titulo": "TP 3 – Guión radial",
        "materia_id": "m1",
        "materia_nombre": "Locución I",
        "fecha_entrega": "2025-08-01T23:59:00Z"
      }
    ]
  }
}

Teacher Dashboard

Teacher summary

GET /api/dashboard/docente
Returns aggregate statistics for the authenticated teacher across all of their active assigned subjects: how many submissions are awaiting grading, how many subjects are assigned, the total unique student count, and how many activities are currently active. If the teacher has no assigned subjects, all counts are zero. Auth: docente only
curl -X GET https://api.nuestravoz.edu.ar/api/dashboard/docente \
  -H "Authorization: Bearer <token>"
const response = await fetch("/api/dashboard/docente", {
  headers: { Authorization: `Bearer ${token}` },
});
const { data }: { data: DocenteDashboard } = await response.json();
data
DocenteDashboard
entregasPorCalificar
number
Number of submissions with estado = 'entregada' (received but not yet graded) across all activities in the teacher’s subjects.
cursosAsignados
number
Total number of active subjects assigned to the teacher (docente_id match).
totalAlumnos
number
Unique count of students enrolled in the teacher’s subjects (directly or via career-level inscription), deduplicated across subjects.
actividadesActivas
number
Count of activities with estado = 'activa' across the teacher’s subjects.
{
  "data": {
    "entregasPorCalificar": 11,
    "cursosAsignados": 3,
    "totalAlumnos": 87,
    "actividadesActivas": 6
  }
}

Pending grading queue

GET /api/dashboard/docente/pendientes-calificar
Returns a ranked list of activities that have ungraded submissions, showing how many submissions are waiting per activity. Only activities with at least one submission in estado = 'entregada' appear. Results are sorted by pendientes count descending so the most urgent items surface first. Auth: docente only
curl -X GET https://api.nuestravoz.edu.ar/api/dashboard/docente/pendientes-calificar \
  -H "Authorization: Bearer <token>"
data
ActividadPendienteCalificar[]
Activities with pending submissions, sorted by pendientes descending.
actividad_id
string
Activity UUID.
titulo
string
Activity title.
materia_id
string
Parent subject UUID.
materia_nombre
string
Parent subject display name.
pendientes
number
Count of ungraded (entregada) submissions for this activity.
{
  "data": [
    {
      "actividad_id": "act-uuid-1",
      "titulo": "TP 2 – Análisis de entrevista",
      "materia_id": "mat-uuid-1",
      "materia_nombre": "Periodismo Radial",
      "pendientes": 8
    },
    {
      "actividad_id": "act-uuid-2",
      "titulo": "TP 1 – Guión",
      "materia_id": "mat-uuid-2",
      "materia_nombre": "Locución I",
      "pendientes": 3
    }
  ]
}

Build docs developers (and LLMs) love