Academics API

Last updated August 2, 2026

This reference is generated from the current Express route definitions and their handlers. It documents route-level authentication and authorization; deployment-wide middleware may add further checks.

Conventions

  • Base API origin: https://api.classgrid.in
  • Authentication: authenticated routes use the Classgrid session/JWT recognized by isAuthenticated.
  • JSON is the default request and response format unless an endpoint explicitly accepts multipart data or redirects.
  • Path parameters are always required.
  • A field marked no means the static handler scan did not find a direct required-field check; business rules may still make it conditionally required.
  • Role checks can also accept super_admin through the shared authorization middleware where implemented.

This document contains 67 route definitions from 5 source files.

academic.routes.js

Mounted at: /api/academic

MethodPathAccess
GET/api/academicAny authenticated user, subject to organization, plan, and feature middleware listed below.
PUT/api/academicAny authenticated user, subject to organization, plan, and feature middleware listed below.

GET /api/academic

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include academicInfo, message. Explicit status codes include 500. Server error

Source: server/src/routes/academic.routes.js:23; handler inline handler in server/src/routes/academic.routes.js.

PUT /api/academic

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Updates resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
fieldstringnoRequest value for field.

Response: JSON response fields observed in the handler include message, academicInfo. Explicit status codes include 400, 500. No valid fields provided

Source: server/src/routes/academic.routes.js:59; handler inline handler in server/src/routes/academic.routes.js.

academic-plan.routes.js

Mounted at: /api/academic-plans

MethodPathAccess
POST/api/academic-plans/classrooms/:classroomIdAuthenticated classroom owner.
GET/api/academic-plans/classrooms/:classroomIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/academic-plans/:planId/unitsAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/academic-plans/units/:unitId/topicsAny authenticated user, subject to organization, plan, and feature middleware listed below.
PATCH/api/academic-plans/topics/:topicIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
DELETE/api/academic-plans/units/:unitIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
DELETE/api/academic-plans/topics/:topicIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/academic-plans/me/plansAny authenticated user, subject to organization, plan, and feature middleware listed below.

POST /api/academic-plans/classrooms/:classroomId

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Creates or processes classrooms.

Path parameters:

FieldTypeRequiredDescription
classroomIdstringyesPath identifier/value for classroom id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
start_datestring (date/time)noRequest value for start date.
end_datestring (date/time)noRequest value for end date.

Response: JSON response fields observed in the handler include message, plan. Explicit status codes include 201, 404, 500. Classroom not found

Source: server/src/routes/academic-plan.routes.js:15; handler inline handler in server/src/routes/academic-plan.routes.js.

GET /api/academic-plans/classrooms/:classroomId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves classrooms.

Path parameters:

FieldTypeRequiredDescription
classroomIdstringyesPath identifier/value for classroom id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, plan, progress, units. Explicit status codes include 403, 404, 500. Not a member of this classroom

Source: server/src/routes/academic-plan.routes.js:57; handler inline handler in server/src/routes/academic-plan.routes.js.

POST /api/academic-plans/:planId/units

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Creates or processes units.

Path parameters:

FieldTypeRequiredDescription
planIdstringyesPath identifier/value for plan id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
unit_namestringnoRequest value for unit name.
order_indexnumbernoRequest value for order index.

Response: JSON response fields observed in the handler include message, unit. Explicit status codes include 201, 500. Unit added

Source: server/src/routes/academic-plan.routes.js:139; handler inline handler in server/src/routes/academic-plan.routes.js.

POST /api/academic-plans/units/:unitId/topics

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Creates or processes units topics.

Path parameters:

FieldTypeRequiredDescription
unitIdstringyesPath identifier/value for unit id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
topic_namestringnoRequest value for topic name.
planned_start_datestring (date/time)noRequest value for planned start date.
planned_end_datestring (date/time)noRequest value for planned end date.
lectures_countnumbernoRequest value for lectures count.
order_indexnumbernoRequest value for order index.

Response: JSON response fields observed in the handler include message, topic. Explicit status codes include 201, 500. Topic added

Source: server/src/routes/academic-plan.routes.js:166; handler inline handler in server/src/routes/academic-plan.routes.js.

PATCH /api/academic-plans/topics/:topicId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Updates topics.

Path parameters:

FieldTypeRequiredDescription
topicIdstringyesPath identifier/value for topic id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
statusstringnoRequest value for status.
actual_start_datestring (date/time)yesRequest value for actual start date.
actual_end_datestring (date/time)yesRequest value for actual end date.
order_indexnumbernoRequest value for order index.
topic_namestringnoRequest value for topic name.
planned_start_datestring (date/time)noRequest value for planned start date.
planned_end_datestring (date/time)noRequest value for planned end date.

