Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/andrespaul123/micole-flutter/llms.txt

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

Classroom operations cover everything a teacher does once the academic structure is in place. Attendance tracks who was present on a given date. The agenda holds homework assignments and exams, with optional file attachments and student submission tracking. The grade book is organized by evaluation period and weighted criteria. The anecdotario captures behavioral or academic observations per student. Circulars let directors and teachers broadcast announcements to the school community. All endpoints require Authorization: Bearer <token>.

Attendance

GET /api/periodos/:periodoId/asignaciones/:asignacionId/asistencia

List all attendance records for a teacher’s class assignment within an academic period.
curl http://<your-server>/api/periodos/1/asignaciones/5/asistencia \
  -H "Authorization: Bearer <token>"
periodoId
integer
required
ID of the academic period.
asignacionId
integer
required
ID of the teacher’s class assignment (asignacion_docente).
Response — 200 OK Returns an array of Asistencia objects, each containing an id, fecha, and a detalles array.

GET /api/periodos/:periodoId/asignaciones/:asignacionId/asistencia/:fecha

Retrieve the attendance record for a specific date.
curl http://<your-server>/api/periodos/1/asignaciones/5/asistencia/2024-10-15 \
  -H "Authorization: Bearer <token>"
periodoId
integer
required
ID of the academic period.
asignacionId
integer
required
ID of the teacher’s class assignment.
fecha
string
required
Date to query in YYYY-MM-DD format.
Response — 200 OK Returns a single Asistencia object.

POST /api/periodos/:periodoId/asignaciones/:asignacionId/asistencia

Record attendance for a class on a specific date.
curl -X POST http://<your-server>/api/periodos/1/asignaciones/5/asistencia \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "fecha": "2024-10-15",
    "asistencias": [
      { "estudiante_id": 12, "estado": "presente", "observacion": null },
      { "estudiante_id": 13, "estado": "ausente", "observacion": "No avisó" }
    ]
  }'
periodoId
integer
required
ID of the academic period.
asignacionId
integer
required
ID of the teacher’s class assignment.
fecha
string
required
Date of the attendance record in YYYY-MM-DD format.
asistencias
AsistenciaDetalle[]
required
Array of per-student attendance entries. See AsistenciaDetalle fields below.
Response — 201 Created

PUT /api/asistencia/:id

Update an existing attendance record (correct mistakes after submission).
curl -X PUT http://<your-server>/api/asistencia/9 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "asistencias": [
      { "estudiante_id": 12, "estado": "tardanza", "observacion": "Llegó 10 min tarde" }
    ]
  }'
id
integer
required
ID of the attendance record to update.
asistencias
AsistenciaDetalle[]
required
Updated array of per-student attendance entries.
Response — 200 OK

AsistenciaDetalle Fields

estudiante_id
integer
ID of the student.
estado
string
Attendance status. Common values: presente, ausente, tardanza.
observacion
string | null
Optional note about the student’s attendance on this date.

Agenda (Tasks & Exams)

GET /api/periodos/:periodoId/asignaciones/:asignacionId/agenda

List all agenda items (tasks and exams) for a class assignment.
curl http://<your-server>/api/periodos/1/asignaciones/5/agenda \
  -H "Authorization: Bearer <token>"
periodoId
integer
required
ID of the academic period.
asignacionId
integer
required
ID of the teacher’s class assignment.
Response — 200 OK Returns an array of Agenda objects, each with an archivos array of attached files.

POST /api/periodos/:periodoId/asignaciones/:asignacionId/agenda

Create a new task or exam for a class.
curl -X POST http://<your-server>/api/periodos/1/asignaciones/5/agenda \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "titulo": "Examen de álgebra",
    "descripcion": "Capítulos 1 al 4",
    "tipo": "examen",
    "fecha_entrega": "2024-10-25"
  }'
periodoId
integer
required
ID of the academic period.
asignacionId
integer
required
ID of the teacher’s class assignment.
titulo
string
required
Title of the task or exam.
descripcion
string
required
Detailed description or instructions for the item.
tipo
string
required
Type of agenda item. Common values: tarea, examen.
fecha_entrega
string
Due date in YYYY-MM-DD format. Optional for non-graded items.
Response — 201 Created Returns the created Agenda object inside data.

GET /api/agenda/:id

Retrieve a single agenda item with full detail including attached files.
curl http://<your-server>/api/agenda/42 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the agenda item.

PUT /api/agenda/:id

Update an existing agenda item.
curl -X PUT http://<your-server>/api/agenda/42 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "titulo": "Examen de álgebra (corregido)",
    "descripcion": "Capítulos 1 al 5",
    "tipo": "examen",
    "fecha_entrega": "2024-10-27"
  }'
