diff --git a/reading-platform-frontend/.gitignore b/reading-platform-frontend/.gitignore index d1abaa7..944a4e7 100644 --- a/reading-platform-frontend/.gitignore +++ b/reading-platform-frontend/.gitignore @@ -2,4 +2,5 @@ node_modules/ dist/ .env.local -# orval 生成的文件已提交到 git,无需忽略 +# api-spec.json 是 api:fetch 的中间产物,转成 yml 后删除 +api-spec.json diff --git a/reading-platform-frontend/api-spec.json b/reading-platform-frontend/api-spec.json deleted file mode 100644 index de3524f..0000000 --- a/reading-platform-frontend/api-spec.json +++ /dev/null @@ -1 +0,0 @@ -{"openapi":"3.0.1","info":{"title":"Reading Platform API","description":"Reading Platform Backend Service API Documentation","contact":{"name":"Reading Platform Team","email":"support@reading-platform.com"},"version":"1.0.0"},"servers":[{"url":"http://localhost:3002","description":"Generated server url"}],"security":[{"Bearer":[]}],"tags":[{"name":"School - Course Packages","description":"Course Packages for School"},{"name":"Admin - Operation Logs","description":"Operation Log Management for Admin"},{"name":"School - School Courses","description":"School Custom Course Management"},{"name":"School - Task","description":"Task Management APIs for School"},{"name":"Admin - Settings","description":"Admin System Settings Management"},{"name":"Parent - Task","description":"Task APIs for Parent"},{"name":"Auth","description":"Authentication APIs"},{"name":"Admin - Tenant","description":"Tenant Management APIs for Admin"},{"name":"Teacher - Schedule","description":"Teacher Schedule View"},{"name":"Admin - Stats","description":"Admin Statistics Dashboard"},{"name":"Admin - Resources","description":"Resource Library Management for Admin"},{"name":"Admin - Course","description":"System Course Management APIs for Admin"},{"name":"Teacher - School Courses","description":"School Courses for Teacher"},{"name":"School - Operation Logs","description":"Operation Log for School"},{"name":"School - Stats","description":"School Statistics Dashboard"},{"name":"School - Schedule","description":"School Schedule Management"},{"name":"School - Parent","description":"Parent Management APIs for School"},{"name":"Parent - Child","description":"Child Information APIs for Parent"},{"name":"Teacher - Task","description":"Task APIs for Teacher"},{"name":"School - Export","description":"School Data Export"},{"name":"Teacher - Notification","description":"Notification APIs for Teacher"},{"name":"School - Student","description":"Student Management APIs for School"},{"name":"School - Class","description":"Class Management APIs for School"},{"name":"Parent - Growth Record","description":"Growth Record APIs for Parent"},{"name":"Teacher - Course","description":"Course APIs for Teacher"},{"name":"Admin - Themes","description":"Theme Management for Admin"},{"name":"Admin - Course Lessons","description":"Course Lesson Management for Admin"},{"name":"School - Settings","description":"School Settings Management"},{"name":"Teacher - Course Lessons","description":"Course Lessons for Teacher"},{"name":"Teacher - Dashboard","description":"Teacher Dashboard"},{"name":"Admin - Course Packages","description":"Course Package Management for Admin"},{"name":"School - Teacher","description":"Teacher Management APIs for School"},{"name":"File Upload","description":"File Upload APIs"},{"name":"Teacher - Growth Record","description":"Growth Record APIs for Teacher"},{"name":"Teacher - Lesson","description":"Lesson APIs for Teacher"},{"name":"School - Growth Record","description":"Growth Record Management APIs for School"},{"name":"Parent - Notification","description":"Notification APIs for Parent"}],"paths":{"/api/v1/teacher/tasks/{id}":{"get":{"tags":["Teacher - Task"],"summary":"Get task by ID","operationId":"getTask","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}},"put":{"tags":["Teacher - Task"],"summary":"Update task","operationId":"updateTask","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}},"delete":{"tags":["Teacher - Task"],"summary":"Delete task","operationId":"deleteTask","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/lessons/{id}":{"get":{"tags":["Teacher - Lesson"],"summary":"Get lesson by ID","operationId":"getLesson","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultLesson"}}}}}},"put":{"tags":["Teacher - Lesson"],"summary":"Update lesson","operationId":"updateLesson","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultLesson"}}}}}}},"/api/v1/teacher/growth-records/{id}":{"get":{"tags":["Teacher - Growth Record"],"summary":"Get growth record by ID","operationId":"getGrowthRecord","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}},"put":{"tags":["Teacher - Growth Record"],"summary":"Update growth record","operationId":"updateGrowthRecord","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthRecordUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}},"delete":{"tags":["Teacher - Growth Record"],"summary":"Delete growth record","operationId":"deleteGrowthRecord","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/teachers/{id}":{"get":{"tags":["School - Teacher"],"summary":"Get teacher by ID","operationId":"getTeacher","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTeacher"}}}}}},"put":{"tags":["School - Teacher"],"summary":"Update teacher","operationId":"updateTeacher","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeacherUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTeacher"}}}}}},"delete":{"tags":["School - Teacher"],"summary":"Delete teacher","operationId":"deleteTeacher","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/tasks/{id}":{"get":{"tags":["School - Task"],"summary":"Get task by ID","operationId":"getTask_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}},"put":{"tags":["School - Task"],"summary":"Update task","operationId":"updateTask_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}},"delete":{"tags":["School - Task"],"summary":"Delete task","operationId":"deleteTask_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/students/{id}":{"get":{"tags":["School - Student"],"summary":"Get student by ID","operationId":"getStudent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultStudent"}}}}}},"put":{"tags":["School - Student"],"summary":"Update student","operationId":"updateStudent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultStudent"}}}}}},"delete":{"tags":["School - Student"],"summary":"Delete student","operationId":"deleteStudent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/settings":{"get":{"tags":["School - Settings"],"summary":"Get school settings","operationId":"getSettings","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringString"}}}}}},"put":{"tags":["School - Settings"],"summary":"Update school settings","operationId":"updateSettings","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/school-courses/{id}":{"get":{"tags":["School - School Courses"],"summary":"Get school course by ID","operationId":"getCourse_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchoolCourse"}}}}}},"put":{"tags":["School - School Courses"],"summary":"Update school course","operationId":"updateCourse","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchoolCourse"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchoolCourse"}}}}}},"delete":{"tags":["School - School Courses"],"summary":"Delete school course","operationId":"deleteCourse","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/schedules/{id}":{"get":{"tags":["School - Schedule"],"summary":"Get schedule plan by ID","operationId":"getSchedulePlan_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchedulePlan"}}}}}},"put":{"tags":["School - Schedule"],"summary":"Update schedule plan","operationId":"updateSchedulePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulePlan"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchedulePlan"}}}}}},"delete":{"tags":["School - Schedule"],"summary":"Delete schedule plan","operationId":"deleteSchedulePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/parents/{id}":{"get":{"tags":["School - Parent"],"summary":"Get parent by ID","operationId":"getParent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultParent"}}}}}},"put":{"tags":["School - Parent"],"summary":"Update parent","operationId":"updateParent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParentUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultParent"}}}}}},"delete":{"tags":["School - Parent"],"summary":"Delete parent","operationId":"deleteParent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/growth-records/{id}":{"get":{"tags":["School - Growth Record"],"summary":"Get growth record by ID","operationId":"getGrowthRecord_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}},"put":{"tags":["School - Growth Record"],"summary":"Update growth record","operationId":"updateGrowthRecord_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthRecordUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}},"delete":{"tags":["School - Growth Record"],"summary":"Delete growth record","operationId":"deleteGrowthRecord_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/classes/{id}":{"get":{"tags":["School - Class"],"summary":"Get class by ID","operationId":"getClass","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultClazz"}}}}}},"put":{"tags":["School - Class"],"summary":"Update class","operationId":"updateClass","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultClazz"}}}}}},"delete":{"tags":["School - Class"],"summary":"Delete class","operationId":"deleteClass","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/parent/growth-records/{id}":{"get":{"tags":["Parent - Growth Record"],"summary":"Get growth record by ID","operationId":"getGrowthRecord_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}},"put":{"tags":["Parent - Growth Record"],"summary":"Update growth record","operationId":"updateGrowthRecord_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthRecordUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}},"delete":{"tags":["Parent - Growth Record"],"summary":"Delete growth record","operationId":"deleteGrowthRecord_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/themes/{id}":{"get":{"tags":["Admin - Themes"],"summary":"Get theme by ID","operationId":"getTheme","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTheme"}}}}}},"put":{"tags":["Admin - Themes"],"summary":"Update theme","operationId":"updateTheme","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Theme"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTheme"}}}}}},"delete":{"tags":["Admin - Themes"],"summary":"Delete theme","operationId":"deleteTheme","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/tenants/{id}":{"get":{"tags":["Admin - Tenant"],"summary":"Get tenant by ID","operationId":"getTenant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTenant"}}}}}},"put":{"tags":["Admin - Tenant"],"summary":"Update tenant","operationId":"updateTenant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTenant"}}}}}},"delete":{"tags":["Admin - Tenant"],"summary":"Delete tenant","operationId":"deleteTenant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/tenants/{id}/status":{"put":{"tags":["Admin - Tenant"],"summary":"Update tenant status","operationId":"updateTenantStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringObject"}}}}}}},"/api/v1/admin/tenants/{id}/quota":{"put":{"tags":["Admin - Tenant"],"summary":"Update tenant quota","operationId":"updateTenantQuota","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTenant"}}}}}}},"/api/v1/admin/settings":{"get":{"tags":["Admin - Settings"],"summary":"Get admin system settings","operationId":"getSettings_1","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringString"}}}}}},"put":{"tags":["Admin - Settings"],"summary":"Update admin system settings","operationId":"updateSettings_1","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/resources/libraries/{id}":{"put":{"tags":["Admin - Resources"],"summary":"Update resource library","operationId":"updateLibrary","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceLibrary"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultResourceLibrary"}}}}}},"delete":{"tags":["Admin - Resources"],"summary":"Delete resource library","operationId":"deleteLibrary","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/resources/items/{id}":{"put":{"tags":["Admin - Resources"],"summary":"Update resource item","operationId":"updateItem","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceItem"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultResourceItem"}}}}}},"delete":{"tags":["Admin - Resources"],"summary":"Delete resource item","operationId":"deleteItem","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/courses/{id}":{"get":{"tags":["Admin - Course"],"summary":"Get course by ID","operationId":"getCourse_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourse"}}}}}},"put":{"tags":["Admin - Course"],"summary":"Update course","operationId":"updateCourse_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseUpdateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourse"}}}}}},"delete":{"tags":["Admin - Course"],"summary":"Delete course","operationId":"deleteCourse_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/courses/{courseId}/lessons/{id}":{"get":{"tags":["Admin - Course Lessons"],"summary":"Get lesson by ID","operationId":"getLesson_2","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourseLesson"}}}}}},"put":{"tags":["Admin - Course Lessons"],"summary":"Update course lesson","operationId":"updateLesson_1","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseLesson"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourseLesson"}}}}}},"delete":{"tags":["Admin - Course Lessons"],"summary":"Delete course lesson","operationId":"deleteLesson","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/course-packages/{id}":{"get":{"tags":["Admin - Course Packages"],"summary":"Get course package by ID","operationId":"getPackage_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCoursePackage"}}}}}},"put":{"tags":["Admin - Course Packages"],"summary":"Update course package","operationId":"updatePackage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoursePackage"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCoursePackage"}}}}}},"delete":{"tags":["Admin - Course Packages"],"summary":"Delete course package","operationId":"deletePackage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/tasks":{"get":{"tags":["Teacher - Task"],"summary":"Get task page","operationId":"getTaskPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultTask"}}}}}},"post":{"tags":["Teacher - Task"],"summary":"Create task","operationId":"createTask","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}}},"/api/v1/teacher/notifications/{id}/read":{"post":{"tags":["Teacher - Notification"],"summary":"Mark notification as read","operationId":"markAsRead","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/notifications/read-all":{"post":{"tags":["Teacher - Notification"],"summary":"Mark all notifications as read","operationId":"markAllAsRead","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/lessons":{"get":{"tags":["Teacher - Lesson"],"summary":"Get my lessons","operationId":"getMyLessons","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"startDate","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"endDate","in":"query","required":false,"schema":{"type":"string","format":"date"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultLesson"}}}}}},"post":{"tags":["Teacher - Lesson"],"summary":"Create lesson","operationId":"createLesson","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LessonCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultLesson"}}}}}}},"/api/v1/teacher/lessons/{id}/start":{"post":{"tags":["Teacher - Lesson"],"summary":"Start lesson","operationId":"startLesson","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/lessons/{id}/complete":{"post":{"tags":["Teacher - Lesson"],"summary":"Complete lesson","operationId":"completeLesson","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/lessons/{id}/cancel":{"post":{"tags":["Teacher - Lesson"],"summary":"Cancel lesson","operationId":"cancelLesson","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/teacher/growth-records":{"get":{"tags":["Teacher - Growth Record"],"summary":"Get growth record page","operationId":"getGrowthRecordPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"studentId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultGrowthRecord"}}}}}},"post":{"tags":["Teacher - Growth Record"],"summary":"Create growth record","operationId":"createGrowthRecord","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthRecordCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}}},"/api/v1/school/teachers":{"get":{"tags":["School - Teacher"],"summary":"Get teacher page","operationId":"getTeacherPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultTeacher"}}}}}},"post":{"tags":["School - Teacher"],"summary":"Create teacher","operationId":"createTeacher","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeacherCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTeacher"}}}}}}},"/api/v1/school/teachers/{id}/reset-password":{"post":{"tags":["School - Teacher"],"summary":"Reset teacher password","operationId":"resetPassword","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"newPassword","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/tasks":{"get":{"tags":["School - Task"],"summary":"Get task page","operationId":"getTaskPage_1","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultTask"}}}}}},"post":{"tags":["School - Task"],"summary":"Create task","operationId":"createTask_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}}},"/api/v1/school/students":{"get":{"tags":["School - Student"],"summary":"Get student page","operationId":"getStudentPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"grade","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultStudent"}}}}}},"post":{"tags":["School - Student"],"summary":"Create student","operationId":"createStudent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultStudent"}}}}}}},"/api/v1/school/school-courses":{"get":{"tags":["School - School Courses"],"summary":"Get school courses","operationId":"getCourses_1","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultSchoolCourse"}}}}}},"post":{"tags":["School - School Courses"],"summary":"Create school course","operationId":"createCourse","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchoolCourse"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchoolCourse"}}}}}}},"/api/v1/school/schedules":{"get":{"tags":["School - Schedule"],"summary":"Get schedule plans","operationId":"getSchedulePlans_1","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"classId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultSchedulePlan"}}}}}},"post":{"tags":["School - Schedule"],"summary":"Create schedule plan","operationId":"createSchedulePlan","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulePlan"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchedulePlan"}}}}}}},"/api/v1/school/schedules/templates":{"get":{"tags":["School - Schedule"],"summary":"Get schedule templates","operationId":"getScheduleTemplates","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultScheduleTemplate"}}}}}},"post":{"tags":["School - Schedule"],"summary":"Create schedule template","operationId":"createScheduleTemplate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleTemplate"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultScheduleTemplate"}}}}}}},"/api/v1/school/parents":{"get":{"tags":["School - Parent"],"summary":"Get parent page","operationId":"getParentPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultParent"}}}}}},"post":{"tags":["School - Parent"],"summary":"Create parent","operationId":"createParent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParentCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultParent"}}}}}}},"/api/v1/school/parents/{parentId}/students/{studentId}":{"post":{"tags":["School - Parent"],"summary":"Bind student to parent","operationId":"bindStudent","parameters":[{"name":"parentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"studentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"relationship","in":"query","required":false,"schema":{"type":"string"}},{"name":"isPrimary","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}},"delete":{"tags":["School - Parent"],"summary":"Unbind student from parent","operationId":"unbindStudent","parameters":[{"name":"parentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"studentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/parents/{id}/reset-password":{"post":{"tags":["School - Parent"],"summary":"Reset parent password","operationId":"resetPassword_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"newPassword","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/growth-records":{"get":{"tags":["School - Growth Record"],"summary":"Get growth record page","operationId":"getGrowthRecordPage_1","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"studentId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultGrowthRecord"}}}}}},"post":{"tags":["School - Growth Record"],"summary":"Create growth record","operationId":"createGrowthRecord_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthRecordCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}}},"/api/v1/school/classes":{"get":{"tags":["School - Class"],"summary":"Get class page","operationId":"getClassPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"grade","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultClazz"}}}}}},"post":{"tags":["School - Class"],"summary":"Create class","operationId":"createClass","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultClazz"}}}}}}},"/api/v1/school/classes/{id}/teachers":{"post":{"tags":["School - Class"],"summary":"Assign teachers to class","operationId":"assignTeachers","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/school/classes/{id}/students":{"post":{"tags":["School - Class"],"summary":"Assign students to class","operationId":"assignStudents","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/parent/tasks/{taskId}/complete":{"post":{"tags":["Parent - Task"],"summary":"Complete task","operationId":"completeTask","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"studentId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"content","in":"query","required":false,"schema":{"type":"string"}},{"name":"attachments","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/parent/notifications/{id}/read":{"post":{"tags":["Parent - Notification"],"summary":"Mark notification as read","operationId":"markAsRead_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/parent/notifications/read-all":{"post":{"tags":["Parent - Notification"],"summary":"Mark all notifications as read","operationId":"markAllAsRead_1","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/parent/growth-records":{"post":{"tags":["Parent - Growth Record"],"summary":"Create growth record","operationId":"createGrowthRecord_2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthRecordCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultGrowthRecord"}}}}}}},"/api/v1/files/upload":{"post":{"tags":["File Upload"],"summary":"Upload file","operationId":"uploadFile","requestBody":{"content":{"application/json":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringString"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["Auth"],"summary":"User logout","operationId":"logout","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["Auth"],"summary":"User login","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultLoginResponse"}}}}}}},"/api/v1/auth/change-password":{"post":{"tags":["Auth"],"summary":"Change password","operationId":"changePassword","parameters":[{"name":"oldPassword","in":"query","required":true,"schema":{"type":"string"}},{"name":"newPassword","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/themes":{"get":{"tags":["Admin - Themes"],"summary":"Get all themes","operationId":"getThemes","parameters":[{"name":"enabledOnly","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListTheme"}}}}}},"post":{"tags":["Admin - Themes"],"summary":"Create theme","operationId":"createTheme","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Theme"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTheme"}}}}}}},"/api/v1/admin/tenants":{"get":{"tags":["Admin - Tenant"],"summary":"Get tenant page","operationId":"getTenantPage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"packageType","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultTenant"}}}}}},"post":{"tags":["Admin - Tenant"],"summary":"Create tenant","operationId":"createTenant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTenant"}}}}}}},"/api/v1/admin/tenants/{id}/reset-password":{"post":{"tags":["Admin - Tenant"],"summary":"Reset tenant school account password","operationId":"resetTenantPassword","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringString"}}}}}}},"/api/v1/admin/resources/libraries":{"get":{"tags":["Admin - Resources"],"summary":"Get all resource libraries","operationId":"getLibraries","parameters":[{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListResourceLibrary"}}}}}},"post":{"tags":["Admin - Resources"],"summary":"Create resource library","operationId":"createLibrary","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceLibrary"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultResourceLibrary"}}}}}}},"/api/v1/admin/resources/items":{"get":{"tags":["Admin - Resources"],"summary":"Get resource items","operationId":"getItems","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"libraryId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultResourceItem"}}}}}},"post":{"tags":["Admin - Resources"],"summary":"Create resource item","operationId":"createItem","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceItem"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultResourceItem"}}}}}}},"/api/v1/admin/courses":{"get":{"tags":["Admin - Course"],"summary":"Get system course page","operationId":"getCoursePage_1","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultCourse"}}}}}},"post":{"tags":["Admin - Course"],"summary":"Create system course","operationId":"createCourse_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseCreateRequest"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourse"}}}}}}},"/api/v1/admin/courses/{id}/publish":{"post":{"tags":["Admin - Course"],"summary":"Publish course","operationId":"publishCourse","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/courses/{id}/archive":{"post":{"tags":["Admin - Course"],"summary":"Archive course","operationId":"archiveCourse","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/admin/courses/{courseId}/lessons":{"get":{"tags":["Admin - Course Lessons"],"summary":"Get lessons for a course","operationId":"getLessons_1","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListCourseLesson"}}}}}},"post":{"tags":["Admin - Course Lessons"],"summary":"Create course lesson","operationId":"createLesson_1","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CourseLesson"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourseLesson"}}}}}}},"/api/v1/admin/course-packages":{"get":{"tags":["Admin - Course Packages"],"summary":"Get course packages","operationId":"getPackages_1","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultCoursePackage"}}}}}},"post":{"tags":["Admin - Course Packages"],"summary":"Create course package","operationId":"createPackage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoursePackage"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCoursePackage"}}}}}}},"/api/v1/teacher/school-courses":{"get":{"tags":["Teacher - School Courses"],"summary":"Get school courses","operationId":"getCourses","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultSchoolCourse"}}}}}}},"/api/v1/teacher/school-courses/{id}":{"get":{"tags":["Teacher - School Courses"],"summary":"Get school course by ID","operationId":"getCourse","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchoolCourse"}}}}}}},"/api/v1/teacher/schedules":{"get":{"tags":["Teacher - Schedule"],"summary":"Get teacher schedule plans","operationId":"getSchedulePlans","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultSchedulePlan"}}}}}}},"/api/v1/teacher/schedules/{id}":{"get":{"tags":["Teacher - Schedule"],"summary":"Get schedule plan by ID","operationId":"getSchedulePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultSchedulePlan"}}}}}}},"/api/v1/teacher/notifications":{"get":{"tags":["Teacher - Notification"],"summary":"Get my notifications","operationId":"getMyNotifications","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"isRead","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultNotification"}}}}}}},"/api/v1/teacher/notifications/{id}":{"get":{"tags":["Teacher - Notification"],"summary":"Get notification by ID","operationId":"getNotification","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultNotification"}}}}}}},"/api/v1/teacher/notifications/unread-count":{"get":{"tags":["Teacher - Notification"],"summary":"Get unread count","operationId":"getUnreadCount","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultLong"}}}}}}},"/api/v1/teacher/lessons/today":{"get":{"tags":["Teacher - Lesson"],"summary":"Get today's lessons","operationId":"getTodayLessons","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListLesson"}}}}}}},"/api/v1/teacher/dashboard":{"get":{"tags":["Teacher - Dashboard"],"summary":"Get teacher dashboard overview","operationId":"getDashboard","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringObject"}}}}}}},"/api/v1/teacher/dashboard/weekly":{"get":{"tags":["Teacher - Dashboard"],"summary":"Get weekly lessons","operationId":"getWeeklyLessons","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListMapStringObject"}}}}}}},"/api/v1/teacher/dashboard/today":{"get":{"tags":["Teacher - Dashboard"],"summary":"Get today's lessons","operationId":"getTodayLessons_1","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListMapStringObject"}}}}}}},"/api/v1/teacher/courses":{"get":{"tags":["Teacher - Course"],"summary":"Get course page","operationId":"getCoursePage","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultCourse"}}}}}}},"/api/v1/teacher/courses/{id}":{"get":{"tags":["Teacher - Course"],"summary":"Get course by ID","operationId":"getCourse_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourse"}}}}}}},"/api/v1/teacher/courses/{courseId}/lessons":{"get":{"tags":["Teacher - Course Lessons"],"summary":"Get lessons for a course","operationId":"getLessons","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListCourseLesson"}}}}}}},"/api/v1/teacher/courses/{courseId}/lessons/{id}":{"get":{"tags":["Teacher - Course Lessons"],"summary":"Get lesson by ID","operationId":"getLesson_1","parameters":[{"name":"courseId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCourseLesson"}}}}}}},"/api/v1/teacher/courses/all":{"get":{"tags":["Teacher - Course"],"summary":"Get all courses","operationId":"getAllCourses","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListCourse"}}}}}}},"/api/v1/school/stats":{"get":{"tags":["School - Stats"],"summary":"Get school statistics","operationId":"getStats","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringObject"}}}}}}},"/api/v1/school/operation-logs":{"get":{"tags":["School - Operation Logs"],"summary":"Get school operation logs","operationId":"getLogs","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"module","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultOperationLog"}}}}}}},"/api/v1/school/export/teachers":{"get":{"tags":["School - Export"],"summary":"Export teachers to Excel","operationId":"exportTeachers","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","format":"byte"}}}}}}}},"/api/v1/school/export/students":{"get":{"tags":["School - Export"],"summary":"Export students to Excel","operationId":"exportStudents","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","format":"byte"}}}}}}}},"/api/v1/school/export/lessons":{"get":{"tags":["School - Export"],"summary":"Export lessons to Excel","operationId":"exportLessons","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","format":"byte"}}}}}}}},"/api/v1/school/export/growth-records":{"get":{"tags":["School - Export"],"summary":"Export growth records to Excel","operationId":"exportGrowthRecords","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string","format":"byte"}}}}}}}},"/api/v1/school/course-packages":{"get":{"tags":["School - Course Packages"],"summary":"Get available course packages","operationId":"getPackages","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"keyword","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultCoursePackage"}}}}}}},"/api/v1/school/course-packages/{id}":{"get":{"tags":["School - Course Packages"],"summary":"Get course package by ID","operationId":"getPackage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultCoursePackage"}}}}}}},"/api/v1/parent/tasks/{id}":{"get":{"tags":["Parent - Task"],"summary":"Get task by ID","operationId":"getTask_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultTask"}}}}}}},"/api/v1/parent/tasks/student/{studentId}":{"get":{"tags":["Parent - Task"],"summary":"Get tasks by student ID","operationId":"getTasksByStudent","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultTask"}}}}}}},"/api/v1/parent/notifications":{"get":{"tags":["Parent - Notification"],"summary":"Get my notifications","operationId":"getMyNotifications_1","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"isRead","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultNotification"}}}}}}},"/api/v1/parent/notifications/{id}":{"get":{"tags":["Parent - Notification"],"summary":"Get notification by ID","operationId":"getNotification_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultNotification"}}}}}}},"/api/v1/parent/notifications/unread-count":{"get":{"tags":["Parent - Notification"],"summary":"Get unread count","operationId":"getUnreadCount_1","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultLong"}}}}}}},"/api/v1/parent/growth-records/student/{studentId}":{"get":{"tags":["Parent - Growth Record"],"summary":"Get growth records by student ID","operationId":"getGrowthRecordsByStudent","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultGrowthRecord"}}}}}}},"/api/v1/parent/growth-records/student/{studentId}/recent":{"get":{"tags":["Parent - Growth Record"],"summary":"Get recent growth records","operationId":"getRecentGrowthRecords","parameters":[{"name":"studentId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListGrowthRecord"}}}}}}},"/api/v1/parent/children":{"get":{"tags":["Parent - Child"],"summary":"Get my children","operationId":"getMyChildren","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListStudent"}}}}}}},"/api/v1/parent/children/{id}":{"get":{"tags":["Parent - Child"],"summary":"Get child by ID","operationId":"getChild","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultStudent"}}}}}}},"/api/v1/auth/me":{"get":{"tags":["Auth"],"summary":"Get current user info","operationId":"getCurrentUser","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultUserInfoResponse"}}}}}}},"/api/v1/admin/tenants/active":{"get":{"tags":["Admin - Tenant"],"summary":"Get all active tenants","operationId":"getAllActiveTenants","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListTenantResponse"}}}}}}},"/api/v1/admin/stats":{"get":{"tags":["Admin - Stats"],"summary":"Get overall statistics","operationId":"getStats_1","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultMapStringObject"}}}}}}},"/api/v1/admin/stats/trend":{"get":{"tags":["Admin - Stats"],"summary":"Get trend data (last 6 months)","operationId":"getTrendData","responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListMapStringObject"}}}}}}},"/api/v1/admin/stats/tenants/active":{"get":{"tags":["Admin - Stats"],"summary":"Get active tenants","operationId":"getActiveTenants","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListMapStringObject"}}}}}}},"/api/v1/admin/stats/courses/popular":{"get":{"tags":["Admin - Stats"],"summary":"Get popular courses","operationId":"getPopularCourses","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListMapStringObject"}}}}}}},"/api/v1/admin/stats/activities":{"get":{"tags":["Admin - Stats"],"summary":"Get recent activities","operationId":"getActivities","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultListMapStringObject"}}}}}}},"/api/v1/admin/operation-logs":{"get":{"tags":["Admin - Operation Logs"],"summary":"Get operation logs","operationId":"getLogs_1","parameters":[{"name":"pageNum","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"module","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultPageResultOperationLog"}}}}}}},"/api/v1/school/schedules/templates/{id}":{"delete":{"tags":["School - Schedule"],"summary":"Delete schedule template","operationId":"deleteScheduleTemplate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}},"/api/v1/files/delete":{"delete":{"tags":["File Upload"],"summary":"Delete file","operationId":"deleteFile","parameters":[{"name":"filePath","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"404":{"description":"Not Found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"405":{"description":"Method Not Allowed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ResultVoid"}}}}}}}},"components":{"schemas":{"ResultVoid":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"object"}}},"TaskUpdateRequest":{"type":"object","properties":{"title":{"type":"string","description":"Task title"},"description":{"type":"string","description":"Description"},"type":{"type":"string","description":"Task type"},"startDate":{"type":"string","description":"Start date","format":"date"},"dueDate":{"type":"string","description":"Due date","format":"date"},"status":{"type":"string","description":"Status"},"attachments":{"type":"string","description":"Attachments (JSON array)"}},"description":"Task Update Request"},"ResultTask":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Task"}}},"Task":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"title":{"type":"string"},"description":{"type":"string"},"type":{"type":"string"},"courseId":{"type":"integer","format":"int64"},"creatorId":{"type":"integer","format":"int64"},"creatorRole":{"type":"string"},"startDate":{"type":"string","format":"date"},"dueDate":{"type":"string","format":"date"},"status":{"type":"string"},"attachments":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"LessonUpdateRequest":{"type":"object","properties":{"title":{"type":"string","description":"Lesson title"},"lessonDate":{"type":"string","description":"Lesson date","format":"date"},"startTime":{"$ref":"#/components/schemas/LocalTime"},"endTime":{"$ref":"#/components/schemas/LocalTime"},"location":{"type":"string","description":"Location"},"status":{"type":"string","description":"Status"},"notes":{"type":"string","description":"Notes"}},"description":"Lesson Update Request"},"LocalTime":{"type":"object","properties":{"hour":{"type":"integer","format":"int32"},"minute":{"type":"integer","format":"int32"},"second":{"type":"integer","format":"int32"},"nano":{"type":"integer","format":"int32"}},"description":"End time"},"Lesson":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"courseId":{"type":"integer","format":"int64"},"classId":{"type":"integer","format":"int64"},"teacherId":{"type":"integer","format":"int64"},"title":{"type":"string"},"lessonDate":{"type":"string","format":"date"},"startTime":{"$ref":"#/components/schemas/LocalTime"},"endTime":{"$ref":"#/components/schemas/LocalTime"},"location":{"type":"string"},"status":{"type":"string"},"notes":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultLesson":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Lesson"}}},"GrowthRecordUpdateRequest":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"},"images":{"type":"string","description":"Images (JSON array)"},"recordDate":{"type":"string","description":"Record date","format":"date"},"tags":{"type":"array","description":"Tags","items":{"type":"string","description":"Tags"}}},"description":"Growth Record Update Request"},"GrowthRecord":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"studentId":{"type":"integer","format":"int64"},"type":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"images":{"type":"string"},"recordedBy":{"type":"integer","format":"int64"},"recorderRole":{"type":"string"},"recordDate":{"type":"string","format":"date"},"tags":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultGrowthRecord":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/GrowthRecord"}}},"TeacherUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"phone":{"type":"string","description":"Phone"},"email":{"type":"string","description":"Email"},"avatarUrl":{"type":"string","description":"Avatar URL"},"gender":{"type":"string","description":"Gender"},"bio":{"type":"string","description":"Bio"},"status":{"type":"string","description":"Status"}},"description":"Teacher Update Request"},"ResultTeacher":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Teacher"}}},"Teacher":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"username":{"type":"string"},"password":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"gender":{"type":"string"},"bio":{"type":"string"},"status":{"type":"string"},"lastLoginAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"StudentUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"gender":{"type":"string","description":"Gender"},"birthDate":{"type":"string","description":"Birth date","format":"date"},"avatarUrl":{"type":"string","description":"Avatar URL"},"grade":{"type":"string","description":"Grade"},"studentNo":{"type":"string","description":"Student number"},"readingLevel":{"type":"string","description":"Reading level"},"interests":{"type":"string","description":"Interests"},"notes":{"type":"string","description":"Notes"},"status":{"type":"string","description":"Status"}},"description":"Student Update Request"},"ResultStudent":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Student"}}},"Student":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"gender":{"type":"string"},"birthDate":{"type":"string","format":"date"},"avatarUrl":{"type":"string"},"grade":{"type":"string"},"studentNo":{"type":"string"},"readingLevel":{"type":"string"},"interests":{"type":"string"},"notes":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"SchoolCourse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"coverUrl":{"type":"string"},"category":{"type":"string"},"ageRange":{"type":"string"},"status":{"type":"string"},"createdBy":{"type":"integer","format":"int64"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultSchoolCourse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/SchoolCourse"}}},"SchedulePlan":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"classId":{"type":"integer","format":"int64"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultSchedulePlan":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/SchedulePlan"}}},"ParentUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"phone":{"type":"string","description":"Phone"},"email":{"type":"string","description":"Email"},"avatarUrl":{"type":"string","description":"Avatar URL"},"gender":{"type":"string","description":"Gender"},"status":{"type":"string","description":"Status"}},"description":"Parent Update Request"},"Parent":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"username":{"type":"string"},"password":{"type":"string"},"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"gender":{"type":"string"},"status":{"type":"string"},"lastLoginAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultParent":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Parent"}}},"ClassUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"Class name"},"grade":{"type":"string","description":"Grade"},"description":{"type":"string","description":"Description"},"capacity":{"type":"integer","description":"Capacity","format":"int32"},"status":{"type":"string","description":"Status"}},"description":"Class Update Request"},"Clazz":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"grade":{"type":"string"},"description":{"type":"string"},"capacity":{"type":"integer","format":"int32"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultClazz":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Clazz"}}},"Theme":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"displayName":{"type":"string"},"color":{"type":"string"},"icon":{"type":"string"},"sortOrder":{"type":"integer","format":"int32"},"isEnabled":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultTheme":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Theme"}}},"TenantUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"Tenant name"},"contactName":{"type":"string","description":"Contact person"},"contactPhone":{"type":"string","description":"Contact phone"},"contactEmail":{"type":"string","description":"Contact email"},"address":{"type":"string","description":"Address"},"logoUrl":{"type":"string","description":"Logo URL"},"status":{"type":"string","description":"Status"},"expireAt":{"type":"string","description":"Expiration date","format":"date-time"},"maxStudents":{"type":"integer","description":"Max students","format":"int32"},"maxTeachers":{"type":"integer","description":"Max teachers","format":"int32"},"packageType":{"type":"string","description":"Package type (optional)"},"startDate":{"type":"string","description":"Start date (optional)"}},"description":"Tenant Update Request"},"ResultTenant":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Tenant"}}},"Tenant":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"contactPhone":{"type":"string"},"contactEmail":{"type":"string"},"address":{"type":"string"},"logoUrl":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"},"tempPassword":{"type":"string"},"loginAccount":{"type":"string"},"contactPerson":{"type":"string"},"expireDate":{"type":"string","format":"date-time"},"studentQuota":{"type":"integer","format":"int32"},"teacherQuota":{"type":"integer","format":"int32"}}},"ResultMapStringObject":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"object"}}}},"ResourceLibrary":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultResourceLibrary":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/ResourceLibrary"}}},"ResourceItem":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"libraryId":{"type":"integer","format":"int64"},"name":{"type":"string"},"code":{"type":"string"},"description":{"type":"string"},"quantity":{"type":"integer","format":"int32"},"availableQuantity":{"type":"integer","format":"int32"},"location":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultResourceItem":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/ResourceItem"}}},"CourseUpdateRequest":{"type":"object","properties":{"name":{"type":"string","description":"Course name"},"code":{"type":"string","description":"Course code"},"description":{"type":"string","description":"Description"},"coverUrl":{"type":"string","description":"Cover URL"},"coverImagePath":{"type":"string","description":"Cover image path"},"category":{"type":"string","description":"Category"},"ageRange":{"type":"string","description":"Age range"},"difficultyLevel":{"type":"string","description":"Difficulty level"},"durationMinutes":{"type":"integer","description":"Duration in minutes","format":"int32"},"objectives":{"type":"string","description":"Objectives"},"status":{"type":"string","description":"Status"},"coreContent":{"type":"string","description":"Core content"},"introSummary":{"type":"string","description":"Course summary"},"introHighlights":{"type":"string","description":"Course highlights"},"introGoals":{"type":"string","description":"Course goals"},"introSchedule":{"type":"string","description":"Content schedule"},"introKeyPoints":{"type":"string","description":"Key points and difficulties"},"introMethods":{"type":"string","description":"Teaching methods"},"introEvaluation":{"type":"string","description":"Evaluation methods"},"introNotes":{"type":"string","description":"Notes and precautions"},"scheduleRefData":{"type":"string","description":"Schedule reference data (JSON)"},"environmentConstruction":{"type":"string","description":"Environment construction content"},"themeId":{"type":"integer","description":"Theme ID","format":"int64"},"pictureBookName":{"type":"string","description":"Picture book name"},"ebookPaths":{"type":"string","description":"Ebook paths (JSON array)"},"audioPaths":{"type":"string","description":"Audio paths (JSON array)"},"videoPaths":{"type":"string","description":"Video paths (JSON array)"},"otherResources":{"type":"string","description":"Other resources (JSON array)"},"pptPath":{"type":"string","description":"PPT file path"},"pptName":{"type":"string","description":"PPT file name"},"posterPaths":{"type":"string","description":"Poster paths (JSON array)"},"tools":{"type":"string","description":"Teaching tools (JSON array)"},"studentMaterials":{"type":"string","description":"Student materials"},"lessonPlanData":{"type":"string","description":"Lesson plan data (JSON)"},"activitiesData":{"type":"string","description":"Activities data (JSON)"},"assessmentData":{"type":"string","description":"Assessment data (JSON)"},"gradeTags":{"type":"string","description":"Grade tags (JSON array)"},"domainTags":{"type":"string","description":"Domain tags (JSON array)"},"hasCollectiveLesson":{"type":"boolean","description":"Has collective lesson"}},"description":"Course Update Request"},"Course":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"code":{"type":"string"},"description":{"type":"string"},"coverUrl":{"type":"string"},"category":{"type":"string"},"ageRange":{"type":"string"},"difficultyLevel":{"type":"string"},"durationMinutes":{"type":"integer","format":"int32"},"objectives":{"type":"string"},"status":{"type":"string"},"isSystem":{"type":"integer","format":"int32"},"coreContent":{"type":"string"},"introSummary":{"type":"string"},"introHighlights":{"type":"string"},"introGoals":{"type":"string"},"introSchedule":{"type":"string"},"introKeyPoints":{"type":"string"},"introMethods":{"type":"string"},"introEvaluation":{"type":"string"},"introNotes":{"type":"string"},"scheduleRefData":{"type":"string"},"environmentConstruction":{"type":"string"},"themeId":{"type":"integer","format":"int64"},"pictureBookName":{"type":"string"},"coverImagePath":{"type":"string"},"ebookPaths":{"type":"string"},"audioPaths":{"type":"string"},"videoPaths":{"type":"string"},"otherResources":{"type":"string"},"pptPath":{"type":"string"},"pptName":{"type":"string"},"posterPaths":{"type":"string"},"tools":{"type":"string"},"studentMaterials":{"type":"string"},"lessonPlanData":{"type":"string"},"activitiesData":{"type":"string"},"assessmentData":{"type":"string"},"gradeTags":{"type":"string"},"domainTags":{"type":"string"},"hasCollectiveLesson":{"type":"integer","format":"int32"},"version":{"type":"string"},"parentId":{"type":"integer","format":"int64"},"isLatest":{"type":"integer","format":"int32"},"submittedAt":{"type":"string","format":"date-time"},"submittedBy":{"type":"integer","format":"int64"},"reviewedAt":{"type":"string","format":"date-time"},"reviewedBy":{"type":"integer","format":"int64"},"reviewComment":{"type":"string"},"reviewChecklist":{"type":"string"},"publishedAt":{"type":"string","format":"date-time"},"usageCount":{"type":"integer","format":"int32"},"teacherCount":{"type":"integer","format":"int32"},"avgRating":{"type":"number"},"createdBy":{"type":"integer","format":"int64"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultCourse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Course"}}},"CourseLesson":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"courseId":{"type":"integer","format":"int64"},"title":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"sortOrder":{"type":"integer","format":"int32"},"durationMinutes":{"type":"integer","format":"int32"},"videoUrl":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultCourseLesson":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/CourseLesson"}}},"CoursePackage":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"coverUrl":{"type":"string"},"courseCount":{"type":"integer","format":"int32"},"price":{"type":"number"},"status":{"type":"string"},"isSystem":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultCoursePackage":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/CoursePackage"}}},"TaskCreateRequest":{"required":["title"],"type":"object","properties":{"title":{"type":"string","description":"Task title"},"description":{"type":"string","description":"Description"},"type":{"type":"string","description":"Task type: reading, homework, activity"},"courseId":{"type":"integer","description":"Course ID","format":"int64"},"startDate":{"type":"string","description":"Start date","format":"date"},"dueDate":{"type":"string","description":"Due date","format":"date"},"attachments":{"type":"string","description":"Attachments (JSON array)"},"targetType":{"type":"string","description":"Target type: class, student"},"targetIds":{"type":"array","description":"Target IDs","items":{"type":"integer","description":"Target IDs","format":"int64"}}},"description":"Task Create Request"},"LessonCreateRequest":{"required":["courseId","lessonDate","teacherId","title"],"type":"object","properties":{"courseId":{"type":"integer","description":"Course ID","format":"int64"},"classId":{"type":"integer","description":"Class ID","format":"int64"},"teacherId":{"type":"integer","description":"Teacher ID","format":"int64"},"title":{"type":"string","description":"Lesson title"},"lessonDate":{"type":"string","description":"Lesson date","format":"date"},"startTime":{"$ref":"#/components/schemas/LocalTime"},"endTime":{"$ref":"#/components/schemas/LocalTime"},"location":{"type":"string","description":"Location"},"notes":{"type":"string","description":"Notes"}},"description":"Lesson Create Request"},"GrowthRecordCreateRequest":{"required":["studentId","title","type"],"type":"object","properties":{"studentId":{"type":"integer","description":"Student ID","format":"int64"},"type":{"type":"string","description":"Type: reading, behavior, achievement, milestone"},"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"},"images":{"type":"string","description":"Images (JSON array)"},"recordDate":{"type":"string","description":"Record date","format":"date"},"tags":{"type":"array","description":"Tags","items":{"type":"string","description":"Tags"}}},"description":"Growth Record Create Request"},"TeacherCreateRequest":{"required":["name","password","username"],"type":"object","properties":{"username":{"type":"string","description":"Username"},"password":{"type":"string","description":"Password"},"name":{"type":"string","description":"Name"},"phone":{"type":"string","description":"Phone"},"email":{"type":"string","description":"Email"},"gender":{"type":"string","description":"Gender"},"bio":{"type":"string","description":"Bio"}},"description":"Teacher Create Request"},"StudentCreateRequest":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Name"},"gender":{"type":"string","description":"Gender"},"birthDate":{"type":"string","description":"Birth date","format":"date"},"grade":{"type":"string","description":"Grade"},"studentNo":{"type":"string","description":"Student number"},"readingLevel":{"type":"string","description":"Reading level"},"interests":{"type":"string","description":"Interests"},"notes":{"type":"string","description":"Notes"}},"description":"Student Create Request"},"ScheduleTemplate":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"content":{"type":"string"},"isPublic":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"ResultScheduleTemplate":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/ScheduleTemplate"}}},"ParentCreateRequest":{"required":["name","password","username"],"type":"object","properties":{"username":{"type":"string","description":"Username"},"password":{"type":"string","description":"Password"},"name":{"type":"string","description":"Name"},"phone":{"type":"string","description":"Phone"},"email":{"type":"string","description":"Email"},"gender":{"type":"string","description":"Gender"}},"description":"Parent Create Request"},"ClassCreateRequest":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Class name"},"grade":{"type":"string","description":"Grade"},"description":{"type":"string","description":"Description"},"capacity":{"type":"integer","description":"Capacity","format":"int32"}},"description":"Class Create Request"},"ResultMapStringString":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{"type":"string"}}}},"LoginRequest":{"required":["password","username"],"type":"object","properties":{"username":{"type":"string","description":"Username","example":"admin"},"password":{"type":"string","description":"Password","example":"admin123"},"role":{"type":"string","description":"Login role","example":"admin"}},"description":"Login Request"},"LoginResponse":{"type":"object","properties":{"token":{"type":"string","description":"JWT Token"},"userId":{"type":"integer","description":"User ID","format":"int64"},"username":{"type":"string","description":"Username"},"name":{"type":"string","description":"User name"},"role":{"type":"string","description":"User role"},"tenantId":{"type":"integer","description":"Tenant ID","format":"int64"}},"description":"Login Response"},"ResultLoginResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/LoginResponse"}}},"TenantCreateRequest":{"required":["code","name"],"type":"object","properties":{"name":{"type":"string","description":"Tenant name"},"code":{"type":"string","description":"Tenant code / login account"},"contactName":{"type":"string","description":"Contact person"},"contactPhone":{"type":"string","description":"Contact phone"},"contactEmail":{"type":"string","description":"Contact email"},"address":{"type":"string","description":"Address"},"logoUrl":{"type":"string","description":"Logo URL"},"expireAt":{"type":"string","description":"Expiration date","format":"date-time"},"maxStudents":{"type":"integer","description":"Max students","format":"int32"},"maxTeachers":{"type":"integer","description":"Max teachers","format":"int32"},"password":{"type":"string","description":"Initial password (default: 123456)"},"packageType":{"type":"string","description":"Package type (optional)"},"startDate":{"type":"string","description":"Start date (optional)"}},"description":"Tenant Create Request"},"CourseCreateRequest":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Course name"},"code":{"type":"string","description":"Course code"},"description":{"type":"string","description":"Description"},"coverUrl":{"type":"string","description":"Cover URL"},"coverImagePath":{"type":"string","description":"Cover image path"},"category":{"type":"string","description":"Category"},"ageRange":{"type":"string","description":"Age range"},"difficultyLevel":{"type":"string","description":"Difficulty level"},"durationMinutes":{"type":"integer","description":"Duration in minutes","format":"int32"},"objectives":{"type":"string","description":"Objectives"},"coreContent":{"type":"string","description":"Core content"},"introSummary":{"type":"string","description":"Course summary"},"introHighlights":{"type":"string","description":"Course highlights"},"introGoals":{"type":"string","description":"Course goals"},"introSchedule":{"type":"string","description":"Content schedule"},"introKeyPoints":{"type":"string","description":"Key points and difficulties"},"introMethods":{"type":"string","description":"Teaching methods"},"introEvaluation":{"type":"string","description":"Evaluation methods"},"introNotes":{"type":"string","description":"Notes and precautions"},"scheduleRefData":{"type":"string","description":"Schedule reference data (JSON)"},"environmentConstruction":{"type":"string","description":"Environment construction content"},"themeId":{"type":"integer","description":"Theme ID","format":"int64"},"pictureBookName":{"type":"string","description":"Picture book name"},"ebookPaths":{"type":"string","description":"Ebook paths (JSON array)"},"audioPaths":{"type":"string","description":"Audio paths (JSON array)"},"videoPaths":{"type":"string","description":"Video paths (JSON array)"},"otherResources":{"type":"string","description":"Other resources (JSON array)"},"pptPath":{"type":"string","description":"PPT file path"},"pptName":{"type":"string","description":"PPT file name"},"posterPaths":{"type":"string","description":"Poster paths (JSON array)"},"tools":{"type":"string","description":"Teaching tools (JSON array)"},"studentMaterials":{"type":"string","description":"Student materials"},"lessonPlanData":{"type":"string","description":"Lesson plan data (JSON)"},"activitiesData":{"type":"string","description":"Activities data (JSON)"},"assessmentData":{"type":"string","description":"Assessment data (JSON)"},"gradeTags":{"type":"string","description":"Grade tags (JSON array)"},"domainTags":{"type":"string","description":"Domain tags (JSON array)"},"hasCollectiveLesson":{"type":"boolean","description":"Has collective lesson"}},"description":"Course Create Request"},"PageResultTask":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultTask":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultTask"}}},"PageResultSchoolCourse":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/SchoolCourse"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultSchoolCourse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultSchoolCourse"}}},"PageResultSchedulePlan":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/SchedulePlan"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultSchedulePlan":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultSchedulePlan"}}},"Notification":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"title":{"type":"string"},"content":{"type":"string"},"type":{"type":"string"},"senderId":{"type":"integer","format":"int64"},"senderRole":{"type":"string"},"recipientType":{"type":"string"},"recipientId":{"type":"integer","format":"int64"},"isRead":{"type":"integer","format":"int32"},"readAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"deleted":{"type":"integer","format":"int32"}}},"PageResultNotification":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Notification"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultNotification":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultNotification"}}},"ResultNotification":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/Notification"}}},"ResultLong":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"integer","format":"int64"}}},"PageResultLesson":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Lesson"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultLesson":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultLesson"}}},"ResultListLesson":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Lesson"}}}},"PageResultGrowthRecord":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/GrowthRecord"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultGrowthRecord":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultGrowthRecord"}}},"ResultListMapStringObject":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"type":"object","additionalProperties":{"type":"object"}}}}},"PageResultCourse":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Course"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultCourse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultCourse"}}},"ResultListCourseLesson":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/CourseLesson"}}}},"ResultListCourse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Course"}}}},"PageResultTeacher":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Teacher"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultTeacher":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultTeacher"}}},"PageResultStudent":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Student"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultStudent":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultStudent"}}},"PageResultScheduleTemplate":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleTemplate"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultScheduleTemplate":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultScheduleTemplate"}}},"PageResultParent":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Parent"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultParent":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultParent"}}},"OperationLog":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"tenantId":{"type":"integer","format":"int64"},"userId":{"type":"integer","format":"int64"},"userRole":{"type":"string"},"action":{"type":"string"},"module":{"type":"string"},"targetType":{"type":"string"},"targetId":{"type":"integer","format":"int64"},"details":{"type":"string"},"ipAddress":{"type":"string"},"userAgent":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"PageResultOperationLog":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/OperationLog"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultOperationLog":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultOperationLog"}}},"PageResultCoursePackage":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CoursePackage"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultCoursePackage":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultCoursePackage"}}},"PageResultClazz":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Clazz"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultClazz":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultClazz"}}},"ResultListGrowthRecord":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GrowthRecord"}}}},"ResultListStudent":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Student"}}}},"ResultUserInfoResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/UserInfoResponse"}}},"UserInfoResponse":{"type":"object","properties":{"id":{"type":"integer","description":"User ID","format":"int64"},"username":{"type":"string","description":"Username"},"name":{"type":"string","description":"User name"},"email":{"type":"string","description":"Email"},"phone":{"type":"string","description":"Phone"},"avatarUrl":{"type":"string","description":"Avatar URL"},"role":{"type":"string","description":"User role"},"tenantId":{"type":"integer","description":"Tenant ID","format":"int64"}},"description":"User Info Response"},"ResultListTheme":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Theme"}}}},"PageResultTenant":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Tenant"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultTenant":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultTenant"}}},"ResultListTenantResponse":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/TenantResponse"}}}},"TenantResponse":{"type":"object","properties":{"id":{"type":"integer","description":"Tenant ID","format":"int64"},"name":{"type":"string","description":"Tenant name"},"loginAccount":{"type":"string","description":"Login account (tenant code)"},"contactPerson":{"type":"string","description":"Contact person"},"contactPhone":{"type":"string","description":"Contact phone"},"contactEmail":{"type":"string","description":"Contact email"},"address":{"type":"string","description":"Address"},"logoUrl":{"type":"string","description":"Logo URL"},"status":{"type":"string","description":"Status"},"expireDate":{"type":"string","description":"Expiration date","format":"date-time"},"studentQuota":{"type":"integer","description":"Max students / student quota","format":"int32"},"teacherQuota":{"type":"integer","description":"Max teachers / teacher quota","format":"int32"},"createdAt":{"type":"string","description":"Created at","format":"date-time"}},"description":"Tenant Response"},"ResultListResourceLibrary":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ResourceLibrary"}}}},"PageResultResourceItem":{"type":"object","properties":{"total":{"type":"integer","format":"int64"},"pageSize":{"type":"integer","format":"int64"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ResourceItem"}},"page":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"}}},"ResultPageResultResourceItem":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/PageResultResourceItem"}}}},"securitySchemes":{"Bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"x-openapi":{"x-setting":{"customCode":200,"language":"zh-CN","enableSwaggerModels":true,"swaggerModelName":"Swagger Models","enableReloadCacheParameter":false,"enableAfterScript":true,"enableDocumentManage":true,"enableVersion":false,"enableRequestCache":true,"enableFilterMultipartApis":false,"enableFilterMultipartApiMethodType":"POST","enableHost":false,"enableHostText":"","enableDynamicParameter":false,"enableDebug":true,"enableFooter":true,"enableFooterCustom":false,"enableSearch":true,"enableOpenApi":true,"enableHomeCustom":false,"enableGroup":true,"enableResponseCode":true},"x-markdownFiles":[]}} \ No newline at end of file diff --git a/reading-platform-frontend/api-spec.yml b/reading-platform-frontend/api-spec.yml new file mode 100644 index 0000000..83ad726 --- /dev/null +++ b/reading-platform-frontend/api-spec.yml @@ -0,0 +1,12146 @@ +openapi: 3.0.1 +info: + title: Reading Platform API + description: Reading Platform Backend Service API Documentation + contact: + name: Reading Platform Team + email: support@reading-platform.com + version: 1.0.0 +servers: + - url: http://localhost:3002 + description: Generated server url +security: + - Bearer: [] +tags: + - name: School - Course Packages + description: Course Packages for School + - name: Admin - Operation Logs + description: Operation Log Management for Admin + - name: School - School Courses + description: School Custom Course Management + - name: School - Task + description: Task Management APIs for School + - name: Admin - Settings + description: Admin System Settings Management + - name: Parent - Task + description: Task APIs for Parent + - name: Auth + description: Authentication APIs + - name: Admin - Tenant + description: Tenant Management APIs for Admin + - name: Teacher - Schedule + description: Teacher Schedule View + - name: Admin - Stats + description: Admin Statistics Dashboard + - name: Admin - Resources + description: Resource Library Management for Admin + - name: Admin - Course + description: System Course Management APIs for Admin + - name: Teacher - School Courses + description: School Courses for Teacher + - name: School - Operation Logs + description: Operation Log for School + - name: School - Stats + description: School Statistics Dashboard + - name: School - Schedule + description: School Schedule Management + - name: School - Parent + description: Parent Management APIs for School + - name: Parent - Child + description: Child Information APIs for Parent + - name: Teacher - Task + description: Task APIs for Teacher + - name: School - Export + description: School Data Export + - name: Teacher - Notification + description: Notification APIs for Teacher + - name: School - Student + description: Student Management APIs for School + - name: School - Class + description: Class Management APIs for School + - name: Parent - Growth Record + description: Growth Record APIs for Parent + - name: Teacher - Course + description: Course APIs for Teacher + - name: Admin - Themes + description: Theme Management for Admin + - name: Admin - Course Lessons + description: Course Lesson Management for Admin + - name: School - Settings + description: School Settings Management + - name: Teacher - Course Lessons + description: Course Lessons for Teacher + - name: Teacher - Dashboard + description: Teacher Dashboard + - name: Admin - Course Packages + description: Course Package Management for Admin + - name: School - Teacher + description: Teacher Management APIs for School + - name: File Upload + description: File Upload APIs + - name: Teacher - Growth Record + description: Growth Record APIs for Teacher + - name: Teacher - Lesson + description: Lesson APIs for Teacher + - name: School - Growth Record + description: Growth Record Management APIs for School + - name: Parent - Notification + description: Notification APIs for Parent +paths: + /api/v1/teacher/tasks/{id}: + get: + tags: + - Teacher - Task + summary: Get task by ID + operationId: getTask + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Teacher - Task + summary: Update task + operationId: updateTask + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TaskUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Teacher - Task + summary: Delete task + operationId: deleteTask + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/lessons/{id}: + get: + tags: + - Teacher - Lesson + summary: Get lesson by ID + operationId: getLesson + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Teacher - Lesson + summary: Update lesson + operationId: updateLesson + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LessonUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/growth-records/{id}: + get: + tags: + - Teacher - Growth Record + summary: Get growth record by ID + operationId: getGrowthRecord + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Teacher - Growth Record + summary: Update growth record + operationId: updateGrowthRecord + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRecordUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Teacher - Growth Record + summary: Delete growth record + operationId: deleteGrowthRecord + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/teachers/{id}: + get: + tags: + - School - Teacher + summary: Get teacher by ID + operationId: getTeacher + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTeacher' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Teacher + summary: Update teacher + operationId: updateTeacher + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeacherUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTeacher' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Teacher + summary: Delete teacher + operationId: deleteTeacher + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/tasks/{id}: + get: + tags: + - School - Task + summary: Get task by ID + operationId: getTask_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Task + summary: Update task + operationId: updateTask_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TaskUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Task + summary: Delete task + operationId: deleteTask_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/students/{id}: + get: + tags: + - School - Student + summary: Get student by ID + operationId: getStudent + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultStudent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Student + summary: Update student + operationId: updateStudent + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StudentUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultStudent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Student + summary: Delete student + operationId: deleteStudent + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/settings: + get: + tags: + - School - Settings + summary: Get school settings + operationId: getSettings + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringString' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Settings + summary: Update school settings + operationId: updateSettings + requestBody: + content: + application/json: + schema: + type: object + additionalProperties: + type: string + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/school-courses/{id}: + get: + tags: + - School - School Courses + summary: Get school course by ID + operationId: getCourse_2 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchoolCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - School Courses + summary: Update school course + operationId: updateCourse + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SchoolCourse' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchoolCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - School Courses + summary: Delete school course + operationId: deleteCourse + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/schedules/{id}: + get: + tags: + - School - Schedule + summary: Get schedule plan by ID + operationId: getSchedulePlan_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchedulePlan' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Schedule + summary: Update schedule plan + operationId: updateSchedulePlan + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SchedulePlan' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchedulePlan' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Schedule + summary: Delete schedule plan + operationId: deleteSchedulePlan + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/parents/{id}: + get: + tags: + - School - Parent + summary: Get parent by ID + operationId: getParent + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultParent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Parent + summary: Update parent + operationId: updateParent + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ParentUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultParent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Parent + summary: Delete parent + operationId: deleteParent + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/growth-records/{id}: + get: + tags: + - School - Growth Record + summary: Get growth record by ID + operationId: getGrowthRecord_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Growth Record + summary: Update growth record + operationId: updateGrowthRecord_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRecordUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Growth Record + summary: Delete growth record + operationId: deleteGrowthRecord_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/classes/{id}: + get: + tags: + - School - Class + summary: Get class by ID + operationId: getClass + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultClazz' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - School - Class + summary: Update class + operationId: updateClass + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClassUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultClazz' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Class + summary: Delete class + operationId: deleteClass + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/growth-records/{id}: + get: + tags: + - Parent - Growth Record + summary: Get growth record by ID + operationId: getGrowthRecord_2 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Parent - Growth Record + summary: Update growth record + operationId: updateGrowthRecord_2 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRecordUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Parent - Growth Record + summary: Delete growth record + operationId: deleteGrowthRecord_2 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/themes/{id}: + get: + tags: + - Admin - Themes + summary: Get theme by ID + operationId: getTheme + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTheme' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Admin - Themes + summary: Update theme + operationId: updateTheme + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Theme' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTheme' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Themes + summary: Delete theme + operationId: deleteTheme + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/tenants/{id}: + get: + tags: + - Admin - Tenant + summary: Get tenant by ID + operationId: getTenant + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTenant' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Admin - Tenant + summary: Update tenant + operationId: updateTenant + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TenantUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTenant' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Tenant + summary: Delete tenant + operationId: deleteTenant + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/tenants/{id}/status: + put: + tags: + - Admin - Tenant + summary: Update tenant status + operationId: updateTenantStatus + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + type: object + additionalProperties: + type: string + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/tenants/{id}/quota: + put: + tags: + - Admin - Tenant + summary: Update tenant quota + operationId: updateTenantQuota + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + type: object + additionalProperties: + type: object + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTenant' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/settings: + get: + tags: + - Admin - Settings + summary: Get admin system settings + operationId: getSettings_1 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringString' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Admin - Settings + summary: Update admin system settings + operationId: updateSettings_1 + requestBody: + content: + application/json: + schema: + type: object + additionalProperties: + type: object + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/resources/libraries/{id}: + put: + tags: + - Admin - Resources + summary: Update resource library + operationId: updateLibrary + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResourceLibrary' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultResourceLibrary' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Resources + summary: Delete resource library + operationId: deleteLibrary + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/resources/items/{id}: + put: + tags: + - Admin - Resources + summary: Update resource item + operationId: updateItem + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResourceItem' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultResourceItem' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Resources + summary: Delete resource item + operationId: deleteItem + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/courses/{id}: + get: + tags: + - Admin - Course + summary: Get course by ID + operationId: getCourse_3 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Admin - Course + summary: Update course + operationId: updateCourse_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CourseUpdateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Course + summary: Delete course + operationId: deleteCourse_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/courses/{courseId}/lessons/{id}: + get: + tags: + - Admin - Course Lessons + summary: Get lesson by ID + operationId: getLesson_2 + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourseLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Admin - Course Lessons + summary: Update course lesson + operationId: updateLesson_1 + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CourseLesson' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourseLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Course Lessons + summary: Delete course lesson + operationId: deleteLesson + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/course-packages/{id}: + get: + tags: + - Admin - Course Packages + summary: Get course package by ID + operationId: getPackage_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCoursePackage' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + put: + tags: + - Admin - Course Packages + summary: Update course package + operationId: updatePackage + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CoursePackage' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCoursePackage' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - Admin - Course Packages + summary: Delete course package + operationId: deletePackage + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/tasks: + get: + tags: + - Teacher - Task + summary: Get task page + operationId: getTaskPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: type + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Teacher - Task + summary: Create task + operationId: createTask + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TaskCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/notifications/{id}/read: + post: + tags: + - Teacher - Notification + summary: Mark notification as read + operationId: markAsRead + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/notifications/read-all: + post: + tags: + - Teacher - Notification + summary: Mark all notifications as read + operationId: markAllAsRead + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/lessons: + get: + tags: + - Teacher - Lesson + summary: Get my lessons + operationId: getMyLessons + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: status + in: query + required: false + schema: + type: string + - name: startDate + in: query + required: false + schema: + type: string + format: date + - name: endDate + in: query + required: false + schema: + type: string + format: date + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Teacher - Lesson + summary: Create lesson + operationId: createLesson + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LessonCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/lessons/{id}/start: + post: + tags: + - Teacher - Lesson + summary: Start lesson + operationId: startLesson + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/lessons/{id}/complete: + post: + tags: + - Teacher - Lesson + summary: Complete lesson + operationId: completeLesson + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/lessons/{id}/cancel: + post: + tags: + - Teacher - Lesson + summary: Cancel lesson + operationId: cancelLesson + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/growth-records: + get: + tags: + - Teacher - Growth Record + summary: Get growth record page + operationId: getGrowthRecordPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: studentId + in: query + required: false + schema: + type: integer + format: int64 + - name: type + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Teacher - Growth Record + summary: Create growth record + operationId: createGrowthRecord + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRecordCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/teachers: + get: + tags: + - School - Teacher + summary: Get teacher page + operationId: getTeacherPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultTeacher' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Teacher + summary: Create teacher + operationId: createTeacher + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TeacherCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTeacher' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/teachers/{id}/reset-password: + post: + tags: + - School - Teacher + summary: Reset teacher password + operationId: resetPassword + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: newPassword + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/tasks: + get: + tags: + - School - Task + summary: Get task page + operationId: getTaskPage_1 + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: type + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Task + summary: Create task + operationId: createTask_1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TaskCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/students: + get: + tags: + - School - Student + summary: Get student page + operationId: getStudentPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: grade + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultStudent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Student + summary: Create student + operationId: createStudent + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StudentCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultStudent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/school-courses: + get: + tags: + - School - School Courses + summary: Get school courses + operationId: getCourses_1 + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: keyword + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultSchoolCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - School Courses + summary: Create school course + operationId: createCourse + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SchoolCourse' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchoolCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/schedules: + get: + tags: + - School - Schedule + summary: Get schedule plans + operationId: getSchedulePlans_1 + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: classId + in: query + required: false + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultSchedulePlan' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Schedule + summary: Create schedule plan + operationId: createSchedulePlan + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SchedulePlan' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchedulePlan' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/schedules/templates: + get: + tags: + - School - Schedule + summary: Get schedule templates + operationId: getScheduleTemplates + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultScheduleTemplate' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Schedule + summary: Create schedule template + operationId: createScheduleTemplate + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScheduleTemplate' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultScheduleTemplate' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/parents: + get: + tags: + - School - Parent + summary: Get parent page + operationId: getParentPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultParent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Parent + summary: Create parent + operationId: createParent + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ParentCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultParent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/parents/{parentId}/students/{studentId}: + post: + tags: + - School - Parent + summary: Bind student to parent + operationId: bindStudent + parameters: + - name: parentId + in: path + required: true + schema: + type: integer + format: int64 + - name: studentId + in: path + required: true + schema: + type: integer + format: int64 + - name: relationship + in: query + required: false + schema: + type: string + - name: isPrimary + in: query + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + delete: + tags: + - School - Parent + summary: Unbind student from parent + operationId: unbindStudent + parameters: + - name: parentId + in: path + required: true + schema: + type: integer + format: int64 + - name: studentId + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/parents/{id}/reset-password: + post: + tags: + - School - Parent + summary: Reset parent password + operationId: resetPassword_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: newPassword + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/growth-records: + get: + tags: + - School - Growth Record + summary: Get growth record page + operationId: getGrowthRecordPage_1 + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: studentId + in: query + required: false + schema: + type: integer + format: int64 + - name: type + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Growth Record + summary: Create growth record + operationId: createGrowthRecord_1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRecordCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/classes: + get: + tags: + - School - Class + summary: Get class page + operationId: getClassPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: grade + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultClazz' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - School - Class + summary: Create class + operationId: createClass + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ClassCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultClazz' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/classes/{id}/teachers: + post: + tags: + - School - Class + summary: Assign teachers to class + operationId: assignTeachers + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + type: array + items: + type: integer + format: int64 + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/classes/{id}/students: + post: + tags: + - School - Class + summary: Assign students to class + operationId: assignStudents + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + type: array + items: + type: integer + format: int64 + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/tasks/{taskId}/complete: + post: + tags: + - Parent - Task + summary: Complete task + operationId: completeTask + parameters: + - name: taskId + in: path + required: true + schema: + type: integer + format: int64 + - name: studentId + in: query + required: true + schema: + type: integer + format: int64 + - name: content + in: query + required: false + schema: + type: string + - name: attachments + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/notifications/{id}/read: + post: + tags: + - Parent - Notification + summary: Mark notification as read + operationId: markAsRead_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/notifications/read-all: + post: + tags: + - Parent - Notification + summary: Mark all notifications as read + operationId: markAllAsRead_1 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/growth-records: + post: + tags: + - Parent - Growth Record + summary: Create growth record + operationId: createGrowthRecord_2 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GrowthRecordCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/files/upload: + post: + tags: + - File Upload + summary: Upload file + operationId: uploadFile + requestBody: + content: + application/json: + schema: + required: + - file + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringString' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/auth/logout: + post: + tags: + - Auth + summary: User logout + operationId: logout + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/auth/login: + post: + tags: + - Auth + summary: User login + operationId: login + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LoginRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultLoginResponse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/auth/change-password: + post: + tags: + - Auth + summary: Change password + operationId: changePassword + parameters: + - name: oldPassword + in: query + required: true + schema: + type: string + - name: newPassword + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/themes: + get: + tags: + - Admin - Themes + summary: Get all themes + operationId: getThemes + parameters: + - name: enabledOnly + in: query + required: false + schema: + type: boolean + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListTheme' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Themes + summary: Create theme + operationId: createTheme + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Theme' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTheme' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/tenants: + get: + tags: + - Admin - Tenant + summary: Get tenant page + operationId: getTenantPage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + - name: packageType + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultTenant' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Tenant + summary: Create tenant + operationId: createTenant + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TenantCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTenant' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/tenants/{id}/reset-password: + post: + tags: + - Admin - Tenant + summary: Reset tenant school account password + operationId: resetTenantPassword + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringString' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/resources/libraries: + get: + tags: + - Admin - Resources + summary: Get all resource libraries + operationId: getLibraries + parameters: + - name: tenantId + in: query + required: false + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListResourceLibrary' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Resources + summary: Create resource library + operationId: createLibrary + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResourceLibrary' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultResourceLibrary' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/resources/items: + get: + tags: + - Admin - Resources + summary: Get resource items + operationId: getItems + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: libraryId + in: query + required: false + schema: + type: integer + format: int64 + - name: keyword + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultResourceItem' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Resources + summary: Create resource item + operationId: createItem + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResourceItem' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultResourceItem' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/courses: + get: + tags: + - Admin - Course + summary: Get system course page + operationId: getCoursePage_1 + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: category + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Course + summary: Create system course + operationId: createCourse_1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CourseCreateRequest' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/courses/{id}/publish: + post: + tags: + - Admin - Course + summary: Publish course + operationId: publishCourse + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/courses/{id}/archive: + post: + tags: + - Admin - Course + summary: Archive course + operationId: archiveCourse + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/courses/{courseId}/lessons: + get: + tags: + - Admin - Course Lessons + summary: Get lessons for a course + operationId: getLessons_1 + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListCourseLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Course Lessons + summary: Create course lesson + operationId: createLesson_1 + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CourseLesson' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourseLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/course-packages: + get: + tags: + - Admin - Course Packages + summary: Get course packages + operationId: getPackages_1 + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: keyword + in: query + required: false + schema: + type: string + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultCoursePackage' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + post: + tags: + - Admin - Course Packages + summary: Create course package + operationId: createPackage + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CoursePackage' + required: true + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCoursePackage' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/school-courses: + get: + tags: + - Teacher - School Courses + summary: Get school courses + operationId: getCourses + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: keyword + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultSchoolCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/school-courses/{id}: + get: + tags: + - Teacher - School Courses + summary: Get school course by ID + operationId: getCourse + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchoolCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/schedules: + get: + tags: + - Teacher - Schedule + summary: Get teacher schedule plans + operationId: getSchedulePlans + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultSchedulePlan' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/schedules/{id}: + get: + tags: + - Teacher - Schedule + summary: Get schedule plan by ID + operationId: getSchedulePlan + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultSchedulePlan' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/notifications: + get: + tags: + - Teacher - Notification + summary: Get my notifications + operationId: getMyNotifications + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: isRead + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultNotification' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/notifications/{id}: + get: + tags: + - Teacher - Notification + summary: Get notification by ID + operationId: getNotification + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultNotification' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/notifications/unread-count: + get: + tags: + - Teacher - Notification + summary: Get unread count + operationId: getUnreadCount + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultLong' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/lessons/today: + get: + tags: + - Teacher - Lesson + summary: Get today's lessons + operationId: getTodayLessons + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/dashboard: + get: + tags: + - Teacher - Dashboard + summary: Get teacher dashboard overview + operationId: getDashboard + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/dashboard/weekly: + get: + tags: + - Teacher - Dashboard + summary: Get weekly lessons + operationId: getWeeklyLessons + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/dashboard/today: + get: + tags: + - Teacher - Dashboard + summary: Get today's lessons + operationId: getTodayLessons_1 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/courses: + get: + tags: + - Teacher - Course + summary: Get course page + operationId: getCoursePage + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: keyword + in: query + required: false + schema: + type: string + - name: category + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/courses/{id}: + get: + tags: + - Teacher - Course + summary: Get course by ID + operationId: getCourse_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/courses/{courseId}/lessons: + get: + tags: + - Teacher - Course Lessons + summary: Get lessons for a course + operationId: getLessons + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListCourseLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/courses/{courseId}/lessons/{id}: + get: + tags: + - Teacher - Course Lessons + summary: Get lesson by ID + operationId: getLesson_1 + parameters: + - name: courseId + in: path + required: true + schema: + type: integer + format: int64 + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCourseLesson' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/teacher/courses/all: + get: + tags: + - Teacher - Course + summary: Get all courses + operationId: getAllCourses + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListCourse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/stats: + get: + tags: + - School - Stats + summary: Get school statistics + operationId: getStats + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/operation-logs: + get: + tags: + - School - Operation Logs + summary: Get school operation logs + operationId: getLogs + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: module + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultOperationLog' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/export/teachers: + get: + tags: + - School - Export + summary: Export teachers to Excel + operationId: exportTeachers + responses: + '200': + description: OK + content: + '*/*': + schema: + type: array + items: + type: string + format: byte + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/export/students: + get: + tags: + - School - Export + summary: Export students to Excel + operationId: exportStudents + responses: + '200': + description: OK + content: + '*/*': + schema: + type: array + items: + type: string + format: byte + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/export/lessons: + get: + tags: + - School - Export + summary: Export lessons to Excel + operationId: exportLessons + responses: + '200': + description: OK + content: + '*/*': + schema: + type: array + items: + type: string + format: byte + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/export/growth-records: + get: + tags: + - School - Export + summary: Export growth records to Excel + operationId: exportGrowthRecords + responses: + '200': + description: OK + content: + '*/*': + schema: + type: array + items: + type: string + format: byte + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/course-packages: + get: + tags: + - School - Course Packages + summary: Get available course packages + operationId: getPackages + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: keyword + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultCoursePackage' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/course-packages/{id}: + get: + tags: + - School - Course Packages + summary: Get course package by ID + operationId: getPackage + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultCoursePackage' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/tasks/{id}: + get: + tags: + - Parent - Task + summary: Get task by ID + operationId: getTask_2 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/tasks/student/{studentId}: + get: + tags: + - Parent - Task + summary: Get tasks by student ID + operationId: getTasksByStudent + parameters: + - name: studentId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: status + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultTask' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/notifications: + get: + tags: + - Parent - Notification + summary: Get my notifications + operationId: getMyNotifications_1 + parameters: + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: isRead + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultNotification' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/notifications/{id}: + get: + tags: + - Parent - Notification + summary: Get notification by ID + operationId: getNotification_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultNotification' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/notifications/unread-count: + get: + tags: + - Parent - Notification + summary: Get unread count + operationId: getUnreadCount_1 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultLong' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/growth-records/student/{studentId}: + get: + tags: + - Parent - Growth Record + summary: Get growth records by student ID + operationId: getGrowthRecordsByStudent + parameters: + - name: studentId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int32 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + - name: type + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/growth-records/student/{studentId}/recent: + get: + tags: + - Parent - Growth Record + summary: Get recent growth records + operationId: getRecentGrowthRecords + parameters: + - name: studentId + in: path + required: true + schema: + type: integer + format: int64 + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + default: 10 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListGrowthRecord' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/children: + get: + tags: + - Parent - Child + summary: Get my children + operationId: getMyChildren + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListStudent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/parent/children/{id}: + get: + tags: + - Parent - Child + summary: Get child by ID + operationId: getChild + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultStudent' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/auth/me: + get: + tags: + - Auth + summary: Get current user info + operationId: getCurrentUser + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultUserInfoResponse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/tenants/active: + get: + tags: + - Admin - Tenant + summary: Get all active tenants + operationId: getAllActiveTenants + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListTenantResponse' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/stats: + get: + tags: + - Admin - Stats + summary: Get overall statistics + operationId: getStats_1 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/stats/trend: + get: + tags: + - Admin - Stats + summary: Get trend data (last 6 months) + operationId: getTrendData + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/stats/tenants/active: + get: + tags: + - Admin - Stats + summary: Get active tenants + operationId: getActiveTenants + parameters: + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + default: 10 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/stats/courses/popular: + get: + tags: + - Admin - Stats + summary: Get popular courses + operationId: getPopularCourses + parameters: + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + default: 10 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/stats/activities: + get: + tags: + - Admin - Stats + summary: Get recent activities + operationId: getActivities + parameters: + - name: limit + in: query + required: false + schema: + type: integer + format: int32 + default: 10 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultListMapStringObject' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/admin/operation-logs: + get: + tags: + - Admin - Operation Logs + summary: Get operation logs + operationId: getLogs_1 + parameters: + - name: pageNum + in: query + required: false + schema: + type: integer + format: int32 + default: 1 + - name: pageSize + in: query + required: false + schema: + type: integer + format: int32 + default: 20 + - name: tenantId + in: query + required: false + schema: + type: integer + format: int64 + - name: module + in: query + required: false + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultPageResultOperationLog' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/school/schedules/templates/{id}: + delete: + tags: + - School - Schedule + summary: Delete schedule template + operationId: deleteScheduleTemplate + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + /api/v1/files/delete: + delete: + tags: + - File Upload + summary: Delete file + operationId: deleteFile + parameters: + - name: filePath + in: query + required: true + schema: + type: string + responses: + '200': + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '400': + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '401': + description: Unauthorized + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '403': + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '404': + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '405': + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' + '500': + description: Internal Server Error + content: + '*/*': + schema: + $ref: '#/components/schemas/ResultVoid' +components: + schemas: + ResultVoid: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: object + TaskUpdateRequest: + type: object + properties: + title: + type: string + description: Task title + description: + type: string + description: Description + type: + type: string + description: Task type + startDate: + type: string + description: Start date + format: date + dueDate: + type: string + description: Due date + format: date + status: + type: string + description: Status + attachments: + type: string + description: Attachments (JSON array) + description: Task Update Request + ResultTask: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Task' + Task: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + title: + type: string + description: + type: string + type: + type: string + courseId: + type: integer + format: int64 + creatorId: + type: integer + format: int64 + creatorRole: + type: string + startDate: + type: string + format: date + dueDate: + type: string + format: date + status: + type: string + attachments: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + LessonUpdateRequest: + type: object + properties: + title: + type: string + description: Lesson title + lessonDate: + type: string + description: Lesson date + format: date + startTime: + $ref: '#/components/schemas/LocalTime' + endTime: + $ref: '#/components/schemas/LocalTime' + location: + type: string + description: Location + status: + type: string + description: Status + notes: + type: string + description: Notes + description: Lesson Update Request + LocalTime: + type: object + properties: + hour: + type: integer + format: int32 + minute: + type: integer + format: int32 + second: + type: integer + format: int32 + nano: + type: integer + format: int32 + description: End time + Lesson: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + courseId: + type: integer + format: int64 + classId: + type: integer + format: int64 + teacherId: + type: integer + format: int64 + title: + type: string + lessonDate: + type: string + format: date + startTime: + $ref: '#/components/schemas/LocalTime' + endTime: + $ref: '#/components/schemas/LocalTime' + location: + type: string + status: + type: string + notes: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultLesson: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Lesson' + GrowthRecordUpdateRequest: + type: object + properties: + type: + type: string + description: Type + title: + type: string + description: Title + content: + type: string + description: Content + images: + type: string + description: Images (JSON array) + recordDate: + type: string + description: Record date + format: date + tags: + type: array + description: Tags + items: + type: string + description: Tags + description: Growth Record Update Request + GrowthRecord: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + studentId: + type: integer + format: int64 + type: + type: string + title: + type: string + content: + type: string + images: + type: string + recordedBy: + type: integer + format: int64 + recorderRole: + type: string + recordDate: + type: string + format: date + tags: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultGrowthRecord: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/GrowthRecord' + TeacherUpdateRequest: + type: object + properties: + name: + type: string + description: Name + phone: + type: string + description: Phone + email: + type: string + description: Email + avatarUrl: + type: string + description: Avatar URL + gender: + type: string + description: Gender + bio: + type: string + description: Bio + status: + type: string + description: Status + description: Teacher Update Request + ResultTeacher: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Teacher' + Teacher: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + username: + type: string + password: + type: string + name: + type: string + phone: + type: string + email: + type: string + avatarUrl: + type: string + gender: + type: string + bio: + type: string + status: + type: string + lastLoginAt: + type: string + format: date-time + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + StudentUpdateRequest: + type: object + properties: + name: + type: string + description: Name + gender: + type: string + description: Gender + birthDate: + type: string + description: Birth date + format: date + avatarUrl: + type: string + description: Avatar URL + grade: + type: string + description: Grade + studentNo: + type: string + description: Student number + readingLevel: + type: string + description: Reading level + interests: + type: string + description: Interests + notes: + type: string + description: Notes + status: + type: string + description: Status + description: Student Update Request + ResultStudent: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Student' + Student: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + gender: + type: string + birthDate: + type: string + format: date + avatarUrl: + type: string + grade: + type: string + studentNo: + type: string + readingLevel: + type: string + interests: + type: string + notes: + type: string + status: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + SchoolCourse: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + description: + type: string + coverUrl: + type: string + category: + type: string + ageRange: + type: string + status: + type: string + createdBy: + type: integer + format: int64 + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultSchoolCourse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/SchoolCourse' + SchedulePlan: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + classId: + type: integer + format: int64 + startDate: + type: string + format: date + endDate: + type: string + format: date + status: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultSchedulePlan: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/SchedulePlan' + ParentUpdateRequest: + type: object + properties: + name: + type: string + description: Name + phone: + type: string + description: Phone + email: + type: string + description: Email + avatarUrl: + type: string + description: Avatar URL + gender: + type: string + description: Gender + status: + type: string + description: Status + description: Parent Update Request + Parent: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + username: + type: string + password: + type: string + name: + type: string + phone: + type: string + email: + type: string + avatarUrl: + type: string + gender: + type: string + status: + type: string + lastLoginAt: + type: string + format: date-time + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultParent: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Parent' + ClassUpdateRequest: + type: object + properties: + name: + type: string + description: Class name + grade: + type: string + description: Grade + description: + type: string + description: Description + capacity: + type: integer + description: Capacity + format: int32 + status: + type: string + description: Status + description: Class Update Request + Clazz: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + grade: + type: string + description: + type: string + capacity: + type: integer + format: int32 + status: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultClazz: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Clazz' + Theme: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + displayName: + type: string + color: + type: string + icon: + type: string + sortOrder: + type: integer + format: int32 + isEnabled: + type: integer + format: int32 + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultTheme: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Theme' + TenantUpdateRequest: + type: object + properties: + name: + type: string + description: Tenant name + contactName: + type: string + description: Contact person + contactPhone: + type: string + description: Contact phone + contactEmail: + type: string + description: Contact email + address: + type: string + description: Address + logoUrl: + type: string + description: Logo URL + status: + type: string + description: Status + expireAt: + type: string + description: Expiration date + format: date-time + maxStudents: + type: integer + description: Max students + format: int32 + maxTeachers: + type: integer + description: Max teachers + format: int32 + packageType: + type: string + description: Package type (optional) + startDate: + type: string + description: Start date (optional) + description: Tenant Update Request + ResultTenant: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Tenant' + Tenant: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + contactPhone: + type: string + contactEmail: + type: string + address: + type: string + logoUrl: + type: string + status: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + tempPassword: + type: string + loginAccount: + type: string + contactPerson: + type: string + expireDate: + type: string + format: date-time + studentQuota: + type: integer + format: int32 + teacherQuota: + type: integer + format: int32 + ResultMapStringObject: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: object + additionalProperties: + type: object + ResourceLibrary: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + description: + type: string + type: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultResourceLibrary: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/ResourceLibrary' + ResourceItem: + type: object + properties: + id: + type: integer + format: int64 + libraryId: + type: integer + format: int64 + name: + type: string + code: + type: string + description: + type: string + quantity: + type: integer + format: int32 + availableQuantity: + type: integer + format: int32 + location: + type: string + status: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultResourceItem: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/ResourceItem' + CourseUpdateRequest: + type: object + properties: + name: + type: string + description: Course name + code: + type: string + description: Course code + description: + type: string + description: Description + coverUrl: + type: string + description: Cover URL + coverImagePath: + type: string + description: Cover image path + category: + type: string + description: Category + ageRange: + type: string + description: Age range + difficultyLevel: + type: string + description: Difficulty level + durationMinutes: + type: integer + description: Duration in minutes + format: int32 + objectives: + type: string + description: Objectives + status: + type: string + description: Status + coreContent: + type: string + description: Core content + introSummary: + type: string + description: Course summary + introHighlights: + type: string + description: Course highlights + introGoals: + type: string + description: Course goals + introSchedule: + type: string + description: Content schedule + introKeyPoints: + type: string + description: Key points and difficulties + introMethods: + type: string + description: Teaching methods + introEvaluation: + type: string + description: Evaluation methods + introNotes: + type: string + description: Notes and precautions + scheduleRefData: + type: string + description: Schedule reference data (JSON) + environmentConstruction: + type: string + description: Environment construction content + themeId: + type: integer + description: Theme ID + format: int64 + pictureBookName: + type: string + description: Picture book name + ebookPaths: + type: string + description: Ebook paths (JSON array) + audioPaths: + type: string + description: Audio paths (JSON array) + videoPaths: + type: string + description: Video paths (JSON array) + otherResources: + type: string + description: Other resources (JSON array) + pptPath: + type: string + description: PPT file path + pptName: + type: string + description: PPT file name + posterPaths: + type: string + description: Poster paths (JSON array) + tools: + type: string + description: Teaching tools (JSON array) + studentMaterials: + type: string + description: Student materials + lessonPlanData: + type: string + description: Lesson plan data (JSON) + activitiesData: + type: string + description: Activities data (JSON) + assessmentData: + type: string + description: Assessment data (JSON) + gradeTags: + type: string + description: Grade tags (JSON array) + domainTags: + type: string + description: Domain tags (JSON array) + hasCollectiveLesson: + type: boolean + description: Has collective lesson + description: Course Update Request + Course: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + code: + type: string + description: + type: string + coverUrl: + type: string + category: + type: string + ageRange: + type: string + difficultyLevel: + type: string + durationMinutes: + type: integer + format: int32 + objectives: + type: string + status: + type: string + isSystem: + type: integer + format: int32 + coreContent: + type: string + introSummary: + type: string + introHighlights: + type: string + introGoals: + type: string + introSchedule: + type: string + introKeyPoints: + type: string + introMethods: + type: string + introEvaluation: + type: string + introNotes: + type: string + scheduleRefData: + type: string + environmentConstruction: + type: string + themeId: + type: integer + format: int64 + pictureBookName: + type: string + coverImagePath: + type: string + ebookPaths: + type: string + audioPaths: + type: string + videoPaths: + type: string + otherResources: + type: string + pptPath: + type: string + pptName: + type: string + posterPaths: + type: string + tools: + type: string + studentMaterials: + type: string + lessonPlanData: + type: string + activitiesData: + type: string + assessmentData: + type: string + gradeTags: + type: string + domainTags: + type: string + hasCollectiveLesson: + type: integer + format: int32 + version: + type: string + parentId: + type: integer + format: int64 + isLatest: + type: integer + format: int32 + submittedAt: + type: string + format: date-time + submittedBy: + type: integer + format: int64 + reviewedAt: + type: string + format: date-time + reviewedBy: + type: integer + format: int64 + reviewComment: + type: string + reviewChecklist: + type: string + publishedAt: + type: string + format: date-time + usageCount: + type: integer + format: int32 + teacherCount: + type: integer + format: int32 + avgRating: + type: number + createdBy: + type: integer + format: int64 + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultCourse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Course' + CourseLesson: + type: object + properties: + id: + type: integer + format: int64 + courseId: + type: integer + format: int64 + title: + type: string + description: + type: string + content: + type: string + sortOrder: + type: integer + format: int32 + durationMinutes: + type: integer + format: int32 + videoUrl: + type: string + status: + type: string + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultCourseLesson: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/CourseLesson' + CoursePackage: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + coverUrl: + type: string + courseCount: + type: integer + format: int32 + price: + type: number + status: + type: string + isSystem: + type: integer + format: int32 + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultCoursePackage: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/CoursePackage' + TaskCreateRequest: + required: + - title + type: object + properties: + title: + type: string + description: Task title + description: + type: string + description: Description + type: + type: string + description: 'Task type: reading, homework, activity' + courseId: + type: integer + description: Course ID + format: int64 + startDate: + type: string + description: Start date + format: date + dueDate: + type: string + description: Due date + format: date + attachments: + type: string + description: Attachments (JSON array) + targetType: + type: string + description: 'Target type: class, student' + targetIds: + type: array + description: Target IDs + items: + type: integer + description: Target IDs + format: int64 + description: Task Create Request + LessonCreateRequest: + required: + - courseId + - lessonDate + - teacherId + - title + type: object + properties: + courseId: + type: integer + description: Course ID + format: int64 + classId: + type: integer + description: Class ID + format: int64 + teacherId: + type: integer + description: Teacher ID + format: int64 + title: + type: string + description: Lesson title + lessonDate: + type: string + description: Lesson date + format: date + startTime: + $ref: '#/components/schemas/LocalTime' + endTime: + $ref: '#/components/schemas/LocalTime' + location: + type: string + description: Location + notes: + type: string + description: Notes + description: Lesson Create Request + GrowthRecordCreateRequest: + required: + - studentId + - title + - type + type: object + properties: + studentId: + type: integer + description: Student ID + format: int64 + type: + type: string + description: 'Type: reading, behavior, achievement, milestone' + title: + type: string + description: Title + content: + type: string + description: Content + images: + type: string + description: Images (JSON array) + recordDate: + type: string + description: Record date + format: date + tags: + type: array + description: Tags + items: + type: string + description: Tags + description: Growth Record Create Request + TeacherCreateRequest: + required: + - name + - password + - username + type: object + properties: + username: + type: string + description: Username + password: + type: string + description: Password + name: + type: string + description: Name + phone: + type: string + description: Phone + email: + type: string + description: Email + gender: + type: string + description: Gender + bio: + type: string + description: Bio + description: Teacher Create Request + StudentCreateRequest: + required: + - name + type: object + properties: + name: + type: string + description: Name + gender: + type: string + description: Gender + birthDate: + type: string + description: Birth date + format: date + grade: + type: string + description: Grade + studentNo: + type: string + description: Student number + readingLevel: + type: string + description: Reading level + interests: + type: string + description: Interests + notes: + type: string + description: Notes + description: Student Create Request + ScheduleTemplate: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + name: + type: string + description: + type: string + content: + type: string + isPublic: + type: integer + format: int32 + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + ResultScheduleTemplate: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/ScheduleTemplate' + ParentCreateRequest: + required: + - name + - password + - username + type: object + properties: + username: + type: string + description: Username + password: + type: string + description: Password + name: + type: string + description: Name + phone: + type: string + description: Phone + email: + type: string + description: Email + gender: + type: string + description: Gender + description: Parent Create Request + ClassCreateRequest: + required: + - name + type: object + properties: + name: + type: string + description: Class name + grade: + type: string + description: Grade + description: + type: string + description: Description + capacity: + type: integer + description: Capacity + format: int32 + description: Class Create Request + ResultMapStringString: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: object + additionalProperties: + type: string + LoginRequest: + required: + - password + - username + type: object + properties: + username: + type: string + description: Username + example: admin + password: + type: string + description: Password + example: admin123 + role: + type: string + description: Login role + example: admin + description: Login Request + LoginResponse: + type: object + properties: + token: + type: string + description: JWT Token + userId: + type: integer + description: User ID + format: int64 + username: + type: string + description: Username + name: + type: string + description: User name + role: + type: string + description: User role + tenantId: + type: integer + description: Tenant ID + format: int64 + description: Login Response + ResultLoginResponse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/LoginResponse' + TenantCreateRequest: + required: + - code + - name + type: object + properties: + name: + type: string + description: Tenant name + code: + type: string + description: Tenant code / login account + contactName: + type: string + description: Contact person + contactPhone: + type: string + description: Contact phone + contactEmail: + type: string + description: Contact email + address: + type: string + description: Address + logoUrl: + type: string + description: Logo URL + expireAt: + type: string + description: Expiration date + format: date-time + maxStudents: + type: integer + description: Max students + format: int32 + maxTeachers: + type: integer + description: Max teachers + format: int32 + password: + type: string + description: 'Initial password (default: 123456)' + packageType: + type: string + description: Package type (optional) + startDate: + type: string + description: Start date (optional) + description: Tenant Create Request + CourseCreateRequest: + required: + - name + type: object + properties: + name: + type: string + description: Course name + code: + type: string + description: Course code + description: + type: string + description: Description + coverUrl: + type: string + description: Cover URL + coverImagePath: + type: string + description: Cover image path + category: + type: string + description: Category + ageRange: + type: string + description: Age range + difficultyLevel: + type: string + description: Difficulty level + durationMinutes: + type: integer + description: Duration in minutes + format: int32 + objectives: + type: string + description: Objectives + coreContent: + type: string + description: Core content + introSummary: + type: string + description: Course summary + introHighlights: + type: string + description: Course highlights + introGoals: + type: string + description: Course goals + introSchedule: + type: string + description: Content schedule + introKeyPoints: + type: string + description: Key points and difficulties + introMethods: + type: string + description: Teaching methods + introEvaluation: + type: string + description: Evaluation methods + introNotes: + type: string + description: Notes and precautions + scheduleRefData: + type: string + description: Schedule reference data (JSON) + environmentConstruction: + type: string + description: Environment construction content + themeId: + type: integer + description: Theme ID + format: int64 + pictureBookName: + type: string + description: Picture book name + ebookPaths: + type: string + description: Ebook paths (JSON array) + audioPaths: + type: string + description: Audio paths (JSON array) + videoPaths: + type: string + description: Video paths (JSON array) + otherResources: + type: string + description: Other resources (JSON array) + pptPath: + type: string + description: PPT file path + pptName: + type: string + description: PPT file name + posterPaths: + type: string + description: Poster paths (JSON array) + tools: + type: string + description: Teaching tools (JSON array) + studentMaterials: + type: string + description: Student materials + lessonPlanData: + type: string + description: Lesson plan data (JSON) + activitiesData: + type: string + description: Activities data (JSON) + assessmentData: + type: string + description: Assessment data (JSON) + gradeTags: + type: string + description: Grade tags (JSON array) + domainTags: + type: string + description: Domain tags (JSON array) + hasCollectiveLesson: + type: boolean + description: Has collective lesson + description: Course Create Request + PageResultTask: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Task' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultTask: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultTask' + PageResultSchoolCourse: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/SchoolCourse' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultSchoolCourse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultSchoolCourse' + PageResultSchedulePlan: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/SchedulePlan' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultSchedulePlan: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultSchedulePlan' + Notification: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + title: + type: string + content: + type: string + type: + type: string + senderId: + type: integer + format: int64 + senderRole: + type: string + recipientType: + type: string + recipientId: + type: integer + format: int64 + isRead: + type: integer + format: int32 + readAt: + type: string + format: date-time + createdAt: + type: string + format: date-time + deleted: + type: integer + format: int32 + PageResultNotification: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Notification' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultNotification: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultNotification' + ResultNotification: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/Notification' + ResultLong: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: integer + format: int64 + PageResultLesson: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Lesson' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultLesson: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultLesson' + ResultListLesson: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/Lesson' + PageResultGrowthRecord: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/GrowthRecord' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultGrowthRecord: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultGrowthRecord' + ResultListMapStringObject: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + type: object + additionalProperties: + type: object + PageResultCourse: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Course' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultCourse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultCourse' + ResultListCourseLesson: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/CourseLesson' + ResultListCourse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/Course' + PageResultTeacher: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Teacher' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultTeacher: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultTeacher' + PageResultStudent: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Student' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultStudent: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultStudent' + PageResultScheduleTemplate: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/ScheduleTemplate' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultScheduleTemplate: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultScheduleTemplate' + PageResultParent: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Parent' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultParent: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultParent' + OperationLog: + type: object + properties: + id: + type: integer + format: int64 + tenantId: + type: integer + format: int64 + userId: + type: integer + format: int64 + userRole: + type: string + action: + type: string + module: + type: string + targetType: + type: string + targetId: + type: integer + format: int64 + details: + type: string + ipAddress: + type: string + userAgent: + type: string + createdAt: + type: string + format: date-time + PageResultOperationLog: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/OperationLog' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultOperationLog: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultOperationLog' + PageResultCoursePackage: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/CoursePackage' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultCoursePackage: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultCoursePackage' + PageResultClazz: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Clazz' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultClazz: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultClazz' + ResultListGrowthRecord: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/GrowthRecord' + ResultListStudent: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/Student' + ResultUserInfoResponse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/UserInfoResponse' + UserInfoResponse: + type: object + properties: + id: + type: integer + description: User ID + format: int64 + username: + type: string + description: Username + name: + type: string + description: User name + email: + type: string + description: Email + phone: + type: string + description: Phone + avatarUrl: + type: string + description: Avatar URL + role: + type: string + description: User role + tenantId: + type: integer + description: Tenant ID + format: int64 + description: User Info Response + ResultListTheme: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/Theme' + PageResultTenant: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/Tenant' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultTenant: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultTenant' + ResultListTenantResponse: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/TenantResponse' + TenantResponse: + type: object + properties: + id: + type: integer + description: Tenant ID + format: int64 + name: + type: string + description: Tenant name + loginAccount: + type: string + description: Login account (tenant code) + contactPerson: + type: string + description: Contact person + contactPhone: + type: string + description: Contact phone + contactEmail: + type: string + description: Contact email + address: + type: string + description: Address + logoUrl: + type: string + description: Logo URL + status: + type: string + description: Status + expireDate: + type: string + description: Expiration date + format: date-time + studentQuota: + type: integer + description: Max students / student quota + format: int32 + teacherQuota: + type: integer + description: Max teachers / teacher quota + format: int32 + createdAt: + type: string + description: Created at + format: date-time + description: Tenant Response + ResultListResourceLibrary: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + type: array + items: + $ref: '#/components/schemas/ResourceLibrary' + PageResultResourceItem: + type: object + properties: + total: + type: integer + format: int64 + pageSize: + type: integer + format: int64 + items: + type: array + items: + $ref: '#/components/schemas/ResourceItem' + page: + type: integer + format: int64 + totalPages: + type: integer + format: int64 + ResultPageResultResourceItem: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + data: + $ref: '#/components/schemas/PageResultResourceItem' + securitySchemes: + Bearer: + type: http + scheme: bearer + bearerFormat: JWT +x-openapi: + x-setting: + customCode: 200 + language: zh-CN + enableSwaggerModels: true + swaggerModelName: Swagger Models + enableReloadCacheParameter: false + enableAfterScript: true + enableDocumentManage: true + enableVersion: false + enableRequestCache: true + enableFilterMultipartApis: false + enableFilterMultipartApiMethodType: POST + enableHost: false + enableHostText: '' + enableDynamicParameter: false + enableDebug: true + enableFooter: true + enableFooterCustom: false + enableSearch: true + enableOpenApi: true + enableHomeCustom: false + enableGroup: true + enableResponseCode: true + x-markdownFiles: [] diff --git a/reading-platform-frontend/orval.config.ts b/reading-platform-frontend/orval.config.ts index d1dc048..c8e885d 100644 --- a/reading-platform-frontend/orval.config.ts +++ b/reading-platform-frontend/orval.config.ts @@ -3,9 +3,9 @@ import { defineConfig } from 'orval' export default defineConfig({ readingPlatform: { input: { - // 本地开发:使用下载的规范文件(运行 npm run api:fetch 更新) + // 本地开发:使用下载的规范文件(运行 npm run api:update 更新) // 服务器直连时改为:'http://8.148.151.56:3002/v3/api-docs' - target: './api-spec.json', + target: './api-spec.yml', }, output: { // 自动生成到这个目录,不要手动修改这里的文件 diff --git a/reading-platform-frontend/package.json b/reading-platform-frontend/package.json index 8d35991..8080a57 100644 --- a/reading-platform-frontend/package.json +++ b/reading-platform-frontend/package.json @@ -8,7 +8,7 @@ "build": "vue-tsc && vite build", "preview": "vite preview", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", - "api:fetch": "curl -s http://8.148.151.56:3002/v3/api-docs -o api-spec.json && echo API spec updated", + "api:fetch": "curl -s http://8.148.151.56:3002/v3/api-docs -o api-spec.json && node -e \"const fs=require('fs'),yaml=require('js-yaml'),d=JSON.parse(fs.readFileSync('api-spec.json','utf-8'));fs.writeFileSync('api-spec.yml',yaml.dump(d,{lineWidth:120,noRefs:true}));fs.unlinkSync('api-spec.json');console.log('api-spec.yml updated')\"", "api:gen": "orval --config orval.config.ts", "api:update": "npm run api:fetch && npm run api:gen" },