Response: JSON response fields observed in the handler include message, topic. Explicit status codes include 500. Topic updated

Source: server/src/routes/academic-plan.routes.js:196; handler inline handler in server/src/routes/academic-plan.routes.js.

DELETE /api/academic-plans/units/:unitId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Deletes units.

Path parameters:

FieldTypeRequiredDescription
unitIdstringyesPath identifier/value for unit id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 500. Unit deleted

Source: server/src/routes/academic-plan.routes.js:231; handler inline handler in server/src/routes/academic-plan.routes.js.

DELETE /api/academic-plans/topics/:topicId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Deletes topics.

Path parameters:

FieldTypeRequiredDescription
topicIdstringyesPath identifier/value for topic id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 500. Topic deleted

Source: server/src/routes/academic-plan.routes.js:241; handler inline handler in server/src/routes/academic-plan.routes.js.

GET /api/academic-plans/me/plans

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves me plans.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include plans, message. Explicit status codes include 500. Server error

Source: server/src/routes/academic-plan.routes.js:256; handler inline handler in server/src/routes/academic-plan.routes.js.

course.routes.js

Mounted at: /api/courses

MethodPathAccess
POST/api/coursesorg_admin, faculty
GET/api/coursesAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/courses/:idAny authenticated user, subject to organization, plan, and feature middleware listed below.
PUT/api/courses/:idorg_admin, faculty
DELETE/api/courses/:idorg_admin
POST/api/courses/:id/subjectsorg_admin, faculty
PUT/api/courses/subjects/:subjectIdorg_admin, faculty
DELETE/api/courses/subjects/:subjectIdorg_admin, faculty
GET/api/courses/student/my-coursesAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/courses/:id/assign-facultyorg_admin
DELETE/api/courses/faculty-assignment/:assignmentIdorg_admin
GET/api/courses/:id/facultyAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/courses/faculty/my-subjectsAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/courses/org/faculty-listorg_admin
POST/api/courses/:id/bulk-assign-facultyorg_admin
POST/api/courses/:id/generate-classroomsorg_admin

POST /api/courses

Auth: isAuthenticated, requireRole('org_admin','faculty')

Roles: org_admin, faculty

Middleware: isAuthenticated, requireRole('org_admin','faculty')

What it does: CREATE COURSE. Creates or processes resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
namestringyesRequest value for name.
typestringnoRequest value for type.
descriptionstringnoRequest value for description.
yearnumbernoRequest value for year.
standardstringnoRequest value for standard.
course_namestringnoRequest value for course name.
branchstringnoRequest value for branch.
total_semestersnumbernoRequest value for total semesters.

Response: JSON response fields observed in the handler include message, course. Explicit status codes include 201, 400, 500. Course name is required

Source: server/src/routes/course.routes.js:40; handler inline handler in server/src/routes/course.routes.js.

GET /api/courses

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: LIST COURSES. Retrieves resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include courses, message. Explicit status codes include 500. Server error

Source: server/src/routes/course.routes.js:67; handler inline handler in server/src/routes/course.routes.js.

GET /api/courses/:id

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: DETAIL + SUBJECTS. Retrieves resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include course, subjects, bySemester, message. Explicit status codes include 500. Server error

Source: server/src/routes/course.routes.js:103; handler inline handler in server/src/routes/course.routes.js.

PUT /api/courses/:id

Auth: isAuthenticated, requireRole('org_admin','faculty')

Roles: org_admin, faculty

Middleware: isAuthenticated, requireRole('org_admin','faculty')

What it does: UPDATE COURSE. Updates resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
namestringnoRequest value for name.
descriptionstringnoRequest value for description.
yearnumbernoRequest value for year.
standardstringnoRequest value for standard.
course_namestringnoRequest value for course name.
branchstringnoRequest value for branch.
total_semestersnumbernoRequest value for total semesters.

Response: JSON response fields observed in the handler include message, course. Explicit status codes include 500. Course updated!

Source: server/src/routes/course.routes.js:129; handler inline handler in server/src/routes/course.routes.js.

DELETE /api/courses/:id

Auth: isAuthenticated, requireRole('org_admin')

Roles: org_admin

Middleware: isAuthenticated, requireRole('org_admin')

What it does: Deletes resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 500. Course deleted

Source: server/src/routes/course.routes.js:147; handler inline handler in server/src/routes/course.routes.js.

POST /api/courses/:id/subjects

Auth: isAuthenticated, requireRole('org_admin','faculty')

Roles: org_admin, faculty

Middleware: isAuthenticated, requireRole('org_admin','faculty')