id
integer
required
ID of the agenda item to update.
titulo
string
required
Updated title.
descripcion
string
required
Updated description.
tipo
string
required
Updated type (tarea or examen).
fecha_entrega
string
Updated due date in YYYY-MM-DD format.
Response — 200 OK

DELETE /api/agenda/:id

Delete an agenda item and all its file attachments.
curl -X DELETE http://<your-server>/api/agenda/42 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the agenda item to delete.
Response — 204 No Content

POST /api/agenda/:id/subir-archivo

Attach one or more files to an agenda item. Send as multipart/form-data.
curl -X POST http://<your-server>/api/agenda/42/subir-archivo \
  -H "Authorization: Bearer <token>" \
  -F "archivos[]=@/path/to/document.pdf" \
  -F "archivos[]=@/path/to/rubric.docx"
id
integer
required
ID of the agenda item.
archivos[]
file[]
required
One or more files to attach. Use the array field name archivos[].
Response — 200 OK

DELETE /api/agenda-archivos/:id

Delete a specific file attachment.
curl -X DELETE http://<your-server>/api/agenda-archivos/15 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the file attachment to delete.
Response — 204 No Content

POST /api/agenda-archivos/:id/reemplazar

Replace an existing file attachment with a new version.
curl -X POST http://<your-server>/api/agenda-archivos/15/reemplazar \
  -H "Authorization: Bearer <token>" \
  -F "archivo=@/path/to/updated-document.pdf"
id
integer
required
ID of the file attachment to replace.
archivo
file
required
The new file to use as a replacement.
Response — 200 OK

GET /api/agenda/:id/entregas

List all student submissions for an agenda item.
curl http://<your-server>/api/agenda/42/entregas \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the agenda item.
Response — 200 OK Returns an EntregasResponse object containing submission records for each enrolled student.

GET /api/entregas/:id

Retrieve the detailed view of a single student submission, including attached files and any teacher feedback.
curl http://<your-server>/api/entregas/88 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the submission record.
Response — 200 OK Returns an EntregaDetalleProfesor object.

Grade Book

GET /api/asignaciones/:id/periodos-evaluacion

List the evaluation periods linked to a specific class assignment, used to populate the grade-book selector.
curl http://<your-server>/api/asignaciones/5/periodos-evaluacion \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the class assignment (asignacion_docente).
Response — 200 OK Returns an array of PeriodoEvaluacion objects.

GET /api/asignaciones/:id/periodos-evaluacion/:pId/libro-calificaciones

Retrieve the full grade book for a class assignment and evaluation period. Contains weighted criteria and each student’s grades.
curl http://<your-server>/api/asignaciones/5/periodos-evaluacion/1/libro-calificaciones \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the class assignment.
pId
integer
required
ID of the evaluation period.
Response — 200 OK
{
  "criterios": [
    { "id": 1, "nombre": "Participación", "porcentaje": 20 },
    { "id": 2, "nombre": "Examen Final", "porcentaje": 80 }
  ],
  "estudiantes": [
    {
      "estudiante_id": 12,
      "estudiante": "María González",
      "promedio": 18.5,
      "notas": [
        { "criterio_id": 1, "criterio": "Participación", "porcentaje": 20, "nota": 19 },
        { "criterio_id": 2, "criterio": "Examen Final", "porcentaje": 80, "nota": 18.25 }
      ]
    }
  ]
}
criterios
CriterioLibro[]
Weighted grading criteria for this evaluation period.
estudiantes
EstudianteLibro[]
Grade rows, one per enrolled student.

GET /api/criterios/asignacion/:asignacionId

List all grading criteria for a specific class assignment, grouped by evaluation period.
curl http://<your-server>/api/criterios/asignacion/5 \
  -H "Authorization: Bearer <token>"
asignacionId
integer
required
ID of the class assignment (asignacion_docente).
Response — 200 OK
[
  {
    "id": 1,
    "periodo_evaluacion_id": 1,
    "nombre": "Participación",
    "porcentaje": 20,
    "periodo_evaluacion": { "id": 1, "nombre": "Primer Quimestre" }
  }
]

POST /api/criterios/asignacion/:asignacionId

Create a new grading criterion for a class assignment under a specific evaluation period.
curl -X POST http://<your-server>/api/criterios/asignacion/5 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "periodo_evaluacion_id": 1,
    "nombre": "Participación",
    "porcentaje": 20
  }'
asignacionId
integer
required
ID of the class assignment.
periodo_evaluacion_id
integer
required
ID of the evaluation period this criterion belongs to.
nombre
string
required
Name of the criterion (e.g. "Participación", "Examen Final").
porcentaje
number
required
Weight of this criterion as a percentage (0–100). All criteria within the same evaluation period should sum to 100.
Response — 201 Created

PUT /api/criterios/:id

