openapi: 3.0.3 info: title: 'School Management API Documentation' description: 'REST API for the School Management System covering students, staff, classes, exams, attendance, fees, hostel, transport, timetable, and communication modules.' version: 1.0.0 servers: - url: 'http://10.160.0.2' tags: - name: 'Attendance Management' description: '' - name: 'Class Management' description: '' - name: 'Communication Management' description: '' - name: 'Exam Management' description: '' - name: 'Fee Management' description: '' - name: 'Hostel & Transport Management' description: '' - name: 'RBAC Management' description: '' - name: 'Staff Management' description: '' - name: 'Student Management' description: '' - name: 'Subject Management' description: '' - name: 'Timetable Management' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' security: - default: [] paths: /api/studentAttendance: get: summary: '' operationId: getApiStudentAttendance description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] post: summary: '' operationId: postApiStudentAttendance description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' status: type: string description: '' example: Present enum: - Present - Absent - Leave batch_id: type: integer description: '' example: 16 nullable: true remarks: type: string description: '' example: architecto nullable: true marked_by: type: integer description: '' example: 16 nullable: true required: - student_id - date - status security: [] '/api/studentAttendance/{attendance_id}': get: summary: '' operationId: getApiStudentAttendanceAttendance_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] put: summary: '' operationId: putApiStudentAttendanceAttendance_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' status: type: string description: '' example: Absent enum: - Present - Absent - Leave batch_id: type: integer description: '' example: 16 nullable: true remarks: type: string description: '' example: architecto nullable: true marked_by: type: integer description: '' example: 16 nullable: true required: - student_id - date - status security: [] delete: summary: '' operationId: deleteApiStudentAttendanceAttendance_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' security: [] parameters: - in: path name: attendance_id description: 'The ID of the attendance.' example: 1 required: true schema: type: integer /api/teacherAttendance: get: summary: '' operationId: getApiTeacherAttendance description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] post: summary: '' operationId: postApiTeacherAttendance description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: staff_id: type: integer description: '' example: 16 date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' status: type: string description: '' example: Leave enum: - Present - Absent - Leave remarks: type: string description: '' example: architecto nullable: true required: - staff_id - date - status security: [] '/api/teacherAttendance/{attendance_id}': get: summary: '' operationId: getApiTeacherAttendanceAttendance_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] put: summary: '' operationId: putApiTeacherAttendanceAttendance_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: staff_id: type: integer description: '' example: 16 date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' status: type: string description: '' example: Present enum: - Present - Absent - Leave remarks: type: string description: '' example: architecto nullable: true required: - staff_id - date - status security: [] delete: summary: '' operationId: deleteApiTeacherAttendanceAttendance_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' security: [] parameters: - in: path name: attendance_id description: 'The ID of the attendance.' example: 1 required: true schema: type: integer /api/studentLeaveRequest: get: summary: '' operationId: getApiStudentLeaveRequest description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] post: summary: '' operationId: postApiStudentLeaveRequest description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2052-05-26' reason: type: string description: '' example: architecto status: type: string description: '' example: Pending enum: - Pending - Approved - Rejected applied_on: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' approved_by: type: integer description: '' example: 16 nullable: true required: - student_id - start_date - end_date - reason - status - applied_on security: [] '/api/studentLeaveRequest/{leave_request_id}': get: summary: '' operationId: getApiStudentLeaveRequestLeave_request_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] put: summary: '' operationId: putApiStudentLeaveRequestLeave_request_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2052-05-26' reason: type: string description: '' example: architecto status: type: string description: '' example: Approved enum: - Pending - Approved - Rejected applied_on: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' approved_by: type: integer description: '' example: 16 nullable: true required: - student_id - start_date - end_date - reason - status - applied_on security: [] delete: summary: '' operationId: deleteApiStudentLeaveRequestLeave_request_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' security: [] parameters: - in: path name: leave_request_id description: 'The ID of the leave request.' example: 1 required: true schema: type: integer /api/teacherLeaveRequest: get: summary: '' operationId: getApiTeacherLeaveRequest description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] post: summary: '' operationId: postApiTeacherLeaveRequest description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: staff_id: type: integer description: '' example: 16 start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2052-05-26' reason: type: string description: '' example: architecto status: type: string description: '' example: Pending enum: - Pending - Approved - Rejected applied_on: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' approved_by: type: integer description: '' example: 16 nullable: true required: - staff_id - start_date - end_date - reason - status - applied_on security: [] '/api/teacherLeaveRequest/{leave_request_id}': get: summary: '' operationId: getApiTeacherLeaveRequestLeave_request_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] put: summary: '' operationId: putApiTeacherLeaveRequestLeave_request_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: staff_id: type: integer description: '' example: 16 start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2052-05-26' reason: type: string description: '' example: architecto status: type: string description: '' example: Approved enum: - Pending - Approved - Rejected applied_on: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' approved_by: type: integer description: '' example: 16 nullable: true required: - staff_id - start_date - end_date - reason - status - applied_on security: [] delete: summary: '' operationId: deleteApiTeacherLeaveRequestLeave_request_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' security: [] parameters: - in: path name: leave_request_id description: 'The ID of the leave request.' example: 1 required: true schema: type: integer /api/holiday: get: summary: '' operationId: getApiHoliday description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] post: summary: '' operationId: postApiHoliday description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'Must not be greater than 100 characters.' example: b date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true is_recurring: type: boolean description: '' example: false required: - title - date security: [] '/api/holiday/{holiday_id}': get: summary: '' operationId: getApiHolidayHoliday_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Attendance Management' security: [] put: summary: '' operationId: putApiHolidayHoliday_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'Must not be greater than 100 characters.' example: b date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true is_recurring: type: boolean description: '' example: false required: - title - date security: [] delete: summary: '' operationId: deleteApiHolidayHoliday_id description: '' parameters: [] responses: { } tags: - 'Attendance Management' security: [] parameters: - in: path name: holiday_id description: 'The ID of the holiday.' example: 1 required: true schema: type: integer /api/classes: get: summary: '' operationId: getApiClasses description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] post: summary: '' operationId: postApiClasses description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: true content: application/json: schema: type: object properties: class_name: type: string description: 'Must not be greater than 50 characters.' example: b class_code: type: string description: 'Must not be greater than 20 characters.' example: ngzmiyvdljnikhwa nullable: true academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true is_active: type: boolean description: '' example: false required: - class_name security: [] '/api/classes/{schoolClass_class_id}': get: summary: '' operationId: getApiClassesSchoolClass_class_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] put: summary: '' operationId: putApiClassesSchoolClass_class_id description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: false content: application/json: schema: type: object properties: class_name: type: string description: 'Must not be greater than 50 characters.' example: b nullable: true class_code: type: string description: '' example: null academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true is_active: type: boolean description: '' example: false security: [] delete: summary: '' operationId: deleteApiClassesSchoolClass_class_id description: '' parameters: [] responses: { } tags: - 'Class Management' security: [] parameters: - in: path name: schoolClass_class_id description: 'The ID of the schoolClass class.' example: 1 required: true schema: type: integer /api/sections: get: summary: '' operationId: getApiSections description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] post: summary: '' operationId: postApiSections description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: true content: application/json: schema: type: object properties: section_name: type: string description: 'Must not be greater than 10 characters.' example: bngzmi class_id: type: integer description: 'The class_id of an existing record in the classes table.' example: 16 class_teacher_id: type: integer description: 'The staff_id of an existing record in the staff table.' example: 16 nullable: true capacity: type: integer description: 'Must be at least 0.' example: 39 nullable: true description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true is_active: type: boolean description: '' example: false required: - section_name - class_id security: [] '/api/sections/{section_id}': get: summary: '' operationId: getApiSectionsSection_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] put: summary: '' operationId: putApiSectionsSection_id description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: false content: application/json: schema: type: object properties: section_name: type: string description: 'Must not be greater than 10 characters.' example: bngzmi nullable: true class_id: type: integer description: 'The class_id of an existing record in the classes table.' example: 16 nullable: true capacity: type: integer description: 'Must be at least 0.' example: 39 nullable: true description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true is_active: type: boolean description: '' example: false security: [] delete: summary: '' operationId: deleteApiSectionsSection_id description: '' parameters: [] responses: { } tags: - 'Class Management' security: [] parameters: - in: path name: section_id description: 'The ID of the section.' example: 1 required: true schema: type: integer /api/batches: get: summary: '' operationId: getApiBatches description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] post: summary: '' operationId: postApiBatches description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: true content: application/json: schema: type: object properties: class_id: type: integer description: 'The class_id of an existing record in the classes table.' example: 16 section_id: type: integer description: 'The section_id of an existing record in the sections table.' example: 16 academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true batch_name: type: string description: 'Must not be greater than 100 characters.' example: 'n' batch_code: type: string description: 'Must not be greater than 20 characters.' example: gzmiyvdljnikhway nullable: true start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after start_date.' example: '2052-05-26' nullable: true is_active: type: boolean description: '' example: true description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - class_id - section_id - batch_name security: [] '/api/batches/{batch_id}': get: summary: '' operationId: getApiBatchesBatch_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] put: summary: '' operationId: putApiBatchesBatch_id description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: false content: application/json: schema: type: object properties: class_id: type: integer description: 'The class_id of an existing record in the classes table.' example: 16 nullable: true section_id: type: integer description: 'The section_id of an existing record in the sections table.' example: 16 nullable: true academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true batch_name: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true batch_code: type: string description: '' example: null start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after start_date.' example: '2052-05-26' nullable: true start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' nullable: true end_time: type: string description: 'Must be a valid date in the format H:i. Must be a date after start_time.' example: '2052-05-26' nullable: true is_active: type: boolean description: '' example: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true security: [] delete: summary: '' operationId: deleteApiBatchesBatch_id description: '' parameters: [] responses: { } tags: - 'Class Management' security: [] parameters: - in: path name: batch_id description: 'The ID of the batch.' example: 1 required: true schema: type: integer /api/academic-years: get: summary: '' operationId: getApiAcademicYears description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] post: summary: '' operationId: postApiAcademicYears description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: true content: application/json: schema: type: object properties: year_range: type: string description: 'Must not be greater than 20 characters.' example: bngzmiyvdljnikhw start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' end_date: type: string description: 'Must be a valid date. Must be a date after start_date.' example: '2052-05-26' is_current: type: boolean description: '' example: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - year_range - start_date - end_date security: [] '/api/academic-years/{academic_year_id}': get: summary: '' operationId: getApiAcademicYearsAcademic_year_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Class Management' security: [] put: summary: '' operationId: putApiAcademicYearsAcademic_year_id description: '' parameters: [] responses: { } tags: - 'Class Management' requestBody: required: false content: application/json: schema: type: object properties: year_range: type: string description: '' example: null start_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true end_date: type: string description: 'Must be a valid date. Must be a date after start_date.' example: '2052-05-26' nullable: true is_current: type: boolean description: '' example: false description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true security: [] delete: summary: '' operationId: deleteApiAcademicYearsAcademic_year_id description: '' parameters: [] responses: { } tags: - 'Class Management' security: [] parameters: - in: path name: academic_year_id description: 'The ID of the academic year.' example: 1 required: true schema: type: integer /api/message: get: summary: '' operationId: getApiMessage description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] post: summary: '' operationId: postApiMessage description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'Must not be greater than 150 characters.' example: b nullable: true content: type: string description: '' example: architecto message_type: type: string description: '' example: 'App Notification' enum: - SMS - Email - 'App Notification' - Circular - Announcement created_by: type: string description: 'The id of an existing record in the users table.' example: null nullable: true scheduled_at: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true priority: type: string description: '' example: Normal enum: - Low - Normal - High - Urgent is_sent: type: boolean description: '' example: true required: - content - message_type - priority security: [] '/api/message/{message_id}': get: summary: '' operationId: getApiMessageMessage_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] put: summary: '' operationId: putApiMessageMessage_id description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'Must not be greater than 150 characters.' example: b nullable: true content: type: string description: '' example: architecto message_type: type: string description: '' example: Email enum: - SMS - Email - 'App Notification' - Circular - Announcement created_by: type: string description: 'The id of an existing record in the users table.' example: null nullable: true scheduled_at: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true priority: type: string description: '' example: Low enum: - Low - Normal - High - Urgent is_sent: type: boolean description: '' example: false required: - content - message_type - priority security: [] delete: summary: '' operationId: deleteApiMessageMessage_id description: '' parameters: [] responses: { } tags: - 'Communication Management' security: [] parameters: - in: path name: message_id description: 'The ID of the message.' example: 1 required: true schema: type: integer /api/messageRecipient: get: summary: '' operationId: getApiMessageRecipient description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] post: summary: '' operationId: postApiMessageRecipient description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: message_id: type: string description: 'The message_id of an existing record in the messages table.' example: architecto user_id: type: string description: 'The id of an existing record in the users table.' example: architecto status: type: string description: '' example: Pending enum: - Pending - Sent - Failed - Read delivered_at: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true read_at: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true required: - message_id - user_id - status security: [] '/api/messageRecipient/{recipient_id}': get: summary: '' operationId: getApiMessageRecipientRecipient_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] put: summary: '' operationId: putApiMessageRecipientRecipient_id description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: message_id: type: string description: 'The message_id of an existing record in the messages table.' example: architecto user_id: type: string description: 'The id of an existing record in the users table.' example: architecto status: type: string description: '' example: Failed enum: - Pending - Sent - Failed - Read delivered_at: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true read_at: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true required: - message_id - user_id - status security: [] delete: summary: '' operationId: deleteApiMessageRecipientRecipient_id description: '' parameters: [] responses: { } tags: - 'Communication Management' security: [] parameters: - in: path name: recipient_id description: 'The ID of the recipient.' example: 1 required: true schema: type: integer /api/circular: get: summary: '' operationId: getApiCircular description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] post: summary: '' operationId: postApiCircular description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'Must not be greater than 150 characters.' example: b content: type: string description: '' example: architecto issued_by: type: string description: 'The id of an existing record in the users table.' example: null nullable: true issued_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' target_audience: type: string description: '' example: Teachers enum: - All - Students - Parents - Teachers - Staff attachment_url: type: string description: 'Must not be greater than 255 characters.' example: 'http://bailey.com/' nullable: true required: - title - content - issued_date - target_audience security: [] '/api/circular/{circular_id}': get: summary: '' operationId: getApiCircularCircular_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] put: summary: '' operationId: putApiCircularCircular_id description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'Must not be greater than 150 characters.' example: b content: type: string description: '' example: architecto issued_by: type: string description: 'The id of an existing record in the users table.' example: null nullable: true issued_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' target_audience: type: string description: '' example: All enum: - All - Students - Parents - Teachers - Staff attachment_url: type: string description: 'Must not be greater than 255 characters.' example: 'http://bailey.com/' nullable: true required: - title - content - issued_date - target_audience security: [] delete: summary: '' operationId: deleteApiCircularCircular_id description: '' parameters: [] responses: { } tags: - 'Communication Management' security: [] parameters: - in: path name: circular_id description: 'The ID of the circular.' example: 1 required: true schema: type: integer /api/notificationSetting: get: summary: '' operationId: getApiNotificationSetting description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] post: summary: '' operationId: postApiNotificationSetting description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: true content: application/json: schema: type: object properties: user_id: type: string description: 'The id of an existing record in the users table.' example: architecto allow_sms: type: boolean description: '' example: true allow_email: type: boolean description: '' example: false allow_app: type: boolean description: '' example: false allow_announcements: type: boolean description: '' example: false allow_circulars: type: boolean description: '' example: true required: - user_id security: [] '/api/notificationSetting/{setting_id}': get: summary: '' operationId: getApiNotificationSettingSetting_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Communication Management' security: [] put: summary: '' operationId: putApiNotificationSettingSetting_id description: '' parameters: [] responses: { } tags: - 'Communication Management' requestBody: required: false content: application/json: schema: type: object properties: allow_sms: type: boolean description: '' example: false allow_email: type: boolean description: '' example: true allow_app: type: boolean description: '' example: false allow_announcements: type: boolean description: '' example: false allow_circulars: type: boolean description: '' example: true security: [] delete: summary: '' operationId: deleteApiNotificationSettingSetting_id description: '' parameters: [] responses: { } tags: - 'Communication Management' security: [] parameters: - in: path name: setting_id description: 'The ID of the setting.' example: 1 required: true schema: type: integer /api/exam: get: summary: '' operationId: getApiExam description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] post: summary: '' operationId: postApiExam description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] '/api/exam/{exam_id}': get: summary: '' operationId: getApiExamExam_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] put: summary: '' operationId: putApiExamExam_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] delete: summary: '' operationId: deleteApiExamExam_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] parameters: - in: path name: exam_id description: 'The ID of the exam.' example: 1 required: true schema: type: integer /api/examSchedule: get: summary: '' operationId: getApiExamSchedule description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] post: summary: '' operationId: postApiExamSchedule description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] '/api/examSchedule/{schedule_id}': get: summary: '' operationId: getApiExamScheduleSchedule_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] put: summary: '' operationId: putApiExamScheduleSchedule_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] delete: summary: '' operationId: deleteApiExamScheduleSchedule_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] parameters: - in: path name: schedule_id description: 'The ID of the schedule.' example: 1 required: true schema: type: integer /api/gradingScheme: get: summary: '' operationId: getApiGradingScheme description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] post: summary: '' operationId: postApiGradingScheme description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] '/api/gradingScheme/{grading_id}': get: summary: '' operationId: getApiGradingSchemeGrading_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] put: summary: '' operationId: putApiGradingSchemeGrading_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] delete: summary: '' operationId: deleteApiGradingSchemeGrading_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] parameters: - in: path name: grading_id description: 'The ID of the grading.' example: 1 required: true schema: type: integer /api/studentMark: get: summary: '' operationId: getApiStudentMark description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] post: summary: '' operationId: postApiStudentMark description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] '/api/studentMark/{mark_id}': get: summary: '' operationId: getApiStudentMarkMark_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] put: summary: '' operationId: putApiStudentMarkMark_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] delete: summary: '' operationId: deleteApiStudentMarkMark_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] parameters: - in: path name: mark_id description: 'The ID of the mark.' example: 1 required: true schema: type: integer /api/studentReportCard: get: summary: '' operationId: getApiStudentReportCard description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] post: summary: '' operationId: postApiStudentReportCard description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] '/api/studentReportCard/{report_card_id}': get: summary: '' operationId: getApiStudentReportCardReport_card_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Exam Management' security: [] put: summary: '' operationId: putApiStudentReportCardReport_card_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] delete: summary: '' operationId: deleteApiStudentReportCardReport_card_id description: '' parameters: [] responses: { } tags: - 'Exam Management' security: [] parameters: - in: path name: report_card_id description: 'The ID of the report card.' example: 1 required: true schema: type: integer /api/feeCategory: get: summary: '' operationId: getApiFeeCategory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiFeeCategory description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/feeCategory/{fee_category_id}': get: summary: '' operationId: getApiFeeCategoryFee_category_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiFeeCategoryFee_category_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiFeeCategoryFee_category_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: fee_category_id description: 'The ID of the fee category.' example: 1 required: true schema: type: integer /api/feeStructure: get: summary: '' operationId: getApiFeeStructure description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiFeeStructure description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/feeStructure/{fee_structure_id}': get: summary: '' operationId: getApiFeeStructureFee_structure_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiFeeStructureFee_structure_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiFeeStructureFee_structure_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: fee_structure_id description: 'The ID of the fee structure.' example: 1 required: true schema: type: integer /api/studentFee: get: summary: '' operationId: getApiStudentFee description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiStudentFee description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/studentFee/{student_fee_id}': get: summary: '' operationId: getApiStudentFeeStudent_fee_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiStudentFeeStudent_fee_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiStudentFeeStudent_fee_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: student_fee_id description: 'The ID of the student fee.' example: 1 required: true schema: type: integer /api/feePayment: get: summary: '' operationId: getApiFeePayment description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiFeePayment description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/feePayment/{payment_id}': get: summary: '' operationId: getApiFeePaymentPayment_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiFeePaymentPayment_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiFeePaymentPayment_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: payment_id description: 'The ID of the payment.' example: 1 required: true schema: type: integer /api/discount: get: summary: '' operationId: getApiDiscount description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiDiscount description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/discount/{discount_id}': get: summary: '' operationId: getApiDiscountDiscount_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiDiscountDiscount_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiDiscountDiscount_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: discount_id description: 'The ID of the discount.' example: 1 required: true schema: type: integer /api/studentDiscount: get: summary: '' operationId: getApiStudentDiscount description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiStudentDiscount description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/studentDiscount/{student_discount_id}': get: summary: '' operationId: getApiStudentDiscountStudent_discount_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiStudentDiscountStudent_discount_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiStudentDiscountStudent_discount_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: student_discount_id description: 'The ID of the student discount.' example: 1 required: true schema: type: integer /api/expense: get: summary: '' operationId: getApiExpense description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiExpense description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/expense/{expense_id}': get: summary: '' operationId: getApiExpenseExpense_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiExpenseExpense_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiExpenseExpense_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: expense_id description: 'The ID of the expense.' example: 1 required: true schema: type: integer /api/financialReport: get: summary: '' operationId: getApiFinancialReport description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] post: summary: '' operationId: postApiFinancialReport description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] '/api/financialReport/{report_id}': get: summary: '' operationId: getApiFinancialReportReport_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Fee Management' security: [] put: summary: '' operationId: putApiFinancialReportReport_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] delete: summary: '' operationId: deleteApiFinancialReportReport_id description: '' parameters: [] responses: { } tags: - 'Fee Management' security: [] parameters: - in: path name: report_id description: 'The ID of the report.' example: 1 required: true schema: type: integer /api/hostels: get: summary: '' operationId: getApiHostels description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiHostels description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: hostel_name: type: string description: 'Must not be greater than 100 characters.' example: b hostel_type: type: string description: '' example: Co-ed enum: - Boys - Girls - Co-ed total_capacity: type: integer description: 'Must be at least 1.' example: 22 available_capacity: type: integer description: 'Must be at least 0.' example: 84 location: type: string description: 'Must not be greater than 100 characters.' example: z nullable: true required: - hostel_name - hostel_type - total_capacity - available_capacity security: [] '/api/hostels/{hostel_id}': get: summary: '' operationId: getApiHostelsHostel_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiHostelsHostel_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: hostel_name: type: string description: 'Must not be greater than 100 characters.' example: b hostel_type: type: string description: '' example: Co-ed enum: - Boys - Girls - Co-ed total_capacity: type: integer description: 'Must be at least 1.' example: 22 available_capacity: type: integer description: 'Must be at least 0.' example: 84 location: type: string description: 'Must not be greater than 100 characters.' example: z nullable: true security: [] delete: summary: '' operationId: deleteApiHostelsHostel_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: hostel_id description: 'The ID of the hostel.' example: 1 required: true schema: type: integer /api/hostel-rooms: get: summary: '' operationId: getApiHostelRooms description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiHostelRooms description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: hostel_id: type: integer description: 'The hostel_id of an existing record in the hostels table.' example: 16 room_number: type: string description: 'Must not be greater than 10 characters.' example: ngzmiy room_type: type: string description: '' example: Single enum: - Single - Double - Triple - Quad capacity: type: integer description: 'Must be at least 1.' example: 16 occupied: type: integer description: 'Must be at least 0.' example: 42 nullable: true required: - hostel_id - room_number - room_type - capacity security: [] '/api/hostel-rooms/{room_room_id}': get: summary: '' operationId: getApiHostelRoomsRoom_room_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiHostelRoomsRoom_room_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: hostel_id: type: integer description: 'The hostel_id of an existing record in the hostels table.' example: 16 room_number: type: string description: 'Must not be greater than 10 characters.' example: ngzmiy room_type: type: string description: '' example: Triple enum: - Single - Double - Triple - Quad capacity: type: integer description: 'Must be at least 1.' example: 16 occupied: type: integer description: 'Must be at least 0.' example: 42 nullable: true security: [] delete: summary: '' operationId: deleteApiHostelRoomsRoom_room_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: room_room_id description: 'The ID of the room room.' example: 1 required: true schema: type: integer /api/student-hostels: get: summary: '' operationId: getApiStudentHostels description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiStudentHostels description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 hostel_id: type: integer description: 'The hostel_id of an existing record in the hostels table.' example: 16 room_id: type: integer description: 'The room_id of an existing record in the rooms table.' example: 16 assigned_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' checkout_date: type: string description: 'Must be a valid date. Must be a date after or equal to assigned_date.' example: '2052-05-26' nullable: true required: - student_id - hostel_id - room_id - assigned_date security: [] '/api/student-hostels/{studentHostel_id}': get: summary: '' operationId: getApiStudentHostelsStudentHostel_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiStudentHostelsStudentHostel_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 hostel_id: type: integer description: 'The hostel_id of an existing record in the hostels table.' example: 16 room_id: type: integer description: 'The room_id of an existing record in the rooms table.' example: 16 assigned_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' checkout_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true security: [] delete: summary: '' operationId: deleteApiStudentHostelsStudentHostel_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: studentHostel_id description: 'The ID of the studentHostel.' example: 1 required: true schema: type: integer /api/transportation: get: summary: '' operationId: getApiTransportation description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiTransportation description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: transport_name: type: string description: 'Must not be greater than 100 characters.' example: b transport_type: type: string description: '' example: Van enum: - Bus - Van - Shuttle capacity: type: integer description: 'Must be at least 1.' example: 22 route: type: string description: 'Must not be greater than 255 characters.' example: g nullable: true departure_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' nullable: true required: - transport_name - transport_type - capacity security: [] '/api/transportation/{transport_id}': get: summary: '' operationId: getApiTransportationTransport_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiTransportationTransport_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: transport_name: type: string description: 'Must not be greater than 100 characters.' example: b transport_type: type: string description: '' example: Shuttle enum: - Bus - Van - Shuttle capacity: type: integer description: 'Must be at least 1.' example: 22 route: type: string description: 'Must not be greater than 255 characters.' example: g nullable: true departure_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' nullable: true security: [] delete: summary: '' operationId: deleteApiTransportationTransport_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: transport_id description: 'The ID of the transport.' example: 1 required: true schema: type: integer /api/student-transport: get: summary: '' operationId: getApiStudentTransport description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiStudentTransport description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 transport_id: type: integer description: 'The transport_id of an existing record in the transportation table.' example: 16 pickup_location: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true drop_location: type: string description: 'Must not be greater than 255 characters.' example: g nullable: true assigned_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' leave_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true required: - student_id - transport_id - assigned_date security: [] '/api/student-transport/{studentTransport_id}': get: summary: '' operationId: getApiStudentTransportStudentTransport_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiStudentTransportStudentTransport_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 transport_id: type: integer description: 'The transport_id of an existing record in the transportation table.' example: 16 pickup_location: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true drop_location: type: string description: 'Must not be greater than 255 characters.' example: g nullable: true assigned_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' leave_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' nullable: true security: [] delete: summary: '' operationId: deleteApiStudentTransportStudentTransport_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: studentTransport_id description: 'The ID of the studentTransport.' example: 1 required: true schema: type: integer /api/facilities: get: summary: '' operationId: getApiFacilities description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiFacilities description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: facility_name: type: string description: 'Must not be greater than 100 characters.' example: b facility_type: type: string description: '' example: Sports enum: - Sports - Library - Cafeteria - Lab location: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true capacity: type: integer description: 'Must be at least 1.' example: 67 available_capacity: type: integer description: 'Must be at least 0.' example: 12 required: - facility_name - facility_type - capacity - available_capacity security: [] '/api/facilities/{facility_id}': get: summary: '' operationId: getApiFacilitiesFacility_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiFacilitiesFacility_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: facility_name: type: string description: 'Must not be greater than 100 characters.' example: b facility_type: type: string description: '' example: Cafeteria enum: - Sports - Library - Cafeteria - Lab location: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true capacity: type: integer description: 'Must be at least 1.' example: 67 available_capacity: type: integer description: 'Must be at least 0.' example: 12 security: [] delete: summary: '' operationId: deleteApiFacilitiesFacility_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: facility_id description: 'The ID of the facility.' example: 1 required: true schema: type: integer /api/facility-bookings: get: summary: '' operationId: getApiFacilityBookings description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] post: summary: '' operationId: postApiFacilityBookings description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: true content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 facility_id: type: integer description: 'The facility_id of an existing record in the facility_management table.' example: 16 booking_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' end_time: type: string description: 'Must be a valid date in the format H:i. Must be a date after start_time.' example: '2052-05-26' required: - student_id - facility_id - booking_date - start_time - end_time security: [] '/api/facility-bookings/{facilityBooking_booking_id}': get: summary: '' operationId: getApiFacilityBookingsFacilityBooking_booking_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Hostel & Transport Management' security: [] put: summary: '' operationId: putApiFacilityBookingsFacilityBooking_booking_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' requestBody: required: false content: application/json: schema: type: object properties: student_id: type: integer description: '' example: 16 facility_id: type: integer description: 'The facility_id of an existing record in the facility_management table.' example: 16 booking_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' end_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' security: [] delete: summary: '' operationId: deleteApiFacilityBookingsFacilityBooking_booking_id description: '' parameters: [] responses: { } tags: - 'Hostel & Transport Management' security: [] parameters: - in: path name: facilityBooking_booking_id description: 'The ID of the facilityBooking booking.' example: 1 required: true schema: type: integer /api/roles: get: summary: '' operationId: getApiRoles description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] post: summary: '' operationId: postApiRoles description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 50 characters.' example: b description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - name security: [] '/api/roles/{id}': get: summary: '' operationId: getApiRolesId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] put: summary: '' operationId: putApiRolesId description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: null description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true security: [] delete: summary: '' operationId: deleteApiRolesId description: '' parameters: [] responses: { } tags: - 'RBAC Management' security: [] parameters: - in: path name: id description: 'The ID of the role.' example: 1 required: true schema: type: integer '/api/roles/{role_id}/sync-permissions': put: summary: '' operationId: putApiRolesRole_idSyncPermissions description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: false content: application/json: schema: type: object properties: permissions: type: array description: 'The id of an existing record in the permissions table.' example: null items: type: string security: [] parameters: - in: path name: role_id description: 'The ID of the role.' example: 1 required: true schema: type: integer /api/permissions: get: summary: '' operationId: getApiPermissions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] post: summary: '' operationId: postApiPermissions description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 100 characters.' example: b description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true module_name: type: string description: 'Must not be greater than 100 characters.' example: v nullable: true required: - name security: [] '/api/permissions/{id}': get: summary: '' operationId: getApiPermissionsId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] put: summary: '' operationId: putApiPermissionsId description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: null description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true module_name: type: string description: 'Must not be greater than 100 characters.' example: v nullable: true security: [] delete: summary: '' operationId: deleteApiPermissionsId description: '' parameters: [] responses: { } tags: - 'RBAC Management' security: [] parameters: - in: path name: id description: 'The ID of the permission.' example: 1 required: true schema: type: integer /api/role-permissions: get: summary: '' operationId: getApiRolePermissions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] '/api/role-permissions/{role_id}': get: summary: '' operationId: getApiRolePermissionsRole_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] put: summary: '' operationId: putApiRolePermissionsRole_id description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: false content: application/json: schema: type: object properties: permissions: type: array description: 'The id of an existing record in the permissions table.' example: null items: type: string security: [] parameters: - in: path name: role_id description: 'The ID of the role.' example: 1 required: true schema: type: integer /api/user-roles: get: summary: '' operationId: getApiUserRoles description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] '/api/user-roles/{user_id}': get: summary: '' operationId: getApiUserRolesUser_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] put: summary: '' operationId: putApiUserRolesUser_id description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: false content: application/json: schema: type: object properties: roles: type: array description: 'The id of an existing record in the roles table.' example: null items: type: string security: [] parameters: - in: path name: user_id description: 'The ID of the user.' example: 1 required: true schema: type: integer '/api/user-permissions/{user_id}': get: summary: '' operationId: getApiUserPermissionsUser_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'RBAC Management' security: [] put: summary: '' operationId: putApiUserPermissionsUser_id description: '' parameters: [] responses: { } tags: - 'RBAC Management' requestBody: required: false content: application/json: schema: type: object properties: permissions: type: array description: 'The id of an existing record in the permissions table.' example: null items: type: string security: [] parameters: - in: path name: user_id description: 'The ID of the user.' example: 1 required: true schema: type: integer /api/staff/departments: get: summary: '' operationId: getApiStaffDepartments description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Staff Management' security: [] post: summary: '' operationId: postApiStaffDepartments description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] /api/staff: get: summary: '' operationId: getApiStaff description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Staff Management' security: [] post: summary: '' operationId: postApiStaff description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] '/api/staff/{staff_id}': get: summary: '' operationId: getApiStaffStaff_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Staff Management' security: [] put: summary: '' operationId: putApiStaffStaff_id description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] delete: summary: '' operationId: deleteApiStaffStaff_id description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] parameters: - in: path name: staff_id description: 'The ID of the staff.' example: 1 required: true schema: type: integer '/api/staff/{staff_staff_id}/attendance': post: summary: '' operationId: postApiStaffStaff_staff_idAttendance description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] parameters: - in: path name: staff_staff_id description: 'The ID of the staff staff.' example: 1 required: true schema: type: integer '/api/staff/{staff_staff_id}/salary': post: summary: '' operationId: postApiStaffStaff_staff_idSalary description: '' parameters: [] responses: { } tags: - 'Staff Management' requestBody: required: true content: application/json: schema: type: object properties: basic_salary: type: number description: 'Must be between 0 and 9999999.99.' example: 1 allowances: type: number description: 'Must be between 0 and 9999999.99.' example: 1 nullable: true deductions: type: number description: 'Must be between 0 and 9999999.99.' example: 0 nullable: true net_salary: type: number description: 'Must be between 0 and 9999999.99.' example: 1 nullable: true payment_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' required: - basic_salary - payment_date security: [] parameters: - in: path name: staff_staff_id description: 'The ID of the staff staff.' example: 1 required: true schema: type: integer '/api/staff/{staff_staff_id}/reviews': post: summary: '' operationId: postApiStaffStaff_staff_idReviews description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] parameters: - in: path name: staff_staff_id description: 'The ID of the staff staff.' example: 1 required: true schema: type: integer '/api/staff/{staff_staff_id}/leave-requests': post: summary: '' operationId: postApiStaffStaff_staff_idLeaveRequests description: '' parameters: [] responses: { } tags: - 'Staff Management' security: [] parameters: - in: path name: staff_staff_id description: 'The ID of the staff staff.' example: 1 required: true schema: type: integer /api/students: get: summary: '' operationId: getApiStudents description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] post: summary: '' operationId: postApiStudents description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: true content: application/json: schema: type: object properties: first_name: type: string description: 'Must not be greater than 100 characters.' example: b last_name: type: string description: 'Must not be greater than 100 characters.' example: 'n' date_of_birth: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' gender: type: string description: '' example: Female enum: - Male - Female - Other blood_group: type: string description: 'Must not be greater than 5 characters.' example: g nullable: true nationality: type: string description: 'Must not be greater than 50 characters.' example: z nullable: true religion: type: string description: 'Must not be greater than 50 characters.' example: m nullable: true current_address: type: string description: '' example: architecto permanent_address: type: string description: '' example: architecto phone_number: type: string description: 'Must not be greater than 20 characters.' example: ngzmiyvdljnikhwa nullable: true email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: breitenberg.gilbert@example.com nullable: true profile_photo: type: string description: 'Must not be greater than 255 characters.' example: u nullable: true date_of_admission: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' admission_number: type: string description: 'Must not be greater than 50 characters.' example: w status: type: string description: '' example: Graduated enum: - Active - Inactive - Graduated - Transferred father_name: type: string description: 'Parent info. Must not be greater than 100 characters.' example: p nullable: true father_phone: type: string description: 'Must not be greater than 20 characters.' example: wlvqwrsitcpscqld nullable: true father_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: nstokes@example.org nullable: true father_occupation: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true mother_name: type: string description: 'Must not be greater than 100 characters.' example: t nullable: true mother_phone: type: string description: 'Must not be greater than 20 characters.' example: ujwvlxjklqppwqbe nullable: true mother_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: kutch.cynthia@example.org nullable: true mother_occupation: type: string description: 'Must not be greater than 100 characters.' example: q nullable: true guardian_name: type: string description: 'Must not be greater than 100 characters.' example: i nullable: true guardian_relationship: type: string description: 'Must not be greater than 50 characters.' example: t nullable: true guardian_phone: type: string description: 'Must not be greater than 20 characters.' example: pxntltcvipojsaus nullable: true guardian_address: type: string description: '' example: architecto nullable: true previous_educations: type: array description: 'Previous education.' example: null items: type: object nullable: true properties: school_name: type: string description: 'This field is required when previous_educations is present. Must not be greater than 150 characters.' example: g board: type: string description: 'This field is required when previous_educations is present. Must not be greater than 100 characters.' example: z class_completed: type: string description: 'This field is required when previous_educations is present. Must not be greater than 20 characters.' example: miyvdljnikhwaykc percentage: type: number description: 'Must be between 0 and 100.' example: 0 nullable: true year_of_passing: type: string description: 'This field is required when previous_educations is present. Must be 4 digits.' example: '9775' height_cm: type: number description: 'Health record. Must be between 0 and 250.' example: 1 nullable: true weight_kg: type: number description: 'Must be between 0 and 300.' example: 0 nullable: true allergies: type: string description: '' example: architecto nullable: true medical_conditions: type: string description: '' example: architecto nullable: true vaccination_status: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true required: - first_name - last_name - date_of_birth - gender - current_address - permanent_address - date_of_admission - admission_number security: [] '/api/students/{student_id}': get: summary: '' operationId: getApiStudentsStudent_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] put: summary: '' operationId: putApiStudentsStudent_id description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: first_name: type: string description: 'Must not be greater than 100 characters.' example: b nullable: true last_name: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true date_of_birth: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true gender: type: string description: '' example: Other enum: - Male - Female - Other blood_group: type: string description: 'Must not be greater than 5 characters.' example: g nullable: true nationality: type: string description: 'Must not be greater than 50 characters.' example: z nullable: true religion: type: string description: 'Must not be greater than 50 characters.' example: m nullable: true current_address: type: string description: '' example: architecto nullable: true permanent_address: type: string description: '' example: architecto nullable: true phone_number: type: string description: 'Must not be greater than 20 characters.' example: ngzmiyvdljnikhwa nullable: true email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: breitenberg.gilbert@example.com nullable: true profile_photo: type: string description: 'Must not be greater than 255 characters.' example: u nullable: true date_of_admission: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true admission_number: type: string description: '' example: null status: type: string description: '' example: Transferred enum: - Active - Inactive - Graduated - Transferred father_name: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true father_phone: type: string description: 'Must not be greater than 20 characters.' example: pwlvqwrsitcpscql nullable: true father_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: sleffler@example.org nullable: true father_occupation: type: string description: 'Must not be greater than 100 characters.' example: r nullable: true mother_name: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true mother_phone: type: string description: 'Must not be greater than 20 characters.' example: tujwvlxjklqppwqb nullable: true mother_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: madisen51@example.net nullable: true mother_occupation: type: string description: 'Must not be greater than 100 characters.' example: o nullable: true guardian_name: type: string description: 'Must not be greater than 100 characters.' example: q nullable: true guardian_relationship: type: string description: 'Must not be greater than 50 characters.' example: i nullable: true guardian_phone: type: string description: 'Must not be greater than 20 characters.' example: tpxntltcvipojsau nullable: true guardian_address: type: string description: '' example: architecto nullable: true height_cm: type: number description: 'Must be between 0 and 250.' example: 1 nullable: true weight_kg: type: number description: 'Must be between 0 and 300.' example: 0 nullable: true allergies: type: string description: '' example: architecto nullable: true medical_conditions: type: string description: '' example: architecto nullable: true vaccination_status: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true previous_educations: type: array description: '' example: null items: type: object nullable: true properties: school_name: type: string description: 'Must not be greater than 150 characters.' example: g nullable: true board: type: string description: 'Must not be greater than 100 characters.' example: z nullable: true class_completed: type: string description: 'Must not be greater than 20 characters.' example: miyvdljnikhwaykc nullable: true percentage: type: number description: 'Must be between 0 and 100.' example: 0 nullable: true year_of_passing: type: string description: 'Must be 4 digits.' example: '9775' nullable: true contacts: type: array description: '' example: null items: type: object nullable: true properties: contact_type: type: string description: '' example: emergency enum: - phone - mobile - emergency - work - fax - other nullable: true contact_value: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true is_primary: type: boolean description: '' example: true nullable: true label: type: string description: 'Must not be greater than 50 characters.' example: g nullable: true security: [] delete: summary: '' operationId: deleteApiStudentsStudent_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_id description: 'The ID of the student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/parent': post: summary: '' operationId: postApiStudentsStudent_student_idParent description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: father_name: type: string description: 'Must not be greater than 100 characters.' example: b nullable: true father_phone: type: string description: 'Must not be greater than 20 characters.' example: ngzmiyvdljnikhwa nullable: true father_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: breitenberg.gilbert@example.com nullable: true father_occupation: type: string description: 'Must not be greater than 100 characters.' example: u nullable: true mother_name: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true mother_phone: type: string description: 'Must not be greater than 20 characters.' example: pwlvqwrsitcpscql nullable: true mother_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: sleffler@example.org nullable: true mother_occupation: type: string description: 'Must not be greater than 100 characters.' example: r nullable: true guardian_name: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true guardian_relationship: type: string description: 'Must not be greater than 50 characters.' example: t nullable: true guardian_phone: type: string description: 'Must not be greater than 20 characters.' example: ujwvlxjklqppwqbe nullable: true guardian_address: type: string description: '' example: architecto nullable: true security: [] put: summary: '' operationId: putApiStudentsStudent_student_idParent description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: father_name: type: string description: 'Must not be greater than 100 characters.' example: b nullable: true father_phone: type: string description: 'Must not be greater than 20 characters.' example: ngzmiyvdljnikhwa nullable: true father_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: breitenberg.gilbert@example.com nullable: true father_occupation: type: string description: 'Must not be greater than 100 characters.' example: u nullable: true mother_name: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true mother_phone: type: string description: 'Must not be greater than 20 characters.' example: pwlvqwrsitcpscql nullable: true mother_email: type: string description: 'Must be a valid email address. Must not be greater than 100 characters.' example: sleffler@example.org nullable: true mother_occupation: type: string description: 'Must not be greater than 100 characters.' example: r nullable: true guardian_name: type: string description: 'Must not be greater than 100 characters.' example: w nullable: true guardian_relationship: type: string description: 'Must not be greater than 50 characters.' example: t nullable: true guardian_phone: type: string description: 'Must not be greater than 20 characters.' example: ujwvlxjklqppwqbe nullable: true guardian_address: type: string description: '' example: architecto nullable: true security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/education': post: summary: '' operationId: postApiStudentsStudent_student_idEducation description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: true content: application/json: schema: type: object properties: school_name: type: string description: 'Must not be greater than 150 characters.' example: b board: type: string description: 'Must not be greater than 100 characters.' example: 'n' class_completed: type: string description: 'Must not be greater than 20 characters.' example: gzmiyvdljnikhway percentage: type: number description: 'Must be between 0 and 100.' example: 0 nullable: true year_of_passing: type: string description: 'Must be 4 digits.' example: '9775' required: - school_name - board - class_completed - year_of_passing security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/education/{education_education_id}': put: summary: '' operationId: putApiStudentsStudent_student_idEducationEducation_education_id description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: school_name: type: string description: 'Must not be greater than 150 characters.' example: b nullable: true board: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true class_completed: type: string description: 'Must not be greater than 20 characters.' example: gzmiyvdljnikhway nullable: true percentage: type: number description: 'Must be between 0 and 100.' example: 0 nullable: true year_of_passing: type: string description: 'Must be 4 digits.' example: '9775' nullable: true security: [] delete: summary: '' operationId: deleteApiStudentsStudent_student_idEducationEducation_education_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer - in: path name: education_education_id description: 'The ID of the education education.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/health': get: summary: '' operationId: getApiStudentsStudent_student_idHealth description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] post: summary: '' operationId: postApiStudentsStudent_student_idHealth description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: height_cm: type: number description: 'Must be between 0 and 250.' example: 1 nullable: true weight_kg: type: number description: 'Must be between 0 and 300.' example: 1 nullable: true blood_group: type: string description: 'Must not be greater than 5 characters.' example: g nullable: true allergies: type: string description: '' example: architecto nullable: true medical_conditions: type: string description: '' example: architecto nullable: true vaccination_status: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/health/{healthRecord_health_id}': put: summary: '' operationId: putApiStudentsStudent_student_idHealthHealthRecord_health_id description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: height_cm: type: number description: 'Must be between 0 and 250.' example: 1 nullable: true weight_kg: type: number description: 'Must be between 0 and 300.' example: 1 nullable: true blood_group: type: string description: 'Must not be greater than 5 characters.' example: g nullable: true allergies: type: string description: '' example: architecto nullable: true medical_conditions: type: string description: '' example: architecto nullable: true vaccination_status: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true security: [] delete: summary: '' operationId: deleteApiStudentsStudent_student_idHealthHealthRecord_health_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer - in: path name: healthRecord_health_id description: 'The ID of the healthRecord health.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/enroll': post: summary: '' operationId: postApiStudentsStudent_student_idEnroll description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: true content: application/json: schema: type: object properties: batch_id: type: integer description: 'The batch_id of an existing record in the batches table.' example: 16 academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true enrollment_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' status: type: string description: '' example: Graduated enum: - Active - Inactive - Graduated - Transferred nullable: true remarks: type: string description: '' example: architecto nullable: true required: - batch_id - enrollment_date security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/enrollment/{enrollment_enrollment_id}': put: summary: '' operationId: putApiStudentsStudent_student_idEnrollmentEnrollment_enrollment_id description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: enrollment_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true status: type: string description: '' example: Graduated enum: - Active - Inactive - Graduated - Transferred nullable: true remarks: type: string description: '' example: architecto nullable: true security: [] delete: summary: '' operationId: deleteApiStudentsStudent_student_idEnrollmentEnrollment_enrollment_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer - in: path name: enrollment_enrollment_id description: 'The ID of the enrollment enrollment.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/enrollments': get: summary: '' operationId: getApiStudentsStudent_student_idEnrollments description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/promote': post: summary: '' operationId: postApiStudentsStudent_student_idPromote description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: true content: application/json: schema: type: object properties: from_batch_id: type: integer description: 'The batch_id of an existing record in the batches table.' example: 16 to_batch_id: type: integer description: 'The value and from_batch_id must be different. The batch_id of an existing record in the batches table.' example: 16 from_academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true to_academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 nullable: true promotion_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' remarks: type: string description: '' example: architecto nullable: true required: - from_batch_id - to_batch_id - promotion_date security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/promotions': get: summary: '' operationId: getApiStudentsStudent_student_idPromotions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/promotion/{promotion_promotion_id}': delete: summary: '' operationId: deleteApiStudentsStudent_student_idPromotionPromotion_promotion_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer - in: path name: promotion_promotion_id description: 'The ID of the promotion promotion.' example: 16 required: true schema: type: integer '/api/students/{student_student_id}/documents': get: summary: '' operationId: getApiStudentsStudent_student_idDocuments description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] post: summary: '' operationId: postApiStudentsStudent_student_idDocuments description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: true content: application/json: schema: type: object properties: document_type: type: string description: '' example: id_proof enum: - birth_certificate - transfer_certificate - character_certificate - previous_school_certificate - medical_certificate - passport - id_proof - address_proof - photograph - other document_name: type: string description: 'Must not be greater than 255 characters.' example: b file_path: type: string description: 'Must not be greater than 500 characters.' example: 'n' file_size: type: integer description: '' example: 16 nullable: true mime_type: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true uploaded_by: type: integer description: 'The id of an existing record in the users table.' example: 16 nullable: true notes: type: string description: '' example: architecto nullable: true expiry_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true required: - document_type - document_name - file_path security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/document/{document_document_id}': put: summary: '' operationId: putApiStudentsStudent_student_idDocumentDocument_document_id description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: document_type: type: string description: '' example: passport enum: - birth_certificate - transfer_certificate - character_certificate - previous_school_certificate - medical_certificate - passport - id_proof - address_proof - photograph - other nullable: true document_name: type: string description: 'Must not be greater than 255 characters.' example: b nullable: true file_path: type: string description: 'Must not be greater than 500 characters.' example: 'n' nullable: true file_size: type: integer description: '' example: 16 nullable: true mime_type: type: string description: 'Must not be greater than 100 characters.' example: 'n' nullable: true notes: type: string description: '' example: architecto nullable: true expiry_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:46' nullable: true security: [] delete: summary: '' operationId: deleteApiStudentsStudent_student_idDocumentDocument_document_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer - in: path name: document_document_id description: 'The ID of the document document.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/activities': get: summary: '' operationId: getApiStudentsStudent_student_idActivities description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/contacts': get: summary: '' operationId: getApiStudentsStudent_student_idContacts description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Student Management' security: [] post: summary: '' operationId: postApiStudentsStudent_student_idContacts description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: true content: application/json: schema: type: object properties: contact_type: type: string description: '' example: work enum: - phone - mobile - emergency - work - fax - other contact_value: type: string description: 'Must not be greater than 100 characters.' example: b is_primary: type: boolean description: '' example: true label: type: string description: 'Must not be greater than 50 characters.' example: 'n' nullable: true required: - contact_type - contact_value security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer '/api/students/{student_student_id}/contact/{contact_contact_id}': put: summary: '' operationId: putApiStudentsStudent_student_idContactContact_contact_id description: '' parameters: [] responses: { } tags: - 'Student Management' requestBody: required: false content: application/json: schema: type: object properties: contact_type: type: string description: '' example: mobile enum: - phone - mobile - emergency - work - fax - other nullable: true contact_value: type: string description: 'Must not be greater than 100 characters.' example: b nullable: true is_primary: type: boolean description: '' example: true label: type: string description: 'Must not be greater than 50 characters.' example: 'n' nullable: true security: [] delete: summary: '' operationId: deleteApiStudentsStudent_student_idContactContact_contact_id description: '' parameters: [] responses: { } tags: - 'Student Management' security: [] parameters: - in: path name: student_student_id description: 'The ID of the student student.' example: 1 required: true schema: type: integer - in: path name: contact_contact_id description: 'The ID of the contact contact.' example: 1 required: true schema: type: integer /api/subject: get: summary: '' operationId: getApiSubject description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] post: summary: '' operationId: postApiSubject description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] '/api/subject/{subject_id}': get: summary: '' operationId: getApiSubjectSubject_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] put: summary: '' operationId: putApiSubjectSubject_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] delete: summary: '' operationId: deleteApiSubjectSubject_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] parameters: - in: path name: subject_id description: 'The ID of the subject.' example: 1 required: true schema: type: integer /api/classSubject: get: summary: '' operationId: getApiClassSubject description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] post: summary: '' operationId: postApiClassSubject description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] '/api/classSubject/{class_subject_id}': get: summary: '' operationId: getApiClassSubjectClass_subject_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] put: summary: '' operationId: putApiClassSubjectClass_subject_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] delete: summary: '' operationId: deleteApiClassSubjectClass_subject_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] parameters: - in: path name: class_subject_id description: 'The ID of the class subject.' example: 1 required: true schema: type: integer /api/curriculum: get: summary: '' operationId: getApiCurriculum description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] post: summary: '' operationId: postApiCurriculum description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] '/api/curriculum/{curriculum_id}': get: summary: '' operationId: getApiCurriculumCurriculum_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] put: summary: '' operationId: putApiCurriculumCurriculum_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] delete: summary: '' operationId: deleteApiCurriculumCurriculum_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] parameters: - in: path name: curriculum_id description: 'The ID of the curriculum.' example: 1 required: true schema: type: integer /api/lessonPlan: get: summary: '' operationId: getApiLessonPlan description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] post: summary: '' operationId: postApiLessonPlan description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] '/api/lessonPlan/{lesson_plan_id}': get: summary: '' operationId: getApiLessonPlanLesson_plan_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] put: summary: '' operationId: putApiLessonPlanLesson_plan_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] delete: summary: '' operationId: deleteApiLessonPlanLesson_plan_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] parameters: - in: path name: lesson_plan_id description: 'The ID of the lesson plan.' example: 1 required: true schema: type: integer /api/textbook: get: summary: '' operationId: getApiTextbook description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] post: summary: '' operationId: postApiTextbook description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] '/api/textbook/{textbook_id}': get: summary: '' operationId: getApiTextbookTextbook_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] put: summary: '' operationId: putApiTextbookTextbook_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] delete: summary: '' operationId: deleteApiTextbookTextbook_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] parameters: - in: path name: textbook_id description: 'The ID of the textbook.' example: 1 required: true schema: type: integer /api/teacherSubjectMapping: get: summary: '' operationId: getApiTeacherSubjectMapping description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] post: summary: '' operationId: postApiTeacherSubjectMapping description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] '/api/teacherSubjectMapping/{mapping_id}': get: summary: '' operationId: getApiTeacherSubjectMappingMapping_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Subject Management' security: [] put: summary: '' operationId: putApiTeacherSubjectMappingMapping_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] delete: summary: '' operationId: deleteApiTeacherSubjectMappingMapping_id description: '' parameters: [] responses: { } tags: - 'Subject Management' security: [] parameters: - in: path name: mapping_id description: 'The ID of the mapping.' example: 1 required: true schema: type: integer /api/room: get: summary: '' operationId: getApiRoom description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] post: summary: '' operationId: postApiRoom description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: room_name: type: string description: 'Must not be greater than 50 characters.' example: b room_type: type: string description: '' example: Office enum: - Classroom - Lab - Auditorium - Office capacity: type: integer description: 'Must be at least 1.' example: 22 description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - room_name - room_type - capacity security: [] '/api/room/{room_id}': get: summary: '' operationId: getApiRoomRoom_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] put: summary: '' operationId: putApiRoomRoom_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: room_name: type: string description: '' example: null room_type: type: string description: '' example: Classroom enum: - Classroom - Lab - Auditorium - Office capacity: type: integer description: 'Must be at least 1.' example: 16 description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true required: - room_type - capacity security: [] delete: summary: '' operationId: deleteApiRoomRoom_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' security: [] parameters: - in: path name: room_id description: 'The ID of the room.' example: 1 required: true schema: type: integer /api/day: get: summary: '' operationId: getApiDay description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] post: summary: '' operationId: postApiDay description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: day_name: type: string description: 'Must not be greater than 20 characters.' example: bngzmiyvdljnikhw required: - day_name security: [] '/api/day/{day_id}': get: summary: '' operationId: getApiDayDay_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] put: summary: '' operationId: putApiDayDay_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: false content: application/json: schema: type: object properties: day_name: type: string description: '' example: null security: [] delete: summary: '' operationId: deleteApiDayDay_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' security: [] parameters: - in: path name: day_id description: 'The ID of the day.' example: 1 required: true schema: type: integer /api/period: get: summary: '' operationId: getApiPeriod description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] post: summary: '' operationId: postApiPeriod description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' end_time: type: string description: 'Must be a valid date in the format H:i. Must be a date after start_time.' example: '2052-05-26' required: - start_time - end_time security: [] '/api/period/{period_id}': get: summary: '' operationId: getApiPeriodPeriod_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] put: summary: '' operationId: putApiPeriodPeriod_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' end_time: type: string description: 'Must be a valid date in the format H:i. Must be a date after start_time.' example: '2052-05-26' required: - start_time - end_time security: [] delete: summary: '' operationId: deleteApiPeriodPeriod_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' security: [] parameters: - in: path name: period_id description: 'The ID of the period.' example: 1 required: true schema: type: integer /api/timetable: get: summary: '' operationId: getApiTimetable description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] post: summary: '' operationId: postApiTimetable description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: class_id: type: integer description: 'The class_id of an existing record in the classes table.' example: 16 section_id: type: integer description: 'The section_id of an existing record in the sections table.' example: 16 academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 day_id: type: integer description: 'The day_id of an existing record in the days table.' example: 16 period_id: type: integer description: 'The period_id of an existing record in the periods table.' example: 16 subject_id: type: integer description: 'The subject_id of an existing record in the subjects table.' example: 16 teacher_id: type: integer description: 'The staff_id of an existing record in the staff table.' example: 16 room_id: type: integer description: 'The room_id of an existing record in the rooms table.' example: 16 required: - class_id - section_id - academic_year_id - day_id - period_id - subject_id - teacher_id - room_id security: [] '/api/timetable/{timetable_id}': get: summary: '' operationId: getApiTimetableTimetable_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] put: summary: '' operationId: putApiTimetableTimetable_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: class_id: type: integer description: 'The class_id of an existing record in the classes table.' example: 16 section_id: type: integer description: 'The section_id of an existing record in the sections table.' example: 16 academic_year_id: type: integer description: 'The academic_year_id of an existing record in the academic_years table.' example: 16 day_id: type: integer description: 'The day_id of an existing record in the days table.' example: 16 period_id: type: integer description: 'The period_id of an existing record in the periods table.' example: 16 subject_id: type: integer description: 'The subject_id of an existing record in the subjects table.' example: 16 teacher_id: type: integer description: 'The staff_id of an existing record in the staff table.' example: 16 room_id: type: integer description: 'The room_id of an existing record in the rooms table.' example: 16 required: - class_id - section_id - academic_year_id - day_id - period_id - subject_id - teacher_id - room_id security: [] delete: summary: '' operationId: deleteApiTimetableTimetable_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' security: [] parameters: - in: path name: timetable_id description: 'The ID of the timetable.' example: 1 required: true schema: type: integer /api/substituteAssignment: get: summary: '' operationId: getApiSubstituteAssignment description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] post: summary: '' operationId: postApiSubstituteAssignment description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: timetable_id: type: integer description: 'The timetable_id of an existing record in the timetables table.' example: 16 original_teacher_id: type: integer description: 'The staff_id of an existing record in the staff table.' example: 16 substitute_teacher_id: type: integer description: 'The value and original_teacher_id must be different. The staff_id of an existing record in the staff table.' example: 16 date_of_substitution: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' required: - timetable_id - original_teacher_id - substitute_teacher_id - date_of_substitution security: [] '/api/substituteAssignment/{substitute_id}': get: summary: '' operationId: getApiSubstituteAssignmentSubstitute_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] put: summary: '' operationId: putApiSubstituteAssignmentSubstitute_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: timetable_id: type: integer description: 'The timetable_id of an existing record in the timetables table.' example: 16 original_teacher_id: type: integer description: 'The staff_id of an existing record in the staff table.' example: 16 substitute_teacher_id: type: integer description: 'The value and original_teacher_id must be different. The staff_id of an existing record in the staff table.' example: 16 date_of_substitution: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' required: - timetable_id - original_teacher_id - substitute_teacher_id - date_of_substitution security: [] delete: summary: '' operationId: deleteApiSubstituteAssignmentSubstitute_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' security: [] parameters: - in: path name: substitute_id description: 'The ID of the substitute.' example: 1 required: true schema: type: integer /api/specialEvent: get: summary: '' operationId: getApiSpecialEvent description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] post: summary: '' operationId: postApiSpecialEvent description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: event_name: type: string description: 'Must not be greater than 100 characters.' example: b event_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' end_time: type: string description: 'Must be a valid date in the format H:i. Must be a date after start_time.' example: '2052-05-26' description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true room_id: type: integer description: 'The room_id of an existing record in the rooms table.' example: 16 nullable: true required: - event_name - event_date - start_time - end_time security: [] '/api/specialEvent/{event_id}': get: summary: '' operationId: getApiSpecialEventEvent_id description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Timetable Management' security: [] put: summary: '' operationId: putApiSpecialEventEvent_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' requestBody: required: true content: application/json: schema: type: object properties: event_name: type: string description: 'Must not be greater than 100 characters.' example: b event_date: type: string description: 'Must be a valid date.' example: '2026-05-03T17:54:47' start_time: type: string description: 'Must be a valid date in the format H:i.' example: '17:54' end_time: type: string description: 'Must be a valid date in the format H:i. Must be a date after start_time.' example: '2052-05-26' description: type: string description: '' example: 'Eius et animi quos velit et.' nullable: true room_id: type: integer description: 'The room_id of an existing record in the rooms table.' example: 16 nullable: true required: - event_name - event_date - start_time - end_time security: [] delete: summary: '' operationId: deleteApiSpecialEventEvent_id description: '' parameters: [] responses: { } tags: - 'Timetable Management' security: [] parameters: - in: path name: event_id description: 'The ID of the event.' example: 1 required: true schema: type: integer