What it does: ADD SUBJECT TO COURSE. Creates or processes subjects.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
subject_namestringyesRequest value for subject name.
subject_codestringnoRequest value for subject code.
semesterstringnoRequest value for semester.
credit_hoursnumbernoRequest value for credit hours.
subject_typestringnoRequest value for subject type.
syllabus_urlstringnoRequest value for syllabus url.
resourcesstringnoRequest value for resources.

Response: JSON response fields observed in the handler include message, subject. Explicit status codes include 201, 400, 500. Subject name is required

Source: server/src/routes/course.routes.js:163; handler inline handler in server/src/routes/course.routes.js.

PUT /api/courses/subjects/:subjectId

Auth: isAuthenticated, requireRole('org_admin','faculty')

Roles: org_admin, faculty

Middleware: isAuthenticated, requireRole('org_admin','faculty')

What it does: UPDATE SUBJECT. Updates subjects.

Path parameters:

FieldTypeRequiredDescription
subjectIdstringyesPath identifier/value for subject id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
subject_namestringnoRequest value for subject name.
subject_codestringnoRequest value for subject code.
semesterstringnoRequest value for semester.
credit_hoursnumbernoRequest value for credit hours.
subject_typestringnoRequest value for subject type.
syllabus_urlstringnoRequest value for syllabus url.
resourcesstringnoRequest value for resources.

Response: JSON response fields observed in the handler include message, subject. Explicit status codes include 500. Subject updated!

Source: server/src/routes/course.routes.js:195; handler inline handler in server/src/routes/course.routes.js.

DELETE /api/courses/subjects/:subjectId

Auth: isAuthenticated, requireRole('org_admin','faculty')

Roles: org_admin, faculty

Middleware: isAuthenticated, requireRole('org_admin','faculty')

What it does: Deletes subjects.

Path parameters:

FieldTypeRequiredDescription
subjectIdstringyesPath identifier/value for subject id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 500. Subject removed

Source: server/src/routes/course.routes.js:213; handler inline handler in server/src/routes/course.routes.js.

GET /api/courses/student/my-courses

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: COURSES (Student). Retrieves student my courses.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include courses, message. Explicit status codes include 500. Server error

Source: server/src/routes/course.routes.js:229; handler inline handler in server/src/routes/course.routes.js.

POST /api/courses/:id/assign-faculty

Auth: isAuthenticated, requireRole('org_admin')

Roles: org_admin

Middleware: isAuthenticated, requireRole('org_admin')

What it does: ASSIGN FACULTY TO SUBJECT+DIVISION. Creates or processes assign faculty.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
teacher_idstringyesRequest value for teacher id.
subject_idstringyesRequest value for subject id.
division_idstringnoRequest value for division id.
rolestringyesRequest value for role.

Response: JSON response fields observed in the handler include message, assignment. Explicit status codes include 201, 400, 500. teacher_id and role are required

Source: server/src/routes/course.routes.js:302; handler inline handler in server/src/routes/course.routes.js.

DELETE /api/courses/faculty-assignment/:assignmentId

Auth: isAuthenticated, requireRole('org_admin')

Roles: org_admin

Middleware: isAuthenticated, requireRole('org_admin')

What it does: REMOVE FACULTY ASSIGNMENT. Deletes faculty assignment.

Path parameters:

FieldTypeRequiredDescription
assignmentIdstringyesPath identifier/value for assignment id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 500. Assignment removed

Source: server/src/routes/course.routes.js:367; handler inline handler in server/src/routes/course.routes.js.

GET /api/courses/:id/faculty

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: ASSIGNMENTS FOR A COURSE (Admin view). Retrieves faculty.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include assignments, message. Explicit status codes include 500. Server error

Source: server/src/routes/course.routes.js:380; handler inline handler in server/src/routes/course.routes.js.

GET /api/courses/faculty/my-subjects

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: FACULTY SELF-VIEW: "What do I teach?". Retrieves faculty my subjects.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include assignments, message. Explicit status codes include 500. Server error

Source: server/src/routes/course.routes.js:434; handler inline handler in server/src/routes/course.routes.js.

GET /api/courses/org/faculty-list

Auth: isAuthenticated, requireRole('org_admin')

Roles: org_admin

Middleware: isAuthenticated, requireRole('org_admin')

What it does: LIST FACULTY (for dropdown when assigning). Retrieves org faculty list.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include faculty, message. Explicit status codes include 500. Server error

Source: server/src/routes/course.routes.js:483; handler inline handler in server/src/routes/course.routes.js.

POST /api/courses/:id/bulk-assign-faculty

Auth: isAuthenticated, requireRole('org_admin')

Roles: org_admin

Middleware: isAuthenticated, requireRole('org_admin')

What it does: Processes the requested bulk operation.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
teacher_idstringyesRequest value for teacher id.
division_idstringnoRequest value for division id.
subject_idsarraynoRequest value for subject ids.
rolestringyesRequest value for role.