Update the name and weight of an existing grading criterion.
curl -X PUT http://<your-server>/api/criterios/1 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Participación en clase",
    "porcentaje": 25
  }'
id
integer
required
ID of the criterion to update.
nombre
string
required
Updated name for the criterion.
porcentaje
number
required
Updated weight as a percentage.
Response — 200 OK

DELETE /api/criterios/:id

Delete a grading criterion and all associated grades.
curl -X DELETE http://<your-server>/api/criterios/1 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the criterion to delete.
Response — 204 No Content

POST /api/criterios/:id/notas

Save or update grades for all students under a specific criterion.
curl -X POST http://<your-server>/api/criterios/1/notas \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "notas": [
      { "estudiante_id": 12, "nota": 19 },
      { "estudiante_id": 13, "nota": 15.5 }
    ]
  }'
id
integer
required
ID of the grading criterion.
notas
object[]
required
Array of grade entries.
Response — 200 OK

Anecdotario

The anecdotario is a logbook of behavioral or academic observations a teacher records about individual students.

GET /api/anecdotarios

List anecdotal records filtered by class assignment and academic period.
curl "http://<your-server>/api/anecdotarios?asignacion_docente_id=5&academic_period_id=1" \
  -H "Authorization: Bearer <token>"
asignacion_docente_id
integer
required
ID of the teacher’s class assignment.
academic_period_id
integer
required
ID of the academic period.
Response — 200 OK Returns an array of Anecdotario objects.

POST /api/anecdotarios

Create a new anecdotal record for a student.
curl -X POST http://<your-server>/api/anecdotarios \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "estudiante_id": 12,
    "asignacion_docente_id": 5,
    "academic_period_id": 1,
    "tipo": "positivo",
    "titulo": "Excelente participación",
    "descripcion": "El estudiante resolvió el problema correctamente frente a la clase.",
    "fecha": "2024-10-15"
  }'
estudiante_id
integer
required
ID of the student the record is about.
asignacion_docente_id
integer
required
ID of the teacher’s class assignment.
academic_period_id
integer
required
ID of the academic period.
tipo
string
required
Type of record (e.g. positivo, negativo, neutro).
titulo
string
required
Brief title summarising the observation.
descripcion
string
required
Full description of the observed event.
fecha
string
required
Date of the observation in YYYY-MM-DD format.
Response — 201 Created

DELETE /api/anecdotarios/:id

Delete an anecdotal record.
curl -X DELETE http://<your-server>/api/anecdotarios/7 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the anecdotario record to delete.
Response — 204 No Content

Circulars

Circulars are school-wide announcements published by directors or teachers and delivered to specific audience groups.

GET /api/circulares

List all circulars visible to the authenticated user.
curl http://<your-server>/api/circulares \
  -H "Authorization: Bearer <token>"
Response — 200 OK Returns an array of Circular objects.
[
  {
    "id": 1,
    "titulo": "Reunión de Padres",
    "contenido": "Se convoca a reunión el viernes 25 de octubre a las 18:00.",
    "target": "padres",
    "published_at": "2024-10-20T10:00:00Z",
    "leido": false,
    "creator": { "name": "Directora Pérez" }
  }
]

POST /api/circulares

Publish a new circular.
curl -X POST http://<your-server>/api/circulares \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "titulo": "Reunión de Padres",
    "contenido": "Se convoca a reunión el viernes 25 de octubre a las 18:00.",
    "target": "padres"
  }'
titulo
string
required
Subject line / title of the circular.
contenido
string
required
Full body text of the circular.
target
string
required
Audience group. Common values: todos, padres, profesores, estudiantes.
Response — 201 Created

GET /api/circulares/:id

Retrieve a single circular by ID.
curl http://<your-server>/api/circulares/1 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the circular.
Response — 200 OK Returns a single Circular object.

POST /api/circulares/:id/leer

Mark a circular as read by the authenticated user.
curl -X POST http://<your-server>/api/circulares/1/leer \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the circular to mark as read.
Response — 200 OK

DELETE /api/circulares/:id

Delete a circular. Only the creator or a director can delete a circular.
curl -X DELETE http://<your-server>/api/circulares/1 \
  -H "Authorization: Bearer <token>"
id
integer
required
ID of the circular to delete.
Response — 204 No Content

Criterio Model

id
integer
Unique identifier for the grading criterion.
periodo_evaluacion_id
integer
ID of the evaluation period this criterion belongs to.
nombre
string
Name of the criterion (e.g. "Participación", "Examen Final").
porcentaje
number
Weight of this criterion as a percentage (0–100).
periodo_evaluacion
object | null
Nested PeriodoEvaluacion object included when listing criteria via GET /api/criterios/asignacion/:asignacionId.

Build docs developers (and LLMs) love