The virtual classroom (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.
/api/aula) is the core module of NuestraVoz — Campus Virtual. It exposes endpoints for every major classroom feature: browsing enrolled subjects, posting announcements, creating and submitting activities (both file-based and form/quiz-based), managing downloadable resources, and configuring quick-access links. All endpoints require a valid session token; role-specific restrictions are noted per endpoint.
Subjects
List subjects
GET /api/aula/materias
- admin / preceptor — all active subjects including the assigned docente.
- docente — only subjects where
docente_idmatches the caller. - estudiante — subjects derived from the student’s active enrollments (by carrera or by specific materia inscription).
carrera object (nombre, anio) and a docente object (nombre, apellido).
Auth: All authenticated roles
Array of active subject records.
UUID of the subject.
Subject name.
Parent career UUID.
Whether the subject is promotional.
Assigned teacher UUID.
Legacy schedule string (HH:mm - HH:mm).
Structured schedule entries.
Zoom class link.
Syllabus URL.
Whether the subject is active.
Nested career:
nombre, anio.Nested teacher:
nombre, apellido.List pending activities across all subjects (student)
GET /api/aula/mis-pendientes
mi_entrega field summarising the student’s current submission state (estado, nota, tardia). If the caller is not a student, an empty array is returned.
Auth: estudiante (other roles receive { data: [] })
Query parameters:
Filter results to a single subject UUID. Ignored if the student is not enrolled in that subject.
Active activities with a
mi_entrega summary attached to each item.Activity UUID.
Activity title.
ISO 8601 deadline.
Activity state (
activa, cerrada, terminada).Nested
{ nombre } of the parent subject.Summary:
estado, nota, tardia. null if not submitted.Get single subject
GET /api/aula/:materiaId
carrera (nombre, codigo) and docente (id, nombre, apellido, avatar_url).
Auth: All authenticated roles
Full subject object with nested carrera and docente.
Announcements
List announcements
GET /api/aula/:materiaId/anuncios
autor object with nombre, apellido, and avatar_url.
Auth: All authenticated roles
Create announcement
POST /api/aula/:materiaId/anuncios
autor_id is set automatically from the authenticated user.
Auth: admin, docente
Request body (application/json):
Announcement title. Minimum 2 characters.
Announcement body. Minimum 2 characters.
Visual severity. One of
info (default) or warning.Anuncio object including the nested autor.
Activities
List activities
GET /api/aula/:materiaId/actividades
fecha_entrega ascending. Each activity includes its materiales (attached files). For students, a mi_entrega summary (estado, nota, tardia) is appended to each item.
Auth: All authenticated roles
Activity UUID.
Title.
Optional description.
entregable_simple or formulario.activa, cerrada, or terminada.ISO 8601 deadline.
Whether late submissions are accepted.
Attached material files.
Student-only:
estado, nota, tardia.Create activity
POST /api/aula/:materiaId/actividades
tipo is formulario, the preguntas array must be provided and the total of all puntos must equal exactly 10.
Auth: admin, docente
Request body (application/json) — createActividadSchema:
Activity title. Minimum 2 characters.
Optional description text.
Activity type. One of
entregable_simple (default) or formulario.Optional ISO 8601 or
YYYY-MM-DD deadline string.Whether to accept submissions after the deadline. Defaults to
true.Required when
tipo is formulario. Array of question objects. The sum of all puntos must equal 10.Each question object:enunciado(string, required) — question text, minimum 2 characters.multiple(boolean) — whether multiple answer options can be selected.puntos(number, positive) — point value for this question.opciones(array, min 2) — answer choices. Each option:texto(string),es_correcta(boolean). Single-answer questions must have exactly one correct option.
Actividad and its materiales.
Update activity
PATCH /api/aula/:materiaId/actividades/:actividadId
fecha_entrega: null.
Auth: admin, docente
Updated title (min 2 chars).
Updated description.
New deadline or
null to remove it.Toggle late submission acceptance.
Actividad with materiales.
Update activity state
PATCH /api/aula/:materiaId/actividades/:actividadId/estado
New state. One of
activa, cerrada, or terminada.Actividad.
Upload activity materials
POST /api/aula/:materiaId/actividades/:actividadId/material
multipart/form-data with up to 10 files (20 MB per file). Each uploaded file is stored in Supabase Storage and a corresponding actividad_materiales record is created. Returns all newly inserted material records.
Auth: admin, docente
Form fields:
One or more files to attach (field name
archivos). At least one file is required.ActividadMaterial records.
Delete activity material
DELETE /api/aula/:materiaId/actividades/:actividadId/material/:materialId
materialId must belong to the given actividadId, which must itself belong to materiaId.
Auth: admin, docente
{ data: { ok: true } }.
Delete activity
DELETE /api/aula/:materiaId/actividades/:actividadId
{ data: { ok: true } }.
File Submissions
Get my submission (student)
GET /api/aula/:materiaId/actividades/:actividadId/mi-entrega
archivos). Returns { data: null } if the student has not yet submitted.
Auth: estudiante (must be enrolled in the subject)
Submit or resubmit (file upload)
POST /api/aula/:materiaId/actividades/:actividadId/entrega
multipart/form-data with up to 10 files (20 MB per file). If a submission already exists, it is updated in place (files are appended). The tardia flag is set automatically when the current time is past fecha_entrega.
Auth: estudiante (must be enrolled in the subject)
Form fields:
One or more files to attach (field name
archivos). At least one file is required for new submissions.Optional text comment to accompany the submission.
Entrega object and archivos.
Grade a submission
PATCH /api/aula/:materiaId/actividades/:actividadId/entregas/:entregaId
estado to calificada.
Auth: admin, docente
Grade value. Must be between 1 and 10 (inclusive).
Entrega with the nested estudiante profile and archivos.
List all submissions for an activity (teacher)
GET /api/aula/:materiaId/actividades/:actividadId/entregas
updated_at descending. Each submission includes the nested estudiante profile and archivos.
Auth: admin, docente
Array of submission objects. Each includes
estudiante (id, nombre, apellido, email, avatar_url) and archivos.Delete a submission file
DELETE /api/aula/entregas/archivos/:archivoId
{ data: { ok: true } }.
Form Activities
Get form questions
GET /api/aula/:materiaId/actividades/:actividadId/formulario
es_correcta flag visible. Students who have already submitted see questions with answers revealed; students who have not yet submitted receive questions with es_correcta hidden (correct answers are obscured).
Auth: All authenticated roles
Submit form answers
POST /api/aula/:materiaId/actividades/:actividadId/formulario-entrega
cerrada/terminada, the deadline has passed and permite_entrega_tardia is false, or any question is left unanswered.
Auth: estudiante (must be enrolled in the subject)
Request body (application/json) — enviarFormularioSchema:
Array of answer objects. Must include one entry per question.Each item:
pregunta_id(UUID, required) — the question being answered.opcion_ids(UUID[], min 1, required) — selected option(s). Single-answer questions must have exactly one entry.
{ data: { entrega, resultados, nota } }.
Stored submission record (estado:
calificada).Computed grade (0–10).
Per-question breakdown:
pregunta_id, enunciado, puntos, puntos_obtenidos, opciones with seleccionada and es_correcta flags.Get my form submission and results (student)
GET /api/aula/:materiaId/actividades/:actividadId/mi-entrega-formulario
{ data: null } if the student has not answered yet.
Auth: estudiante (must be enrolled)
List all form results (teacher)
GET /api/aula/:materiaId/actividades/:actividadId/formulario-resultados
entrega: null.
Auth: admin, docente
Get a student’s form answers (teacher)
GET /api/aula/:materiaId/actividades/:actividadId/entregas/:entregaId/respuestas
Full submission with nested
estudiante profile.Computed grade.
Per-question result breakdown.
Resources
List resources
GET /api/aula/:materiaId/recursos
nombre and apellido.
Auth: All authenticated roles
Upload resource
POST /api/aula/:materiaId/recursos
multipart/form-data with a single file (max 20 MB). The file tipo is inferred automatically from the MIME type.
Auth: admin, docente
Form fields:
The file to upload (field name
archivo).Display name. 1–150 characters.
Optional description. Maximum 2000 characters.
Recurso including the nested subidor.
Delete resource
DELETE /api/aula/:materiaId/recursos/:recursoId
{ data: { ok: true } }.
Quick Links
List quick links
GET /api/aula/:materiaId/accesos
orden then created_at ascending.
Auth: All authenticated roles
Create quick link
POST /api/aula/:materiaId/accesos
Display label. Minimum 2 characters.
Icon identifier from the allowed set:
link, video_camera_front, menu_book, groups, language, description, quiz, calendar_month, folder, email, school, cloud_download, visibility, open_in_new.Fully qualified URL (must include protocol).
AccesoRapido.
Update quick link
PUT /api/aula/:materiaId/accesos/:accesoId
nombre, icono, and url for an existing quick link. All fields are optional.
Auth: admin, docente
Returns the updated AccesoRapido.
Delete quick link
DELETE /api/aula/:materiaId/accesos/:accesoId
{ data: { ok: true } }.
Clear legacy access fields
PATCH /api/aula/:materiaId/accesos-legacy
zoom_url and/or programa_url fields stored directly on the materias record. These fields pre-date the structured accesos_rapidos table. Supply the field(s) you want to clear by setting their value to null; omitting a field leaves it unchanged. At least one field must be provided.
Auth: admin, docente
Request body (application/json):
Pass
null to clear the legacy Zoom URL on the subject record.Pass
null to clear the legacy syllabus URL on the subject record.Roster
List enrolled students
GET /api/aula/:materiaId/alumnos
id, nombre, apellido, email, avatar_url).
Auth: admin, docente
Enrollment records with a nested
usuario profile: id, nombre, apellido, email, avatar_url.