Response: JSON response fields observed in the handler include message, assignments. Explicit status codes include 201, 400, 500. teacher_id, role, and subject_ids[] are required

Source: server/src/routes/course.routes.js:504; handler inline handler in server/src/routes/course.routes.js.

POST /api/courses/:id/generate-classrooms

Auth: isAuthenticated, requireRole('org_admin')

Roles: org_admin

Middleware: isAuthenticated, requireRole('org_admin')

What it does: Generates the requested resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, created, skipped, classrooms. Explicit status codes include 201, 400, 404, 500. Course not found

Source: server/src/routes/course.routes.js:565; handler inline handler in server/src/routes/course.routes.js.

classroom.routes.js

Mounted at: /api/classrooms, /api/classroom

MethodPathAccess
GET/api/classrooms/proxy/pdf / /api/classroom/proxy/pdfAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/classrooms/hf-summarize / /api/classroom/hf-summarizeAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/classrooms / /api/classroomteacher, faculty, org_admin, super_admin
PUT/api/classrooms/:id/cover / /api/classroom/:id/coverAuthenticated classroom owner.
GET/api/classrooms / /api/classroomAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/classrooms/all-requests / /api/classroom/all-requestsAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/classrooms/my-requests / /api/classroom/my-requestsAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/classrooms/discover / /api/classroom/discoverAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/classrooms/my-organization / /api/classroom/my-organizationAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/classrooms/join-by-code / /api/classroom/join-by-codeAuthenticated user with access to the classroom.
POST/api/classrooms/:id/join / /api/classroom/:id/joinAuthenticated user with access to the classroom.
GET/api/classrooms/:id/requests / /api/classroom/:id/requestsAuthenticated classroom owner.
PUT/api/classrooms/:id/requests/:requestId / /api/classroom/:id/requests/:requestIdAuthenticated classroom owner.
PUT/api/classrooms/:id/requests-bulk / /api/classroom/:id/requests-bulkAuthenticated classroom owner.
GET/api/classrooms/:id / /api/classroom/:idAuthenticated classroom member.
PUT/api/classrooms/:id / /api/classroom/:idAuthenticated classroom owner.
DELETE/api/classrooms/:id / /api/classroom/:idAuthenticated classroom owner.
GET/api/classrooms/:id/meetings / /api/classroom/:id/meetingsAuthenticated classroom member.
GET/api/classrooms/:id/members / /api/classroom/:id/membersAuthenticated classroom member.
DELETE/api/classrooms/:id/members/:userId / /api/classroom/:id/members/:userIdAuthenticated classroom owner.
POST/api/classrooms/:id/upload-urls / /api/classroom/:id/upload-urlsAuthenticated classroom owner.
POST/api/classrooms/:id/content/:type / /api/classroom/:id/content/:typeAuthenticated classroom owner.
POST/api/classrooms/:id/resend-notification / /api/classroom/:id/resend-notificationAuthenticated classroom owner.
GET/api/classrooms/:id/content/:type / /api/classroom/:id/content/:typeAuthenticated classroom member.
POST/api/classrooms/:id/notify / /api/classroom/:id/notifyAuthenticated classroom owner.
GET/api/classrooms/:id/students / /api/classroom/:id/studentsAuthenticated classroom member.
PUT/api/classrooms/:id/content/:type/:contentId / /api/classroom/:id/content/:type/:contentIdAuthenticated classroom owner.
PUT/api/classrooms/:id/content/materials/:contentId/replace / /api/classroom/:id/content/materials/:contentId/replaceAuthenticated classroom owner.
DELETE/api/classrooms/:id/content/:type/:contentId / /api/classroom/:id/content/:type/:contentIdAuthenticated classroom owner.
POST/api/classrooms/:id/content/materials/:contentId/summarize / /api/classroom/:id/content/materials/:contentId/summarizeAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/classrooms/academic-status/:userId / /api/classroom/academic-status/:userIdPublic endpoint unless an upstream platform gate applies.

GET /api/classrooms/proxy/pdf

Aliases: /api/classroom/proxy/pdf

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves proxy pdf.

Path parameters: None detected in the route or handler.

Query parameters:

FieldTypeRequiredDescription
urlstringnoQuery value for url.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, error. Explicit status codes include 400, 403, 500. Missing URL parameter

Source: server/src/routes/classroom.routes.js:60; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/hf-summarize

Aliases: /api/classroom/hf-summarize

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Creates or processes hf summarize.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
textstringyesRequest value for text.
titlestringnoRequest value for title.

Response: JSON response fields observed in the handler include message, summary, error. Explicit status codes include 400, 500. Missing or invalid 'text' field

