Saltar a contenido

Eliminar Curso Escolar

DELETE /api/v2/school-courses/:id

Auth: Bearer JWT (rol: admin)

Descripción: Elimina un curso escolar del sistema. CRÍTICO: Solo permite eliminar cursos que NO tengan registros asociados para mantener la integridad de datos.

Params

Campo Tipo Requerido Descripción
id number ID del curso escolar a eliminar

cURL

curl -X DELETE http://localhost:7001/api/v2/school-courses/5 \
  -H "Authorization: Bearer <TOKEN>"

Response (200)

{
  "ok": true,
  "message": "School course deleted successfully"
}

Errores

Código Descripción Ejemplo
401 Token inválido o expirado { "message": "Unauthorized" }
403 Usuario sin permisos de admin { "message": "Forbidden" }
404 Curso no encontrado { "message": "School course not found" }
409 Curso tiene registros asociados { "message": "Cannot delete school course: it has associated records (time records, registrations, grades, etc.). This would affect system integrity." }
409 Curso es el actual { "message": "Cannot delete the current active school course. Please create a new course first to make it current." }

Restricciones de Seguridad

⚠️ IMPORTANTE: Este endpoint tiene validaciones estrictas para proteger la integridad de datos:

  1. No se puede eliminar si tiene registros asociados:
  2. Fichajes (timeRecords)
  3. Banco de horas (hoursBank)
  4. Calificaciones (grades)
  5. Eventos/Horarios (eventCalendar)
  6. Matrículas (registrations)
  7. Centros (centers)
  8. Nóminas (payRolls)

  9. No se puede eliminar el curso actual: Debe crear un nuevo curso primero para que pase a ser el actual.

Casos de Uso

✅ Casos válidos para eliminar: - Curso creado por error sin ningún registro asociado - Curso de prueba que no se usó - Curso duplicado accidentalmente

❌ Casos que NO se pueden eliminar: - Curso con estudiantes matriculados - Curso con fichajes de empleados - Curso con calificaciones registradas - Curso que es el actual del sistema

Notas

  • Operación irreversible: Una vez eliminado, no se puede recuperar
  • Validación exhaustiva: Se verifican todas las tablas relacionadas antes de eliminar
  • Seguridad primero: Prefiere fallar antes que comprometer la integridad de datos

Relacionado

  • Crear Curso Escolar - POST /api/v2/school-courses
  • GET /api/school-courses/all - Listar todos los cursos (v1)