{"service":"myAdvisor API","version":"1.0.0","status":"ok","timestamp":"2026-08-14T17:18:17.437Z","uptimeSeconds":6036,"nodeEnv":"production","port":3002,"database":{"connected":true,"dialect":"postgres","latencyMs":1,"storage":null,"host":"databases_shared-db","name":"myadvisordev"},"docs":{"architecture":"/docs (see repository docs/architecture.md)","models":"docs/models.md","note":"Auth: send JWT in HTTP header `token` after POST /accounts/login"},"routeGroups":[{"prefix":"/accounts","description":"Authentication (student and staff)","auth":"Public (rate-limited)","status":"active","routes":[{"method":"POST","path":"/accounts/login","summary":"Login; returns JWT in `token` response field","auth":"Public"}]},{"prefix":"/student","description":"Student advising, eligibility, progress, and course plans","auth":"Student JWT (`token` header); path studentId must match JWT","status":"active","routes":[{"method":"POST","path":"/student/create-plan","summary":"Create advising session + selected courses (self)","auth":"Student"},{"method":"POST","path":"/student/academic-advising/session/:studentId","summary":"Create advising session (self)","auth":"Student"},{"method":"GET","path":"/student/eligibleCourses/:semesterId","summary":"Eligible courses for semester","auth":"Student"},{"method":"GET","path":"/student/degreeProgress","summary":"Degree progress for authenticated student","auth":"Student"},{"method":"GET","path":"/student/profile","summary":"Logged-in student profile summary","auth":"Student"},{"method":"GET","path":"/student/grades/:studentId","summary":"Student grades (self)","auth":"Student"},{"method":"GET","path":"/student/courses/:studentId","summary":"Student course history (self)","auth":"Student"},{"method":"GET","path":"/student/course-plan/semesters","summary":"Own plan semesters + active term","auth":"Student"},{"method":"GET","path":"/student/course-plan/:studentId/:semesterId","summary":"Course plan (self)","auth":"Student"},{"method":"GET","path":"/student/course-plan/detail/:semesterId","summary":"Detailed course plan","auth":"Student"},{"method":"GET","path":"/student/:studentId/course-plan/:semesterId","summary":"Course plan (alt path, self)","auth":"Student"},{"method":"GET","path":"/student/course-plans/:semesterId","summary":"Own course plan for semester","auth":"Student"}]},{"prefix":"/admin","description":"Staff operations: accounts, plan review, summaries, curriculum import","auth":"Staff JWT","status":"active","routes":[{"method":"POST","path":"/admin/create/admin","summary":"Create admin account","auth":"Staff"},{"method":"POST","path":"/admin/create/student","summary":"Create student account","auth":"Staff"},{"method":"GET","path":"/admin/course-plan/all/:semesterId","summary":"All course plans for semester","auth":"Staff"},{"method":"GET","path":"/admin/course-plan/semesters/:studentId","summary":"Semesters with plans for student","auth":"Staff"},{"method":"GET","path":"/admin/course-plan/:semesterId/:studentId","summary":"One student course plan","auth":"Staff"},{"method":"PUT","path":"/admin/course-plan/review/:semesterId/:studentId/:decision","summary":"Review plan (Confirmed)","auth":"Staff"},{"method":"GET","path":"/admin/student/advising-sessions","summary":"List advising sessions","auth":"Staff"},{"method":"GET","path":"/admin/detailed-course-plan/all","summary":"Detailed plans","auth":"Staff"},{"method":"POST","path":"/admin/parse/programmeCourse","summary":"Import programme courses (upload)","auth":"Staff"},{"method":"POST","path":"/admin/parse/programmeCourseXLSX","summary":"Import programme courses (XLSX)","auth":"Staff"},{"method":"GET","path":"/admin/degreeProgress/all","summary":"Degree progress for all students","auth":"Staff"},{"method":"GET","path":"/admin/atRiskStudents","summary":"Students at academic risk (GPA / repeat fails)","auth":"Staff"},{"method":"GET","path":"/admin/studentsSummary","summary":"Student status summary and analytics insights","auth":"Staff"},{"method":"GET","path":"/admin/students","summary":"List students","auth":"Staff"},{"method":"GET","path":"/admin/student/:studentId","summary":"Student detail","auth":"Staff"},{"method":"GET","path":"/admin/student/:studentId/notes","summary":"List dated staff notes for a student","auth":"Staff"},{"method":"POST","path":"/admin/student/:studentId/notes","summary":"Add a dated staff note for a student","auth":"Staff"},{"method":"GET","path":"/admin/degreeProgress/:studentId","summary":"Degree progress for one student","auth":"Staff"},{"method":"GET","path":"/admin/potentialGraduates","summary":"Cached potential graduates report","auth":"Staff"},{"method":"POST","path":"/admin/potentialGraduates/refresh","summary":"Rerun and cache potential graduates report","auth":"Staff"}]},{"prefix":"/courses","description":"Course catalogue (reads public; writes staff)","auth":"Public reads / Staff writes","status":"active","routes":[{"method":"GET","path":"/courses/all","summary":"List all courses","auth":"Public"},{"method":"GET","path":"/courses/departments","summary":"List departments","auth":"Public"},{"method":"GET","path":"/courses/view/:code","summary":"View course by code","auth":"Public"},{"method":"POST","path":"/courses/add","summary":"Add course","auth":"Staff"},{"method":"PUT","path":"/courses/edit/:code","summary":"Edit course","auth":"Staff"},{"method":"DELETE","path":"/courses/delete/:code","summary":"Delete course","auth":"Staff"},{"method":"GET","path":"/courses/prereqs/:id","summary":"Prerequisites for course","auth":"Public"},{"method":"GET","path":"/courses/:departmenttype","summary":"Courses by department/type","auth":"Public"},{"method":"GET","path":"/courses/related-courses/:dept/:semNum","summary":"Related courses","auth":"Public"}]},{"prefix":"/programmes","description":"Academic programmes (reads public; writes staff)","auth":"Public reads / Staff writes","status":"active","routes":[{"method":"GET","path":"/programmes/all","summary":"List programmes","auth":"Public"},{"method":"GET","path":"/programmes/bulk/matrix","summary":"Bulk course×programme matrix","auth":"Staff"},{"method":"PUT","path":"/programmes/bulk/mappings","summary":"Bulk update type mappings","auth":"Staff"},{"method":"PUT","path":"/programmes/bulk/prerequisites","summary":"Bulk update prereq overrides","auth":"Staff"},{"method":"POST","path":"/programmes/bulk/snapshot","summary":"Clone programmes into a new version","auth":"Staff"},{"method":"GET","path":"/programmes/:programmeId","summary":"Programme by id","auth":"Public"},{"method":"POST","path":"/programmes/add","summary":"Add programme","auth":"Staff"},{"method":"POST","path":"/programmes/add/course","summary":"Add course to programme","auth":"Staff"},{"method":"DELETE","path":"/programmes/delete/:programmeId","summary":"Delete programme version by id","auth":"Staff"},{"method":"GET","path":"/programmes/offered-courses/:id","summary":"Offered courses for programme","auth":"Public"}]},{"prefix":"/types","description":"Credit types (L1CORE, electives, colours)","auth":"Public reads / Staff writes","status":"active","routes":[{"method":"GET","path":"/types/all","summary":"List credit types","auth":"Public"},{"method":"POST","path":"/types/add","summary":"Create credit type","auth":"Staff"},{"method":"PUT","path":"/types/:id","summary":"Update credit type","auth":"Staff"}]},{"prefix":"/transcript","description":"Transcript details, courses, and PDF parse","auth":"Staff writes; staff or owning student for scoped reads","status":"active","routes":[{"method":"GET","path":"/transcript/details/all","summary":"All transcript headers","auth":"Staff"},{"method":"GET","path":"/transcript/courses/all","summary":"All transcript course rows","auth":"Staff"},{"method":"GET","path":"/transcript/details/view/:studentId","summary":"Transcript for student","auth":"Staff|Self"},{"method":"GET","path":"/transcript/courses/view","summary":"View transcript courses","auth":"Staff|Self"},{"method":"GET","path":"/transcript/courses/viewAll/:studentId","summary":"All courses for student","auth":"Staff|Self"},{"method":"POST","path":"/transcript/details/add","summary":"Add transcript header","auth":"Staff"},{"method":"POST","path":"/transcript/courses/add","summary":"Add transcript course","auth":"Staff"},{"method":"POST","path":"/transcript/parseForm","summary":"Parse uploaded transcript PDF","auth":"Staff"},{"method":"PUT","path":"/transcript/details/edit/:studentId","summary":"Edit transcript","auth":"Staff"},{"method":"PUT","path":"/transcript/courses/edit","summary":"Edit transcript course","auth":"Staff"},{"method":"DELETE","path":"/transcript/details/delete/:studentId","summary":"Delete transcript","auth":"Staff"},{"method":"DELETE","path":"/transcript/courses/delete","summary":"Delete transcript course","auth":"Staff"},{"method":"DELETE","path":"/transcript/courses/deleteAll/:studentId","summary":"Delete all courses for student","auth":"Staff"},{"method":"GET","path":"/transcript/course/options","summary":"Course options (stub)","auth":"Student"}]},{"prefix":"/semester","description":"Semesters, offerings, and planning","auth":"Public reads / Staff writes / Student plan","status":"active","routes":[{"method":"POST","path":"/semester/add","summary":"Add semester","auth":"Staff"},{"method":"GET","path":"/semester/current","summary":"Current semester","auth":"Public"},{"method":"PUT","path":"/semester/update","summary":"Update semester","auth":"Staff"},{"method":"GET","path":"/semester/all","summary":"List semesters","auth":"Public"},{"method":"GET","path":"/semester/:semesterId","summary":"Semester by id","auth":"Public"},{"method":"GET","path":"/semester/courses/:semesterId","summary":"Courses in semester","auth":"Public"},{"method":"GET","path":"/semester/semesterCourses/:dept/:semNum","summary":"Semester courses by dept","auth":"Public"},{"method":"POST","path":"/semester/plan","summary":"Submit plan","auth":"Student"},{"method":"GET","path":"/semester/courses/:department/:semesterId","summary":"Courses by department","auth":"Public"},{"method":"GET","path":"/semester/flags/:semesterId","summary":"Semester flags (stub)","auth":"Public"}]}]}