Source: server/src/routes/classroom.routes.js:92; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms

Aliases: /api/classroom

Auth: isAuthenticated, requireRole("teacher","faculty","org_admin","super_admin"), requireOrganization, attachInstitutionProfile()

Roles: teacher, faculty, org_admin, super_admin

Middleware: isAuthenticated, requireRole("teacher","faculty","org_admin","super_admin"), requireOrganization, attachInstitutionProfile(), validateClassroom

What it does: Creates or processes resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
namestringyesRequest value for name.
descriptionstringnoRequest value for description.
subjectstringyesRequest value for subject.
subjectSlugstringnoRequest value for subject slug.
settingsobjectnoRequest value for settings.
course_typestringnoRequest value for course type.
academic_yearnumbernoRequest value for academic year.
termstringnoRequest value for term.
streamstringnoRequest value for stream.
yearnumbernoRequest value for year.
branchstringnoRequest value for branch.
semesterstringnoRequest value for semester.
standardstringnoRequest value for standard.
divisionstringnoRequest value for division.
division_idstringnoRequest value for division id.
sub_batchstringnoRequest value for sub batch.
sub_batch_idstringnoRequest value for sub batch id.
subject_idstringyesRequest value for subject id.
class_teacherstringnoRequest value for class teacher.
class_teacher_idstringnoRequest value for class teacher id.
assistant_teacherstringnoRequest value for assistant teacher.
assistant_teacher_idstringnoRequest value for assistant teacher id.
mentorstringnoRequest value for mentor.
mentor_idstringnoRequest value for mentor id.
is_entrance_batchbooleannoRequest value for is entrance batch.
entrance_examstringnoRequest value for entrance exam.
entrance_coursestringnoRequest value for entrance course.

Response: JSON response fields observed in the handler include message, classroom, error. Explicit status codes include 201, 400, 500. Name and subject are required

Source: server/src/routes/classroom.routes.js:127; handler inline handler in server/src/routes/classroom.routes.js.

PUT /api/classrooms/:id/cover

Aliases: /api/classroom/:id/cover

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner, upload.single("coverImage")

What it does: Updates cover.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
coverImagestringnoRequest value for cover image.

Response: JSON response fields observed in the handler include message, coverImage. Explicit status codes include 400, 404, 500. No image file provided

Source: server/src/routes/classroom.routes.js:203; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms

Aliases: /api/classroom

Auth: isAuthenticated, requireOrganization, attachInstitutionProfile()

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated, requireOrganization, attachInstitutionProfile()

What it does: Retrieves resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include classrooms, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:232; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/all-requests

Aliases: /api/classroom/all-requests

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves all requests.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, requests. Explicit status codes include 403, 500. Teachers only

Source: server/src/routes/classroom.routes.js:310; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/my-requests

Aliases: /api/classroom/my-requests

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves my requests.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include requests, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:396; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/discover

Aliases: /api/classroom/discover

Auth: isAuthenticated, requireOrganization, attachInstitutionProfile()

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated, requireOrganization, attachInstitutionProfile()

What it does: Retrieves discover.

Path parameters: None detected in the route or handler.

Query parameters:

FieldTypeRequiredDescription
searchstringnoQuery value for search.
subjectstringnoQuery value for subject.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include classrooms, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:445; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/my-organization

Aliases: /api/classroom/my-organization

Auth: isAuthenticated, requireOrganization, attachInstitutionProfile()

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated, requireOrganization, attachInstitutionProfile()

What it does: Retrieves my organization.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include classrooms, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:515; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/join-by-code

Aliases: /api/classroom/join-by-code

Auth: isAuthenticated, enforceClassroomAccess

Roles: Authenticated user with access to the classroom.

Middleware: isAuthenticated, joinClassroomLimiter, enforceClassroomAccess, validateJoinCode

What it does: Joins the requested resource.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
classCodestringyesRequest value for class code.
requestMessagestringnoRequest value for request message.

Response: JSON response fields observed in the handler include message, code, classroomName, membership. Explicit status codes include 201, 400, 403, 404, 500. Class code is required

Source: server/src/routes/classroom.routes.js:536; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/:id/join

Aliases: /api/classroom/:id/join

Auth: isAuthenticated, enforceClassroomAccess

Roles: Authenticated user with access to the classroom.

Middleware: isAuthenticated, joinClassroomLimiter, enforceClassroomAccess

What it does: Joins the requested resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
requestMessagestringnoRequest value for request message.

Response: JSON response fields observed in the handler include message, code. Explicit status codes include 201, 400, 403, 404, 500. Classroom not found

Source: server/src/routes/classroom.routes.js:703; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/:id/requests

Aliases: /api/classroom/:id/requests

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Retrieves requests.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters:

FieldTypeRequiredDescription
statusstringnoQuery value for status.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include requests, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:839; handler inline handler in server/src/routes/classroom.routes.js.

PUT /api/classrooms/:id/requests/:requestId

Aliases: /api/classroom/:id/requests/:requestId

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Updates requests.

Path parameters:

FieldTypeRequiredDescription
requestIdstringyesPath identifier/value for request id.
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
actionstringnoRequest value for action.
rejectionReasonstringnoRequest value for rejection reason.

Response: JSON response fields observed in the handler include message. Explicit status codes include 400, 404, 500. Action must be 'approve' or 'reject'

Source: server/src/routes/classroom.routes.js:874; handler inline handler in server/src/routes/classroom.routes.js.

PUT /api/classrooms/:id/requests-bulk

Aliases: /api/classroom/:id/requests-bulk

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Updates requests bulk.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
requestIdsstringyesRequest value for request ids.
actionstringnoRequest value for action.

Response: JSON response fields observed in the handler include message. Explicit status codes include 400, 500. requestIds array required

Source: server/src/routes/classroom.routes.js:945; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/:id

Aliases: /api/classroom/:id

Auth: isAuthenticated, requireClassroomMember

Roles: Authenticated classroom member.

Middleware: isAuthenticated, requireClassroomMember

What it does: Retrieves resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, code, missingFields, missingIdLabel, classroom, isOwner. Explicit status codes include 403, 404, 500. Classroom not found

Source: server/src/routes/classroom.routes.js:1026; handler inline handler in server/src/routes/classroom.routes.js.

PUT /api/classrooms/:id

Aliases: /api/classroom/:id

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Updates resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
fieldstring (date/time)noRequest value for field.

Response: JSON response fields observed in the handler include message, classroom. Explicit status codes include 500. Classroom updated

Source: server/src/routes/classroom.routes.js:1111; handler inline handler in server/src/routes/classroom.routes.js.

DELETE /api/classrooms/:id

Aliases: /api/classroom/:id

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Deletes resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 500. Classroom deleted successfully

Source: server/src/routes/classroom.routes.js:1138; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/:id/meetings

Aliases: /api/classroom/:id/meetings

Auth: isAuthenticated, requireClassroomMember

Roles: Authenticated classroom member.

Middleware: isAuthenticated, requireClassroomMember

What it does: Retrieves meetings.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include meetings, message. Explicit status codes include 500. Server error fetching meetings

Source: server/src/routes/classroom.routes.js:1160; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/:id/members

Aliases: /api/classroom/:id/members

Auth: isAuthenticated, requireClassroomMember

Roles: Authenticated classroom member.

Middleware: isAuthenticated, requireClassroomMember

What it does: Retrieves members.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include members, total, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:1181; handler inline handler in server/src/routes/classroom.routes.js.

DELETE /api/classrooms/:id/members/:userId

Aliases: /api/classroom/:id/members/:userId

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Deletes members.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.
userIdstringyesPath identifier/value for user id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 404, 500. Member not found

Source: server/src/routes/classroom.routes.js:1220; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/:id/upload-urls

Aliases: /api/classroom/:id/upload-urls

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Uploads the supplied resource.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
filesarrayyesRequest value for files.

Response: JSON response fields observed in the handler include message, urls. Explicit status codes include 400, 500. Files array required

Source: server/src/routes/classroom.routes.js:1250; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/:id/content/:type

Aliases: /api/classroom/:id/content/:type

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Creates or processes content.

Path parameters:

FieldTypeRequiredDescription
typestringyesPath identifier/value for type.
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
titlestringyesRequest value for title.
descriptionstringnoRequest value for description.
messagestringyesRequest value for message.
tagsarraynoRequest value for tags.
linkstringyesRequest value for link.
providerstringnoRequest value for provider.
uploaded_filesarraynoRequest value for uploaded files.

Response: JSON response fields observed in the handler include message, items, item, emailJobsCreated. Explicit status codes include 201, 400, 404, 500. Invalid content type

Source: server/src/routes/classroom.routes.js:1280; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/:id/resend-notification

Aliases: /api/classroom/:id/resend-notification

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Resends the requested information.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
typestringnoRequest value for type.

Response: JSON response fields observed in the handler include message, resetCount. Explicit status codes include 500. No failed email jobs found for this classroom

Source: server/src/routes/classroom.routes.js:1453; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/:id/content/:type

Aliases: /api/classroom/:id/content/:type

Auth: isAuthenticated, requireClassroomMember

Roles: Authenticated classroom member.

Middleware: isAuthenticated, requireClassroomMember

What it does: Retrieves content.

Path parameters:

FieldTypeRequiredDescription
typestringyesPath identifier/value for type.
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, content, source. Explicit status codes include 400, 500. Invalid content type

Source: server/src/routes/classroom.routes.js:1477; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/:id/notify

Aliases: /api/classroom/:id/notify

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Creates or processes notify.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
titlestringyesRequest value for title.
messagestringyesRequest value for message.
typestringnoRequest value for type.
linkstringnoRequest value for link.

Response: JSON response fields observed in the handler include message, count. Explicit status codes include 400, 500. Title and message are required

Source: server/src/routes/classroom.routes.js:1531; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/:id/students

Aliases: /api/classroom/:id/students

Auth: isAuthenticated, requireClassroomMember

Roles: Authenticated classroom member.

Middleware: isAuthenticated, requireClassroomMember

What it does: Retrieves students.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include students, total, message. Explicit status codes include 500. Server error

Source: server/src/routes/classroom.routes.js:1571; handler inline handler in server/src/routes/classroom.routes.js.

PUT /api/classrooms/:id/content/:type/:contentId

Aliases: /api/classroom/:id/content/:type/:contentId

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Updates content.

Path parameters:

FieldTypeRequiredDescription
typestring (date/time)yesPath identifier/value for type.
contentIdstringyesPath identifier/value for content id.
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
fieldstring (date/time)noRequest value for field.
contentstring (date/time)noRequest value for content.

Response: JSON response fields observed in the handler include message, item. Explicit status codes include 400, 500. Invalid content type

Source: server/src/routes/classroom.routes.js:1618; handler inline handler in server/src/routes/classroom.routes.js.

PUT /api/classrooms/:id/content/materials/:contentId/replace

Aliases: /api/classroom/:id/content/materials/:contentId/replace

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner, upload.single("file")

What it does: Updates content materials replace.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.
contentIdstringyesPath identifier/value for content id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
filefilenoRequest value for file.

Response: JSON response fields observed in the handler include message, item. Explicit status codes include 400, 404, 500. No file provided

Source: server/src/routes/classroom.routes.js:1671; handler inline handler in server/src/routes/classroom.routes.js.

DELETE /api/classrooms/:id/content/:type/:contentId

Aliases: /api/classroom/:id/content/:type/:contentId

Auth: isAuthenticated, requireClassroomOwner

Roles: Authenticated classroom owner.

Middleware: isAuthenticated, requireClassroomOwner

What it does: Deletes content.

Path parameters:

FieldTypeRequiredDescription
typestringyesPath identifier/value for type.
contentIdstringyesPath identifier/value for content id.
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 400, 500. Invalid content type

Source: server/src/routes/classroom.routes.js:1721; handler inline handler in server/src/routes/classroom.routes.js.

POST /api/classrooms/:id/content/materials/:contentId/summarize

Aliases: /api/classroom/:id/content/materials/:contentId/summarize

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Creates or processes content materials summarize.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.
contentIdstringyesPath identifier/value for content id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include summary, cached, message. Explicit status codes include 400, 404, 500. Material not found

Source: server/src/routes/classroom.routes.js:1745; handler inline handler in server/src/routes/classroom.routes.js.

GET /api/classrooms/academic-status/:userId

Aliases: /api/classroom/academic-status/:userId

Auth: None at route level

Roles: Public endpoint unless an upstream platform gate applies.

Middleware: None at route level

What it does: Retrieves academic status.

Path parameters:

FieldTypeRequiredDescription
userIdstringyesPath identifier/value for user id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message, status. Explicit status codes include 404, 500. User not found

Source: server/src/routes/classroom.routes.js:1830; handler inline handler in server/src/routes/classroom.routes.js.

timetable.routes.js

Mounted at: /api/timetable

MethodPathAccess
GET/api/timetable/division/:divisionIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/timetable/division/:divisionId/todayAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/timetable/me/todayAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/timetable/division/:divisionIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/timetable/division/:divisionId/bulkAny authenticated user, subject to organization, plan, and feature middleware listed below.
PUT/api/timetable/:slotIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
DELETE/api/timetable/:slotIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
POST/api/timetable/extraAny authenticated user, subject to organization, plan, and feature middleware listed below.
GET/api/timetable/extra/division/:divisionIdAny authenticated user, subject to organization, plan, and feature middleware listed below.
DELETE/api/timetable/extra/:idAny authenticated user, subject to organization, plan, and feature middleware listed below.

GET /api/timetable/division/:divisionId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves division.

Path parameters:

FieldTypeRequiredDescription
divisionIdstringyesPath identifier/value for division id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include slots, grouped, message. Explicit status codes include 500. Server error

Source: server/src/routes/timetable.routes.js:67; handler inline handler in server/src/routes/timetable.routes.js.

GET /api/timetable/division/:divisionId/today

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves division today.

Path parameters:

FieldTypeRequiredDescription
divisionIdstringyesPath identifier/value for division id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include schedule, day, date, message. Explicit status codes include 500. Server error

Source: server/src/routes/timetable.routes.js:95; handler inline handler in server/src/routes/timetable.routes.js.

GET /api/timetable/me/today

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves me today.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include schedule, day, date, message. Explicit status codes include 500. No division assigned

Source: server/src/routes/timetable.routes.js:139; handler inline handler in server/src/routes/timetable.routes.js.

POST /api/timetable/division/:divisionId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Creates or processes division.

Path parameters:

FieldTypeRequiredDescription
divisionIdstringyesPath identifier/value for division id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
daynumbernoRequest value for day.
start_timestringnoRequest value for start time.
end_timestringnoRequest value for end time.
subjectstringnoRequest value for subject.
teacher_namestringnoRequest value for teacher name.
teacher_idstringnoRequest value for teacher id.
roomstringnoRequest value for room.
typestringnoRequest value for type.
forcestringyesRequest value for force.

Response: JSON response fields observed in the handler include message, conflict, needs_force, slot. Explicit status codes include 201, 403, 409, 500. Students cannot manage timetable

Source: server/src/routes/timetable.routes.js:221; handler inline handler in server/src/routes/timetable.routes.js.

POST /api/timetable/division/:divisionId/bulk

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Processes the requested bulk operation.

Path parameters:

FieldTypeRequiredDescription
divisionIdstringyesPath identifier/value for division id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
daynumberyesRequest value for day.
slotsstringnoRequest value for slots.

Response: JSON response fields observed in the handler include message, slots. Explicit status codes include 400, 403, 500. Students cannot manage timetable

Source: server/src/routes/timetable.routes.js:277; handler inline handler in server/src/routes/timetable.routes.js.

PUT /api/timetable/:slotId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Updates resource.

Path parameters:

FieldTypeRequiredDescription
slotIdstringyesPath identifier/value for slot id.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
subjectstringnoRequest value for subject.
teacher_namestringnoRequest value for teacher name.
teacher_idstringnoRequest value for teacher id.
roomstringnoRequest value for room.
typestringnoRequest value for type.
start_timestringnoRequest value for start time.
end_timestringnoRequest value for end time.

Response: JSON response fields observed in the handler include message, slot. Explicit status codes include 403, 500. Students cannot manage timetable

Source: server/src/routes/timetable.routes.js:332; handler inline handler in server/src/routes/timetable.routes.js.

DELETE /api/timetable/:slotId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Deletes resource.

Path parameters:

FieldTypeRequiredDescription
slotIdstringyesPath identifier/value for slot id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 403, 500. Students cannot manage timetable

Source: server/src/routes/timetable.routes.js:366; handler inline handler in server/src/routes/timetable.routes.js.

POST /api/timetable/extra

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Creates or processes extra.

Path parameters: None detected in the route or handler.

Query parameters: None detected in the route or handler.

Body:

FieldTypeRequiredDescription
division_idstringnoRequest value for division id.
datestring (date/time)noRequest value for date.
start_timestringnoRequest value for start time.
end_timestringnoRequest value for end time.
subjectstringnoRequest value for subject.
teacher_namestringnoRequest value for teacher name.
teacher_idstringnoRequest value for teacher id.
roomstringnoRequest value for room.
forcestringyesRequest value for force.

Response: JSON response fields observed in the handler include message, conflict, needs_force, lecture. Explicit status codes include 201, 403, 409, 500. Students cannot add extra lectures

Source: server/src/routes/timetable.routes.js:388; handler inline handler in server/src/routes/timetable.routes.js.

GET /api/timetable/extra/division/:divisionId

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Retrieves extra division.

Path parameters:

FieldTypeRequiredDescription
divisionIdstringyesPath identifier/value for division id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include extras, message. Explicit status codes include 500. Server error

Source: server/src/routes/timetable.routes.js:437; handler inline handler in server/src/routes/timetable.routes.js.

DELETE /api/timetable/extra/:id

Auth: isAuthenticated

Roles: Any authenticated user, subject to organization, plan, and feature middleware listed below.

Middleware: isAuthenticated

What it does: Deletes extra.

Path parameters:

FieldTypeRequiredDescription
idstringyesPath identifier/value for id.

Query parameters: None detected in the route or handler.

Body: None detected in the route or handler.

Response: JSON response fields observed in the handler include message. Explicit status codes include 403, 500. Not allowed

Source: server/src/routes/timetable.routes.js:460; handler inline handler in server/src/routes/timetable.routes.js.

Was this helpful?
M↓Markdown supportedMessage is optional