{"service":"STUDENT-PROGRESS-SERVICE","routes":[{"pattern":{"cmd":"routes.discover"}},{"pattern":"enrolment.create_single","method":1,"path":"enrolment/create","authRequired":true,"description":"Create a new single enrolment"},{"pattern":"enrolment.create_bulk","method":1,"path":"enrolment/create-bulk","authRequired":true,"description":"Create bulk enrolments for multiple students and courses"},{"pattern":"enrolment.create_for_cohort","method":1,"path":"enrolment/create-for-cohort","authRequired":true,"permissions":["enrolment.create"],"description":"Create enrolment for cohort"},{"pattern":"enrolment.start_course","method":0,"path":"enrolment/start-course/:course_id","authRequired":true,"description":"Start a course for a student"},{"pattern":"enrolment.get_all","method":0,"path":"enrolment/get-all","authRequired":true,"description":"Get all enrolments with pagination and filters","permissions":["enrolment.read"]},{"pattern":"enrolment.get_one","method":0,"path":"enrolment/get-one/:id","authRequired":true,"description":"Get one enrolment by enrollment id","permissions":["enrolment.read"]},{"pattern":"enrolment.is_active","method":0,"path":"enrolment/is-active/:courseId","authRequired":true,"description":"Check if a student has an active enrolment in a course"},{"pattern":"enrolment.get_enrolment_status_and_content_progress","method":0,"path":"enrolment/get-enrolment-status-and-content-progress","authRequired":true,"description":"Get enrolment status and content progress"},{"pattern":"enrolment.enrolled_students","method":0,"path":"enrolment/enrolled-students/:id","authRequired":true,"description":"Get enrolled students for a course with pagination and optional status filter"},{"pattern":"enrolment.enrolled_students_number","method":0,"path":"enrolment/enrolled-students-number/:id","authRequired":true,"description":"Get number of enrolled students for a course"},{"pattern":"enrolment.find_enrolled_courses","method":0,"path":"enrolment/enrolled-courses","authRequired":true,"description":"Get enrolled courses for a student with optional status filter"},{"pattern":"enrolment.active_enrollment","method":0,"path":"enrolment/active-enrollment","authRequired":true,"description":"Get active enrolments for a student"},{"pattern":"enrolment.active_students","method":0,"path":"enrolment/active-students/:id","authRequired":true,"description":"Get active students for a course"},{"pattern":"enrolment.enrollment_id","method":0,"path":"enrolment/enrollment-id/:courseId","authRequired":true,"description":"Get enrollment ID for a student in a course"},{"pattern":"enrolment.update","method":4,"path":"enrolment/update/:id","authRequired":true,"description":"Update an enrolment by ID","permissions":["enrolment.write"]},{"pattern":"enrolment.delete","method":3,"path":"enrolment/delete/:id","authRequired":true,"description":"Delete an enrolment by ID","permissions":["enrolment.delete"]},{"pattern":"enrolment.last_interaction","method":0,"path":"enrolment/last-interaction","authRequired":true,"description":"Get last interaction for a student"},{"pattern":"enrolment.update_last_interaction","method":4,"path":"enrolment/update-last-interaction/:id","authRequired":true,"description":"Update last interaction for an enrolment"},{"pattern":"enrolment.get_enrolments_by_group","method":0,"path":"enrolment/get-enrolments-by-group/:groupid","authRequired":true,"description":"Get enrolments by Group ID for a student"},{"pattern":"enrolment.get_enrolments_by_subscription","method":0,"path":"enrolment/get-enrolments-by-subscription/:subscriptionid/:groupid","authRequired":true,"description":"Get enrolments by Subscription ID and Group ID"},{"pattern":"enrolment.expire_by_subscription"},{"pattern":"student_progress.create","method":1,"path":"student-progress/start","authRequired":true,"description":"Create student progress when starting content"},{"pattern":"student_progress.complete_progress","method":1,"path":"student-progress/complete-progress","authRequired":true,"description":"Set content as completed for a student progress"},{"pattern":"student_progress.update_progress","method":4,"path":"student-progress/update-progres","authRequired":true,"description":"Update student progress details"},{"pattern":"student_progress.get_progress_by_structure_or_content","method":0,"path":"student-progress/get-progress-by-structure-or-content","authRequired":true,"description":"Get student progress by enrolment id along with structure id or content id"},{"pattern":"student_progress.report_by_date_range","method":0,"path":"student-progress/report-by-date-range","authRequired":true,"description":"Get student progress report by date range"},{"pattern":"student_progress.report_by_date_range_advanced_unit","method":0,"path":"student-progress/report-by-date-range-advanced-unit","authRequired":true,"description":"Get advanced student progress report by date range organized by unit"},{"pattern":"student_progress.progress_highlight","method":0,"path":"student-progress/progress-highlight/:course_id","authRequired":true,"description":"Get progress highlight for a student in a course"},{"pattern":"student_progress.student_overall_progress","method":0,"path":"student-progress/student-overall-progress","authRequired":true,"description":"Get overall progress for a student"},{"pattern":"student_progress.get_content_last_time","method":0,"path":"student-progress/get-content-last-time","authRequired":true,"description":"Get last interacted time for multiple contents for a student"},{"pattern":"student_progress.send_quiz_result","method":1,"path":"student-progress/send-quiz-result","authRequired":true,"description":"Accept quiz result and update student progress accordingly"},{"pattern":"student_progress.progress_highlight","method":0,"path":"student-progress/recent-progress/:course_id","authRequired":true,"description":"Get progress highlight for a student in a course"},{"pattern":"certification.issue","method":1,"path":"certification/issue/:enrolmentId","authRequired":true,"description":"Issue certificate for a given enrolment ID"},{"pattern":"certification.get_by_id","method":0,"path":"certification/:id","authRequired":true,"description":"Get certificate by ID"},{"pattern":"certification.get_by_enrolment","method":0,"path":"certification/enrolment/:enrolmentId","authRequired":true,"description":"Get certificate by Enrolment ID"},{"pattern":"certification.verify","method":0,"path":"certification/verify/:code","authRequired":false,"description":"Verify certificate by code"},{"pattern":"certification.download_pdf","method":0,"path":"certification/:id/pdf","authRequired":false,"description":"Download certificate PDF by certificate ID"},{"pattern":"enrolment_observer.create","method":1,"path":"enrolment-observer/assign-observer/:id","authRequired":true,"description":"Assign observer to an enrolment by enrolment ID"},{"pattern":"enrolment_observer.assign_student","method":1,"path":"enrolment-observer/assign-observer/student/:studentId","authRequired":true,"description":"Assign observer to a student (observes all enrolments)"},{"pattern":"enrolment_observer.get_students","method":0,"path":"enrolment-observer/observer/:observerId/students","authRequired":true,"description":"List all students observed by a user"},{"pattern":"enrolment_observer.get","method":0,"path":"enrolment-observer/observer/:observerId/enrolments","authRequired":true,"description":"List all enrolments observed by a user"},{"pattern":"enrolment_observer.get_one","method":0,"path":"enrolment-observer/observer/:observerId/enrolment/:enrolmentId/report","authRequired":true,"description":"Get detailed observer report for an enrolment with smart status"},{"pattern":"enrolment_observer.delete","method":3,"path":"enrolment-observer/observer/:observerId/enrolment/:enrolmentId","authRequired":true,"description":"Remove observer from an enrolment"},{"pattern":"analytics.predict_completion_date","method":0,"path":"analytics/completion-prediction/:course_id","authRequired":true,"description":"Predict completion date for a student in a course"},{"pattern":"analytics.get_recommended_content","method":0,"path":"analytics/recommended-content/:course_id","authRequired":true,"description":"Get recommended content for a student in a course"},{"pattern":"analytics.get_learning_velocity","method":0,"path":"analytics/learning-velocity/:course_id","authRequired":true,"description":"Get learning velocity for a student in a course"},{"pattern":"analytics.get_consistency_streaks","method":0,"path":"analytics/consistency-streaks/:course_id","authRequired":true,"description":"Get consistency streaks for a student in a course"},{"pattern":"analytics.get_consistent_streak","method":0,"path":"analytics/consistent-streak","authRequired":true,"description":"Get consistent streak for a student"},{"pattern":"analytics.get_dropoff_detection","method":0,"path":"analytics/drop-off-detection/:course_id","authRequired":true,"description":"Get drop-off detection for a course"},{"pattern":"analytics.get_learning_path_visualization","method":0,"path":"analytics/learning-path/:course_id","authRequired":true,"description":"Get learning path visualization for a student in a course"},{"pattern":"analytics.get_group_leaderboard","method":0,"path":"analytics/leaderboard/:group_id","authRequired":true,"description":"Get group leaderboard"},{"pattern":"analytics.get_course_dashboard","method":0,"path":"analytics/course-dashboard/:course_id","authRequired":true,"description":"Get course dashboard"},{"pattern":"analytics.get_student_clusters","method":0,"path":"analytics/student-clusters/:course_id","authRequired":true,"description":"Get student clusters for a course"},{"pattern":"analytics.get_personalized_insights","method":0,"path":"analytics/personalized-insights/:course_id","authRequired":true,"description":"Get personalized insights for a student in a course"},{"pattern":"analytics.get_top_performers","method":0,"path":"analytics/top-performers/:course_id","authRequired":true,"description":"Get top performers for a course"},{"pattern":"analytics.get_top_groups","method":0,"path":"analytics/top-groups","authRequired":true,"description":"Get top groups"},{"pattern":"student_notes.create","method":1,"path":"student-notes/create","authRequired":true,"description":"Create a new student note"},{"pattern":"student_notes.get_all","method":0,"path":"student-notes/get-all","authRequired":true,"description":"Get all student notes with filters"},{"pattern":"student_notes.get_by_id","method":0,"path":"student-notes/get-one/:id","authRequired":true,"description":"Get a single student note by ID"},{"pattern":"student_notes.update","method":4,"path":"student-notes/update/:id","authRequired":true,"description":"Update a student note"},{"pattern":"student_notes.delete","method":3,"path":"student-notes/delete/:id","authRequired":true,"description":"Delete a student note"},{"pattern":"student_notes.clean_all_notes","method":3,"path":"student-notes/clean-my-notes","authRequired":true,"description":"Delete all student notes"}]}
{"service":"STUDENT-PROGRESS-SERVICE","routes":[{"pattern":{"cmd":"routes.discover"}},{"pattern":"enrolment.create_single","method":1,"path":"enrolment/create","authRequired":true,"description":"Create a new single enrolment"},{"pattern":"enrolment.create_bulk","method":1,"path":"enrolment/create-bulk","authRequired":true,"description":"Create bulk enrolments for multiple students and courses"},{"pattern":"enrolment.create_for_cohort","method":1,"path":"enrolment/create-for-cohort","authRequired":true,"permissions":["enrolment.create"],"description":"Create enrolment for cohort"},{"pattern":"enrolment.start_course","method":0,"path":"enrolment/start-course/:course_id","authRequired":true,"description":"Start a course for a student"},{"pattern":"enrolment.get_all","method":0,"path":"enrolment/get-all","authRequired":true,"description":"Get all enrolments with pagination and filters","permissions":["enrolment.read"]},{"pattern":"enrolment.get_one","method":0,"path":"enrolment/get-one/:id","authRequired":true,"description":"Get one enrolment by enrollment id","permissions":["enrolment.read"]},{"pattern":"enrolment.is_active","method":0,"path":"enrolment/is-active/:courseId","authRequired":true,"description":"Check if a student has an active enrolment in a course"},{"pattern":"enrolment.get_enrolment_status_and_content_progress","method":0,"path":"enrolment/get-enrolment-status-and-content-progress","authRequired":true,"description":"Get enrolment status and content progress"},{"pattern":"enrolment.enrolled_students","method":0,"path":"enrolment/enrolled-students/:id","authRequired":true,"description":"Get enrolled students for a course with pagination and optional status filter"},{"pattern":"enrolment.enrolled_students_number","method":0,"path":"enrolment/enrolled-students-number/:id","authRequired":true,"description":"Get number of enrolled students for a course"},{"pattern":"enrolment.find_enrolled_courses","method":0,"path":"enrolment/enrolled-courses","authRequired":true,"description":"Get enrolled courses for a student with optional status filter"},{"pattern":"enrolment.active_enrollment","method":0,"path":"enrolment/active-enrollment","authRequired":true,"description":"Get active enrolments for a student"},{"pattern":"enrolment.active_students","method":0,"path":"enrolment/active-students/:id","authRequired":true,"description":"Get active students for a course"},{"pattern":"enrolment.enrollment_id","method":0,"path":"enrolment/enrollment-id/:courseId","authRequired":true,"description":"Get enrollment ID for a student in a course"},{"pattern":"enrolment.update","method":4,"path":"enrolment/update/:id","authRequired":true,"description":"Update an enrolment by ID","permissions":["enrolment.write"]},{"pattern":"enrolment.delete","method":3,"path":"enrolment/delete/:id","authRequired":true,"description":"Delete an enrolment by ID","permissions":["enrolment.delete"]},{"pattern":"enrolment.last_interaction","method":0,"path":"enrolment/last-interaction","authRequired":true,"description":"Get last interaction for a student"},{"pattern":"enrolment.update_last_interaction","method":4,"path":"enrolment/update-last-interaction/:id","authRequired":true,"description":"Update last interaction for an enrolment"},{"pattern":"enrolment.get_enrolments_by_group","method":0,"path":"enrolment/get-enrolments-by-group/:groupid","authRequired":true,"description":"Get enrolments by Group ID for a student"},{"pattern":"enrolment.get_enrolments_by_subscription","method":0,"path":"enrolment/get-enrolments-by-subscription/:subscriptionid/:groupid","authRequired":true,"description":"Get enrolments by Subscription ID and Group ID"},{"pattern":"enrolment.expire_by_subscription"},{"pattern":"student_progress.create","method":1,"path":"student-progress/start","authRequired":true,"description":"Create student progress when starting content"},{"pattern":"student_progress.complete_progress","method":1,"path":"student-progress/complete-progress","authRequired":true,"description":"Set content as completed for a student progress"},{"pattern":"student_progress.update_progress","method":4,"path":"student-progress/update-progres","authRequired":true,"description":"Update student progress details"},{"pattern":"student_progress.get_progress_by_structure_or_content","method":0,"path":"student-progress/get-progress-by-structure-or-content","authRequired":true,"description":"Get student progress by enrolment id along with structure id or content id"},{"pattern":"student_progress.report_by_date_range","method":0,"path":"student-progress/report-by-date-range","authRequired":true,"description":"Get student progress report by date range"},{"pattern":"student_progress.report_by_date_range_advanced_unit","method":0,"path":"student-progress/report-by-date-range-advanced-unit","authRequired":true,"description":"Get advanced student progress report by date range organized by unit"},{"pattern":"student_progress.progress_highlight","method":0,"path":"student-progress/progress-highlight/:course_id","authRequired":true,"description":"Get progress highlight for a student in a course"},{"pattern":"student_progress.student_overall_progress","method":0,"path":"student-progress/student-overall-progress","authRequired":true,"description":"Get overall progress for a student"},{"pattern":"student_progress.get_content_last_time","method":0,"path":"student-progress/get-content-last-time","authRequired":true,"description":"Get last interacted time for multiple contents for a student"},{"pattern":"student_progress.send_quiz_result","method":1,"path":"student-progress/send-quiz-result","authRequired":true,"description":"Accept quiz result and update student progress accordingly"},{"pattern":"student_progress.progress_highlight","method":0,"path":"student-progress/recent-progress/:course_id","authRequired":true,"description":"Get progress highlight for a student in a course"},{"pattern":"certification.issue","method":1,"path":"certification/issue/:enrolmentId","authRequired":true,"description":"Issue certificate for a given enrolment ID"},{"pattern":"certification.get_by_id","method":0,"path":"certification/:id","authRequired":true,"description":"Get certificate by ID"},{"pattern":"certification.get_by_enrolment","method":0,"path":"certification/enrolment/:enrolmentId","authRequired":true,"description":"Get certificate by Enrolment ID"},{"pattern":"certification.verify","method":0,"path":"certification/verify/:code","authRequired":false,"description":"Verify certificate by code"},{"pattern":"certification.download_pdf","method":0,"path":"certification/:id/pdf","authRequired":false,"description":"Download certificate PDF by certificate ID"},{"pattern":"enrolment_observer.create","method":1,"path":"enrolment-observer/assign-observer/:id","authRequired":true,"description":"Assign observer to an enrolment by enrolment ID"},{"pattern":"enrolment_observer.assign_student","method":1,"path":"enrolment-observer/assign-observer/student/:studentId","authRequired":true,"description":"Assign observer to a student (observes all enrolments)"},{"pattern":"enrolment_observer.get_students","method":0,"path":"enrolment-observer/observer/:observerId/students","authRequired":true,"description":"List all students observed by a user"},{"pattern":"enrolment_observer.get","method":0,"path":"enrolment-observer/observer/:observerId/enrolments","authRequired":true,"description":"List all enrolments observed by a user"},{"pattern":"enrolment_observer.get_one","method":0,"path":"enrolment-observer/observer/:observerId/enrolment/:enrolmentId/report","authRequired":true,"description":"Get detailed observer report for an enrolment with smart status"},{"pattern":"enrolment_observer.delete","method":3,"path":"enrolment-observer/observer/:observerId/enrolment/:enrolmentId","authRequired":true,"description":"Remove observer from an enrolment"},{"pattern":"analytics.predict_completion_date","method":0,"path":"analytics/completion-prediction/:course_id","authRequired":true,"description":"Predict completion date for a student in a course"},{"pattern":"analytics.get_recommended_content","method":0,"path":"analytics/recommended-content/:course_id","authRequired":true,"description":"Get recommended content for a student in a course"},{"pattern":"analytics.get_learning_velocity","method":0,"path":"analytics/learning-velocity/:course_id","authRequired":true,"description":"Get learning velocity for a student in a course"},{"pattern":"analytics.get_consistency_streaks","method":0,"path":"analytics/consistency-streaks/:course_id","authRequired":true,"description":"Get consistency streaks for a student in a course"},{"pattern":"analytics.get_consistent_streak","method":0,"path":"analytics/consistent-streak","authRequired":true,"description":"Get consistent streak for a student"},{"pattern":"analytics.get_dropoff_detection","method":0,"path":"analytics/drop-off-detection/:course_id","authRequired":true,"description":"Get drop-off detection for a course"},{"pattern":"analytics.get_learning_path_visualization","method":0,"path":"analytics/learning-path/:course_id","authRequired":true,"description":"Get learning path visualization for a student in a course"},{"pattern":"analytics.get_group_leaderboard","method":0,"path":"analytics/leaderboard/:group_id","authRequired":true,"description":"Get group leaderboard"},{"pattern":"analytics.get_course_dashboard","method":0,"path":"analytics/course-dashboard/:course_id","authRequired":true,"description":"Get course dashboard"},{"pattern":"analytics.get_student_clusters","method":0,"path":"analytics/student-clusters/:course_id","authRequired":true,"description":"Get student clusters for a course"},{"pattern":"analytics.get_personalized_insights","method":0,"path":"analytics/personalized-insights/:course_id","authRequired":true,"description":"Get personalized insights for a student in a course"},{"pattern":"analytics.get_top_performers","method":0,"path":"analytics/top-performers/:course_id","authRequired":true,"description":"Get top performers for a course"},{"pattern":"analytics.get_top_groups","method":0,"path":"analytics/top-groups","authRequired":true,"description":"Get top groups"},{"pattern":"student_notes.create","method":1,"path":"student-notes/create","authRequired":true,"description":"Create a new student note"},{"pattern":"student_notes.get_all","method":0,"path":"student-notes/get-all","authRequired":true,"description":"Get all student notes with filters"},{"pattern":"student_notes.get_by_id","method":0,"path":"student-notes/get-one/:id","authRequired":true,"description":"Get a single student note by ID"},{"pattern":"student_notes.update","method":4,"path":"student-notes/update/:id","authRequired":true,"description":"Update a student note"},{"pattern":"student_notes.delete","method":3,"path":"student-notes/delete/:id","authRequired":true,"description":"Delete a student note"},{"pattern":"student_notes.clean_all_notes","method":3,"path":"student-notes/clean-my-notes","authRequired":true,"description":"Delete all student notes"}]}
{"service":"STRUCTURE-SERVICE","routes":[{"pattern":{"cmd":"routes.discover"}},{"pattern":"container_category.create","method":1,"path":"container-category/create","authRequired":true,"permissions":["container_category.write"],"description":"Create Container Category"},{"pattern":"container_category.getAll","method":0,"authRequired":false,"path":"container-category/get-all","description":"Get All Container Categories"},{"pattern":"container_category.getOne","method":0,"authRequired":false,"path":"container-category/get-one/:id","description":"Get One Container Category"},{"pattern":"get_category.findById","method":0,"authRequired":false,"path":"container-category/get-by-category/:categoryId","description":"Get Container Categories by Category ID"},{"pattern":"get_category.findByContainer","method":0,"path":"container-category/container/:id","authRequired":false,"description":"Get Container Categories by Container ID"},{"pattern":"container_category.update","method":2,"path":"container-category/update/:id","authRequired":true,"permissions":["container_category.write"],"description":"Update Container Category"},{"pattern":"container_category.delete","method":3,"path":"container-category/hard-delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Delete Container Category"},{"pattern":"container_category.softDelete","method":4,"path":"container-category/delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Soft Delete Container Category"},{"pattern":"container_category.restore","method":1,"path":"container-category/restore/:id","authRequired":true,"permissions":["container_category.write"],"description":"Restore Container Category"},{"pattern":"subjects.create","method":1,"path":"subjects/create","authRequired":true,"permissions":["subjects.write"],"description":"Create Subject"},{"pattern":"subjects.get_all","method":0,"authRequired":false,"path":"subjects/get-all","description":"Get All Subjects"},{"pattern":"subjects.get_one","method":0,"authRequired":false,"path":"subjects/get-one/:id","description":"Get Subject By ID"},{"pattern":"subjects.update","method":2,"path":"subjects/update/:id","authRequired":true,"permissions":["subjects.write"],"description":"Update Subject"},{"pattern":"subjects.delete","method":3,"path":"subjects/hard-delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Delete Subject"},{"pattern":"subjects.soft_delete","method":2,"path":"subjects/delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Soft Delete Subject"},{"pattern":"subjects.restore","method":1,"path":"subjects/restore/:id","authRequired":true,"permissions":["subjects.write"],"description":"Restore Subject"},{"pattern":"courses.create","method":1,"path":"courses/create","authRequired":true,"permissions":["courses.write"],"description":"Create Course"},{"pattern":"courses.get_all","method":0,"path":"courses/get-all","authRequired":false,"description":"Get all published courses"},{"pattern":"course-structure.get-all-courses-without-filter","method":0,"authRequired":false,"path":"courses/get-all-without-filter","description":"Get all courses without filter (backoffice)"},{"pattern":"courses.publish","method":1,"path":"courses/publish/:id","authRequired":true,"permissions":["courses.write"],"description":"Publish a course"},{"pattern":"courses.unpublish","method":1,"path":"courses/unpublish/:id","authRequired":true,"permissions":["courses.write"],"description":"Unpublish a course"},{"pattern":"courses.get_by_container","method":0,"authRequired":false,"path":"courses/get-by-container/:containerId","description":"Get Courses by Container ID"},{"pattern":"courses.get_by_container_backoffice","method":0,"authRequired":false,"path":"courses/get-by-container-backoffice/:containerId","description":"Get Courses by Container ID (backoffice)"},{"pattern":"courses.get_one","method":0,"authRequired":false,"path":"courses/get-one/:id","description":"Get a course by ID"},{"pattern":"courses.get_many_by_ids","method":0,"authRequired":false,"path":"courses/ids","description":"Get Courses by list of IDs"},{"pattern":"courses.get_container_course_ids","method":0,"path":"courses/container/courseids/:id","authRequired":false,"description":"Get Course IDs by Container ID"},{"pattern":"course-structure.search-courses","method":0,"authRequired":false,"path":"courses/search/:keyword","description":"Search courses by keyword"},{"pattern":"courses.update","method":2,"path":"courses/update/:id","authRequired":true,"permissions":["courses.write"],"description":"Update a course by ID"},{"pattern":"courses.delete","method":3,"path":"courses/hard-delete/:id","authRequired":true,"permissions":["courses.delete"],"description":"Delete a course by ID"},{"pattern":"courses.soft_delete","method":3,"path":"courses/delete/:id","authRequired":true,"permissions":["courses.write"],"description":"Soft delete a course by ID"},{"pattern":"courses.restore","method":1,"path":"courses/restore/:id","authRequired":true,"permissions":["courses.write"],"description":"Restore a course by ID"},{"pattern":"course-structure.get-course-metadata","method":0,"authRequired":false,"path":"courses/metadata","description":"Get course metadata for given course IDs"},{"pattern":"courses.count","method":0,"authRequired":false,"path":"courses/count","description":"Count total number of courses"},{"pattern":"courses.get_by_creator","method":0,"path":"courses/created-by-me","permissions":["courses.read"],"authRequired":true,"description":"Get Courses by Creator ID"},{"pattern":"course-container.get_all","method":0,"authRequired":false,"path":"course-container/get-all","description":"Get All Course Containers"},{"pattern":"course-container.create","method":1,"path":"course-container/create","authRequired":true,"permissions":["course_containers.create"],"description":"Create Course Container"},{"pattern":"course-container.get_one","method":0,"authRequired":false,"path":"course-container/get-one/:id","description":"Get Single Course Container"},{"pattern":"course-container.update","method":2,"path":"course-container/update/:id","authRequired":true,"permissions":["course_containers.write"],"description":"Update Course Container"},{"pattern":"course-container.delete","method":3,"path":"course-container/hard-delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Delete Course Container"},{"pattern":"course-container.soft_delete","method":4,"path":"course-container/delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Soft Delete Course Container"},{"pattern":"course-container.restore","method":1,"path":"course-container/restore/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Restore Course Container"},{"pattern":"course_structure.get_rootid","method":0,"authRequired":false,"path":"course-structure/rootid/:courseid","description":"Get Root Course Structure ID"},{"pattern":"course-structure.get-structure-name","method":0,"authRequired":false,"path":"course-structure/structure-name/:structureId","description":"Get Structure Name"},{"pattern":"course_structure.create_node","method":1,"path":"course-structure/create","authRequired":true,"permissions":["course_structures.write"],"description":"Create Course Structure Node"},{"pattern":"course_structure.create_bulk","method":1,"path":"course-structure/bulk","authRequired":true,"permissions":["course_structures.write"],"description":"Create Bulk Course Structure Nodes"},{"pattern":"course_structure.get_full","method":0,"authRequired":false,"path":"course-structure/course/:courseId","description":"Get Full Course Structure"},{"pattern":"course_structure.get_firstchild","method":0,"authRequired":false,"path":"course-structure/first-level-children/:id","description":"Get First Level Children"},{"pattern":"course_structure.get_twochild","method":0,"authRequired":false,"path":"course-structure/two-level-children/:id","description":"Get Two Level Children"},{"pattern":"course_structure.get_firstchildren_with_contents","method":0,"authRequired":false,"path":"course-structure/first-children-with-contents/:id","description":"Get First Level Children with Contents Metadata"},{"pattern":"course_structure.get_breadcrumb","method":0,"authRequired":false,"path":"course-structure/breadcrumb/:id","description":"Get Breadcrumbs"},{"pattern":"course_structure.get_breadcrumb_only","method":0,"path":"course-structure/breadcrumb-only/:id","authRequired":false,"description":"Get Breadcrumbs without instructor info"},{"pattern":"course_structure.update_node","method":2,"path":"course-structure/update/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Update a node in the course structure"},{"pattern":"course_structure.move_node","method":2,"path":"course-structure/move-node","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node in the course structure"},{"pattern":"course_structure.search_by_title","method":0,"authRequired":false,"path":"course-structure/course/:courseId/search/:title","description":"Search nodes by title within a course"},{"pattern":"course_structure.search_global","method":0,"authRequired":false,"path":"course-structure/search/global/:title","description":"Globally search nodes by title"},{"pattern":"course_structure.get_subtree","method":0,"authRequired":false,"path":"course-structure/subtree/:id","description":"Get subtree from a node"},{"pattern":"course_structure.check_id_exists","method":0,"authRequired":false,"path":"course-structure/check-id-exists/:id","description":"Check if a node ID exists"},{"pattern":"course_structure.check_is_leaf_node","method":0,"authRequired":false,"path":"course-structure/check-is-leaf-node/:id","description":"Check if a node is a leaf node"},{"pattern":"course_structure.delete_structure","method":3,"path":"course-structure/hard-delete/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Delete a node by ID"},{"pattern":"course_structure.soft_delete","method":3,"path":"course-structure/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Soft Delete a node by ID"},{"pattern":"course_structure.restore_structure","method":1,"path":"course-structure/restore/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Restore a node by ID"},{"pattern":"course_structure.flexible_reorder","method":1,"path":"course-structure/flexible-reorder","authRequired":true,"permissions":["course_structures.write"],"description":"Flexible reorder nodes"},{"pattern":"course_structure.reorder_node","method":4,"path":"course-structure/reorder-simple","authRequired":true,"permissions":["course_structures.write"],"description":"Reorder a node"},{"pattern":"course_structure.move_node_with_order","method":4,"path":"course-structure/move","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node with specific order in the course structure"},{"pattern":"course_structure.place_relative_to_sibling","method":2,"path":"course-structure/place-relative","authRequired":true,"permissions":["course_structures.write"],"description":"Place a node relative to a sibling node"},{"pattern":"structure_types.create","method":1,"path":"structure-type/create","authRequired":true,"permissions":["structure_types.write"],"description":"Create Structure Type"},{"pattern":"structure_types.get_all","method":0,"authRequired":false,"path":"structure-type/get-all","description":"Get All Structure Types"},{"pattern":"structure_types.get_by_id","method":0,"authRequired":false,"path":"structure-type/get-one/:id","description":"Get Structure Type By ID"},{"pattern":"structure_types.update","method":2,"path":"structure-type/update/:id","authRequired":true,"permissions":["structure_types.write"],"description":"update structure type"},{"pattern":"structure_types.delete","method":3,"path":"structure-type/hard-delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"delete structure type"},{"pattern":"structure_types.soft_delete","method":3,"path":"structure-type/delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"soft delete structure type"},{"pattern":"structure_types.restore","method":1,"path":"structure-type/restore/:id","authRequired":true,"permissions":["structure_types.write"],"description":"restore structure type"},{"pattern":"create_instructor","method":1,"path":"courses-instructors/create-instructor","authRequired":true,"description":"Create Course Instructor"},{"pattern":"get_all_instructors","method":0,"authRequired":false,"path":"courses-instructors/get-all","description":"Get All Course Instructors"},{"pattern":"get_instructor_by_id","method":0,"authRequired":false,"path":"courses-instructors/get-one/:id","description":"Get Course Instructor by ID"},{"pattern":"assign_to_courses","method":1,"path":"courses-instructors/assign-instructor","authRequired":true,"permissions":["course_instructors.write"],"description":"Assign Instructors to Courses"},{"pattern":"remove_from_courses","method":1,"path":"courses-instructors/remove-from-courses/:instructorId","authRequired":true,"permissions":["course_instructors.write"],"description":"Remove Instructors from Courses"},{"pattern":"delete_instructor","method":3,"path":"courses-instructors/delete/:id","authRequired":true,"permissions":["course_instructors.delete"],"description":"Delete Course Instructor"},{"pattern":"get_instructors_by_course_id","method":0,"authRequired":false,"path":"courses-instructors/get-instructors-by-course/:courseId","description":"Get Instructors by Course ID"},{"pattern":"count_instructors","method":0,"authRequired":false,"path":"courses-instructors/count","description":"Count Course Instructors"},{"pattern":"cohort_courses.create","method":1,"path":"cohort-course/create","description":"Create a new cohort course","authRequired":true},{"pattern":"cohort_courses.findAll","method":0,"path":"cohort-course/get-all","description":"Find all cohort courses with pagination","authRequired":false},{"pattern":"cohort_courses.findOne","method":0,"path":"cohort-course/get-one/:id","description":"Find a single cohort course","authRequired":false},{"pattern":"cohort_courses.update","method":4,"path":"cohort-course/update:id","description":"Update a cohort course","authRequired":true},{"pattern":"cohort_courses.remove","method":3,"path":"cohort-course/delete/:id","description":"Delete a cohort course","authRequired":true}]}
{"service":"STRUCTURE-SERVICE","routes":[{"pattern":{"cmd":"routes.discover"}},{"pattern":"container_category.create","method":1,"path":"container-category/create","authRequired":true,"permissions":["container_category.write"],"description":"Create Container Category"},{"pattern":"container_category.getAll","method":0,"authRequired":false,"path":"container-category/get-all","description":"Get All Container Categories"},{"pattern":"container_category.getOne","method":0,"authRequired":false,"path":"container-category/get-one/:id","description":"Get One Container Category"},{"pattern":"get_category.findById","method":0,"authRequired":false,"path":"container-category/get-by-category/:categoryId","description":"Get Container Categories by Category ID"},{"pattern":"get_category.findByContainer","method":0,"path":"container-category/container/:id","authRequired":false,"description":"Get Container Categories by Container ID"},{"pattern":"container_category.update","method":2,"path":"container-category/update/:id","authRequired":true,"permissions":["container_category.write"],"description":"Update Container Category"},{"pattern":"container_category.delete","method":3,"path":"container-category/hard-delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Delete Container Category"},{"pattern":"container_category.softDelete","method":4,"path":"container-category/delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Soft Delete Container Category"},{"pattern":"container_category.restore","method":1,"path":"container-category/restore/:id","authRequired":true,"permissions":["container_category.write"],"description":"Restore Container Category"},{"pattern":"subjects.create","method":1,"path":"subjects/create","authRequired":true,"permissions":["subjects.write"],"description":"Create Subject"},{"pattern":"subjects.get_all","method":0,"authRequired":false,"path":"subjects/get-all","description":"Get All Subjects"},{"pattern":"subjects.get_one","method":0,"authRequired":false,"path":"subjects/get-one/:id","description":"Get Subject By ID"},{"pattern":"subjects.update","method":2,"path":"subjects/update/:id","authRequired":true,"permissions":["subjects.write"],"description":"Update Subject"},{"pattern":"subjects.delete","method":3,"path":"subjects/hard-delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Delete Subject"},{"pattern":"subjects.soft_delete","method":2,"path":"subjects/delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Soft Delete Subject"},{"pattern":"subjects.restore","method":1,"path":"subjects/restore/:id","authRequired":true,"permissions":["subjects.write"],"description":"Restore Subject"},{"pattern":"courses.create","method":1,"path":"courses/create","authRequired":true,"permissions":["courses.write"],"description":"Create Course"},{"pattern":"courses.get_all","method":0,"path":"courses/get-all","authRequired":false,"description":"Get all published courses"},{"pattern":"course-structure.get-all-courses-without-filter","method":0,"authRequired":false,"path":"courses/get-all-without-filter","description":"Get all courses without filter (backoffice)"},{"pattern":"courses.publish","method":1,"path":"courses/publish/:id","authRequired":true,"permissions":["courses.write"],"description":"Publish a course"},{"pattern":"courses.unpublish","method":1,"path":"courses/unpublish/:id","authRequired":true,"permissions":["courses.write"],"description":"Unpublish a course"},{"pattern":"courses.get_by_container","method":0,"authRequired":false,"path":"courses/get-by-container/:containerId","description":"Get Courses by Container ID"},{"pattern":"courses.get_by_container_backoffice","method":0,"authRequired":false,"path":"courses/get-by-container-backoffice/:containerId","description":"Get Courses by Container ID (backoffice)"},{"pattern":"courses.get_one","method":0,"authRequired":false,"path":"courses/get-one/:id","description":"Get a course by ID"},{"pattern":"courses.get_many_by_ids","method":0,"authRequired":false,"path":"courses/ids","description":"Get Courses by list of IDs"},{"pattern":"courses.get_container_course_ids","method":0,"path":"courses/container/courseids/:id","authRequired":false,"description":"Get Course IDs by Container ID"},{"pattern":"course-structure.search-courses","method":0,"authRequired":false,"path":"courses/search/:keyword","description":"Search courses by keyword"},{"pattern":"courses.update","method":2,"path":"courses/update/:id","authRequired":true,"permissions":["courses.write"],"description":"Update a course by ID"},{"pattern":"courses.delete","method":3,"path":"courses/hard-delete/:id","authRequired":true,"permissions":["courses.delete"],"description":"Delete a course by ID"},{"pattern":"courses.soft_delete","method":3,"path":"courses/delete/:id","authRequired":true,"permissions":["courses.write"],"description":"Soft delete a course by ID"},{"pattern":"courses.restore","method":1,"path":"courses/restore/:id","authRequired":true,"permissions":["courses.write"],"description":"Restore a course by ID"},{"pattern":"course-structure.get-course-metadata","method":0,"authRequired":false,"path":"courses/metadata","description":"Get course metadata for given course IDs"},{"pattern":"courses.count","method":0,"authRequired":false,"path":"courses/count","description":"Count total number of courses"},{"pattern":"courses.get_by_creator","method":0,"path":"courses/created-by-me","permissions":["courses.read"],"authRequired":true,"description":"Get Courses by Creator ID"},{"pattern":"course-container.get_all","method":0,"authRequired":false,"path":"course-container/get-all","description":"Get All Course Containers"},{"pattern":"course-container.create","method":1,"path":"course-container/create","authRequired":true,"permissions":["course_containers.create"],"description":"Create Course Container"},{"pattern":"course-container.get_one","method":0,"authRequired":false,"path":"course-container/get-one/:id","description":"Get Single Course Container"},{"pattern":"course-container.update","method":2,"path":"course-container/update/:id","authRequired":true,"permissions":["course_containers.write"],"description":"Update Course Container"},{"pattern":"course-container.delete","method":3,"path":"course-container/hard-delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Delete Course Container"},{"pattern":"course-container.soft_delete","method":4,"path":"course-container/delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Soft Delete Course Container"},{"pattern":"course-container.restore","method":1,"path":"course-container/restore/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Restore Course Container"},{"pattern":"course_structure.get_rootid","method":0,"authRequired":false,"path":"course-structure/rootid/:courseid","description":"Get Root Course Structure ID"},{"pattern":"course-structure.get-structure-name","method":0,"authRequired":false,"path":"course-structure/structure-name/:structureId","description":"Get Structure Name"},{"pattern":"course_structure.create_node","method":1,"path":"course-structure/create","authRequired":true,"permissions":["course_structures.write"],"description":"Create Course Structure Node"},{"pattern":"course_structure.create_bulk","method":1,"path":"course-structure/bulk","authRequired":true,"permissions":["course_structures.write"],"description":"Create Bulk Course Structure Nodes"},{"pattern":"course_structure.get_full","method":0,"authRequired":false,"path":"course-structure/course/:courseId","description":"Get Full Course Structure"},{"pattern":"course_structure.get_firstchild","method":0,"authRequired":false,"path":"course-structure/first-level-children/:id","description":"Get First Level Children"},{"pattern":"course_structure.get_twochild","method":0,"authRequired":false,"path":"course-structure/two-level-children/:id","description":"Get Two Level Children"},{"pattern":"course_structure.get_firstchildren_with_contents","method":0,"authRequired":false,"path":"course-structure/first-children-with-contents/:id","description":"Get First Level Children with Contents Metadata"},{"pattern":"course_structure.get_breadcrumb","method":0,"authRequired":false,"path":"course-structure/breadcrumb/:id","description":"Get Breadcrumbs"},{"pattern":"course_structure.get_breadcrumb_only","method":0,"path":"course-structure/breadcrumb-only/:id","authRequired":false,"description":"Get Breadcrumbs without instructor info"},{"pattern":"course_structure.update_node","method":2,"path":"course-structure/update/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Update a node in the course structure"},{"pattern":"course_structure.move_node","method":2,"path":"course-structure/move-node","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node in the course structure"},{"pattern":"course_structure.search_by_title","method":0,"authRequired":false,"path":"course-structure/course/:courseId/search/:title","description":"Search nodes by title within a course"},{"pattern":"course_structure.search_global","method":0,"authRequired":false,"path":"course-structure/search/global/:title","description":"Globally search nodes by title"},{"pattern":"course_structure.get_subtree","method":0,"authRequired":false,"path":"course-structure/subtree/:id","description":"Get subtree from a node"},{"pattern":"course_structure.check_id_exists","method":0,"authRequired":false,"path":"course-structure/check-id-exists/:id","description":"Check if a node ID exists"},{"pattern":"course_structure.check_is_leaf_node","method":0,"authRequired":false,"path":"course-structure/check-is-leaf-node/:id","description":"Check if a node is a leaf node"},{"pattern":"course_structure.delete_structure","method":3,"path":"course-structure/hard-delete/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Delete a node by ID"},{"pattern":"course_structure.soft_delete","method":3,"path":"course-structure/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Soft Delete a node by ID"},{"pattern":"course_structure.restore_structure","method":1,"path":"course-structure/restore/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Restore a node by ID"},{"pattern":"course_structure.flexible_reorder","method":1,"path":"course-structure/flexible-reorder","authRequired":true,"permissions":["course_structures.write"],"description":"Flexible reorder nodes"},{"pattern":"course_structure.reorder_node","method":4,"path":"course-structure/reorder-simple","authRequired":true,"permissions":["course_structures.write"],"description":"Reorder a node"},{"pattern":"course_structure.move_node_with_order","method":4,"path":"course-structure/move","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node with specific order in the course structure"},{"pattern":"course_structure.place_relative_to_sibling","method":2,"path":"course-structure/place-relative","authRequired":true,"permissions":["course_structures.write"],"description":"Place a node relative to a sibling node"},{"pattern":"structure_types.create","method":1,"path":"structure-type/create","authRequired":true,"permissions":["structure_types.write"],"description":"Create Structure Type"},{"pattern":"structure_types.get_all","method":0,"authRequired":false,"path":"structure-type/get-all","description":"Get All Structure Types"},{"pattern":"structure_types.get_by_id","method":0,"authRequired":false,"path":"structure-type/get-one/:id","description":"Get Structure Type By ID"},{"pattern":"structure_types.update","method":2,"path":"structure-type/update/:id","authRequired":true,"permissions":["structure_types.write"],"description":"update structure type"},{"pattern":"structure_types.delete","method":3,"path":"structure-type/hard-delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"delete structure type"},{"pattern":"structure_types.soft_delete","method":3,"path":"structure-type/delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"soft delete structure type"},{"pattern":"structure_types.restore","method":1,"path":"structure-type/restore/:id","authRequired":true,"permissions":["structure_types.write"],"description":"restore structure type"},{"pattern":"create_instructor","method":1,"path":"courses-instructors/create-instructor","authRequired":true,"description":"Create Course Instructor"},{"pattern":"get_all_instructors","method":0,"authRequired":false,"path":"courses-instructors/get-all","description":"Get All Course Instructors"},{"pattern":"get_instructor_by_id","method":0,"authRequired":false,"path":"courses-instructors/get-one/:id","description":"Get Course Instructor by ID"},{"pattern":"assign_to_courses","method":1,"path":"courses-instructors/assign-instructor","authRequired":true,"permissions":["course_instructors.write"],"description":"Assign Instructors to Courses"},{"pattern":"remove_from_courses","method":1,"path":"courses-instructors/remove-from-courses/:instructorId","authRequired":true,"permissions":["course_instructors.write"],"description":"Remove Instructors from Courses"},{"pattern":"delete_instructor","method":3,"path":"courses-instructors/delete/:id","authRequired":true,"permissions":["course_instructors.delete"],"description":"Delete Course Instructor"},{"pattern":"get_instructors_by_course_id","method":0,"authRequired":false,"path":"courses-instructors/get-instructors-by-course/:courseId","description":"Get Instructors by Course ID"},{"pattern":"count_instructors","method":0,"authRequired":false,"path":"courses-instructors/count","description":"Count Course Instructors"},{"pattern":"cohort_courses.create","method":1,"path":"cohort-course/create","description":"Create a new cohort course","authRequired":true},{"pattern":"cohort_courses.findAll","method":0,"path":"cohort-course/get-all","description":"Find all cohort courses with pagination","authRequired":false},{"pattern":"cohort_courses.findOne","method":0,"path":"cohort-course/get-one/:id","description":"Find a single cohort course","authRequired":false},{"pattern":"cohort_courses.update","method":4,"path":"cohort-course/update:id","description":"Update a cohort course","authRequired":true},{"pattern":"cohort_courses.remove","method":3,"path":"cohort-course/delete/:id","description":"Delete a cohort course","authRequired":true}]}
{"service":"STRUCTURE-SERVICE","routes":[{"pattern":{"cmd":"routes.discover"}},{"pattern":"container_category.create","method":1,"path":"container-category/create","authRequired":true,"permissions":["container_category.write"],"description":"Create Container Category"},{"pattern":"container_category.getAll","method":0,"authRequired":false,"path":"container-category/get-all","description":"Get All Container Categories"},{"pattern":"container_category.getOne","method":0,"authRequired":false,"path":"container-category/get-one/:id","description":"Get One Container Category"},{"pattern":"get_category.findById","method":0,"authRequired":false,"path":"container-category/get-by-category/:categoryId","description":"Get Container Categories by Category ID"},{"pattern":"get_category.findByContainer","method":0,"path":"container-category/container/:id","authRequired":false,"description":"Get Container Categories by Container ID"},{"pattern":"container_category.update","method":2,"path":"container-category/update/:id","authRequired":true,"permissions":["container_category.write"],"description":"Update Container Category"},{"pattern":"container_category.delete","method":3,"path":"container-category/hard-delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Delete Container Category"},{"pattern":"container_category.softDelete","method":4,"path":"container-category/delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Soft Delete Container Category"},{"pattern":"container_category.restore","method":1,"path":"container-category/restore/:id","authRequired":true,"permissions":["container_category.write"],"description":"Restore Container Category"},{"pattern":"subjects.create","method":1,"path":"subjects/create","authRequired":true,"permissions":["subjects.write"],"description":"Create Subject"},{"pattern":"subjects.get_all","method":0,"authRequired":false,"path":"subjects/get-all","description":"Get All Subjects"},{"pattern":"subjects.get_one","method":0,"authRequired":false,"path":"subjects/get-one/:id","description":"Get Subject By ID"},{"pattern":"subjects.update","method":2,"path":"subjects/update/:id","authRequired":true,"permissions":["subjects.write"],"description":"Update Subject"},{"pattern":"subjects.delete","method":3,"path":"subjects/hard-delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Delete Subject"},{"pattern":"subjects.soft_delete","method":2,"path":"subjects/delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Soft Delete Subject"},{"pattern":"subjects.restore","method":1,"path":"subjects/restore/:id","authRequired":true,"permissions":["subjects.write"],"description":"Restore Subject"},{"pattern":"courses.create","method":1,"path":"courses/create","authRequired":true,"permissions":["courses.write"],"description":"Create Course"},{"pattern":"courses.get_all","method":0,"path":"courses/get-all","authRequired":false,"description":"Get all published courses"},{"pattern":"course-structure.get-all-courses-without-filter","method":0,"authRequired":false,"path":"courses/get-all-without-filter","description":"Get all courses without filter (backoffice)"},{"pattern":"courses.publish","method":1,"path":"courses/publish/:id","authRequired":true,"permissions":["courses.write"],"description":"Publish a course"},{"pattern":"courses.unpublish","method":1,"path":"courses/unpublish/:id","authRequired":true,"permissions":["courses.write"],"description":"Unpublish a course"},{"pattern":"courses.get_by_container","method":0,"authRequired":false,"path":"courses/get-by-container/:containerId","description":"Get Courses by Container ID"},{"pattern":"courses.get_by_container_backoffice","method":0,"authRequired":false,"path":"courses/get-by-container-backoffice/:containerId","description":"Get Courses by Container ID (backoffice)"},{"pattern":"courses.get_one","method":0,"authRequired":false,"path":"courses/get-one/:id","description":"Get a course by ID"},{"pattern":"courses.get_many_by_ids","method":0,"authRequired":false,"path":"courses/ids","description":"Get Courses by list of IDs"},{"pattern":"courses.get_container_course_ids","method":0,"path":"courses/container/courseids/:id","authRequired":false,"description":"Get Course IDs by Container ID"},{"pattern":"course-structure.search-courses","method":0,"authRequired":false,"path":"courses/search/:keyword","description":"Search courses by keyword"},{"pattern":"courses.update","method":2,"path":"courses/update/:id","authRequired":true,"permissions":["courses.write"],"description":"Update a course by ID"},{"pattern":"courses.delete","method":3,"path":"courses/hard-delete/:id","authRequired":true,"permissions":["courses.delete"],"description":"Delete a course by ID"},{"pattern":"courses.soft_delete","method":3,"path":"courses/delete/:id","authRequired":true,"permissions":["courses.write"],"description":"Soft delete a course by ID"},{"pattern":"courses.restore","method":1,"path":"courses/restore/:id","authRequired":true,"permissions":["courses.write"],"description":"Restore a course by ID"},{"pattern":"course-structure.get-course-metadata","method":0,"authRequired":false,"path":"courses/metadata","description":"Get course metadata for given course IDs"},{"pattern":"courses.count","method":0,"authRequired":false,"path":"courses/count","description":"Count total number of courses"},{"pattern":"courses.get_by_creator","method":0,"path":"courses/created-by-me","permissions":["courses.read"],"authRequired":true,"description":"Get Courses by Creator ID"},{"pattern":"course-container.get_all","method":0,"authRequired":false,"path":"course-container/get-all","description":"Get All Course Containers"},{"pattern":"course-container.create","method":1,"path":"course-container/create","authRequired":true,"permissions":["course_containers.create"],"description":"Create Course Container"},{"pattern":"course-container.get_one","method":0,"authRequired":false,"path":"course-container/get-one/:id","description":"Get Single Course Container"},{"pattern":"course-container.update","method":2,"path":"course-container/update/:id","authRequired":true,"permissions":["course_containers.write"],"description":"Update Course Container"},{"pattern":"course-container.delete","method":3,"path":"course-container/hard-delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Delete Course Container"},{"pattern":"course-container.soft_delete","method":4,"path":"course-container/delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Soft Delete Course Container"},{"pattern":"course-container.restore","method":1,"path":"course-container/restore/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Restore Course Container"},{"pattern":"course_structure.get_rootid","method":0,"authRequired":false,"path":"course-structure/rootid/:courseid","description":"Get Root Course Structure ID"},{"pattern":"course-structure.get-structure-name","method":0,"authRequired":false,"path":"course-structure/structure-name/:structureId","description":"Get Structure Name"},{"pattern":"course_structure.create_node","method":1,"path":"course-structure/create","authRequired":true,"permissions":["course_structures.write"],"description":"Create Course Structure Node"},{"pattern":"course_structure.create_bulk","method":1,"path":"course-structure/bulk","authRequired":true,"permissions":["course_structures.write"],"description":"Create Bulk Course Structure Nodes"},{"pattern":"course_structure.get_full","method":0,"authRequired":false,"path":"course-structure/course/:courseId","description":"Get Full Course Structure"},{"pattern":"course_structure.get_firstchild","method":0,"authRequired":false,"path":"course-structure/first-level-children/:id","description":"Get First Level Children"},{"pattern":"course_structure.get_twochild","method":0,"authRequired":false,"path":"course-structure/two-level-children/:id","description":"Get Two Level Children"},{"pattern":"course_structure.get_firstchildren_with_contents","method":0,"authRequired":false,"path":"course-structure/first-children-with-contents/:id","description":"Get First Level Children with Contents Metadata"},{"pattern":"course_structure.get_breadcrumb","method":0,"authRequired":false,"path":"course-structure/breadcrumb/:id","description":"Get Breadcrumbs"},{"pattern":"course_structure.get_breadcrumb_only","method":0,"path":"course-structure/breadcrumb-only/:id","authRequired":false,"description":"Get Breadcrumbs without instructor info"},{"pattern":"course_structure.update_node","method":2,"path":"course-structure/update/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Update a node in the course structure"},{"pattern":"course_structure.move_node","method":2,"path":"course-structure/move-node","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node in the course structure"},{"pattern":"course_structure.search_by_title","method":0,"authRequired":false,"path":"course-structure/course/:courseId/search/:title","description":"Search nodes by title within a course"},{"pattern":"course_structure.search_global","method":0,"authRequired":false,"path":"course-structure/search/global/:title","description":"Globally search nodes by title"},{"pattern":"course_structure.get_subtree","method":0,"authRequired":false,"path":"course-structure/subtree/:id","description":"Get subtree from a node"},{"pattern":"course_structure.check_id_exists","method":0,"authRequired":false,"path":"course-structure/check-id-exists/:id","description":"Check if a node ID exists"},{"pattern":"course_structure.check_is_leaf_node","method":0,"authRequired":false,"path":"course-structure/check-is-leaf-node/:id","description":"Check if a node is a leaf node"},{"pattern":"course_structure.delete_structure","method":3,"path":"course-structure/hard-delete/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Delete a node by ID"},{"pattern":"course_structure.soft_delete","method":3,"path":"course-structure/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Soft Delete a node by ID"},{"pattern":"course_structure.restore_structure","method":1,"path":"course-structure/restore/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Restore a node by ID"},{"pattern":"course_structure.flexible_reorder","method":1,"path":"course-structure/flexible-reorder","authRequired":true,"permissions":["course_structures.write"],"description":"Flexible reorder nodes"},{"pattern":"course_structure.reorder_node","method":4,"path":"course-structure/reorder-simple","authRequired":true,"permissions":["course_structures.write"],"description":"Reorder a node"},{"pattern":"course_structure.move_node_with_order","method":4,"path":"course-structure/move","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node with specific order in the course structure"},{"pattern":"course_structure.place_relative_to_sibling","method":2,"path":"course-structure/place-relative","authRequired":true,"permissions":["course_structures.write"],"description":"Place a node relative to a sibling node"},{"pattern":"structure_types.create","method":1,"path":"structure-type/create","authRequired":true,"permissions":["structure_types.write"],"description":"Create Structure Type"},{"pattern":"structure_types.get_all","method":0,"authRequired":false,"path":"structure-type/get-all","description":"Get All Structure Types"},{"pattern":"structure_types.get_by_id","method":0,"authRequired":false,"path":"structure-type/get-one/:id","description":"Get Structure Type By ID"},{"pattern":"structure_types.update","method":2,"path":"structure-type/update/:id","authRequired":true,"permissions":["structure_types.write"],"description":"update structure type"},{"pattern":"structure_types.delete","method":3,"path":"structure-type/hard-delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"delete structure type"},{"pattern":"structure_types.soft_delete","method":3,"path":"structure-type/delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"soft delete structure type"},{"pattern":"structure_types.restore","method":1,"path":"structure-type/restore/:id","authRequired":true,"permissions":["structure_types.write"],"description":"restore structure type"},{"pattern":"create_instructor","method":1,"path":"courses-instructors/create-instructor","authRequired":true,"description":"Create Course Instructor"},{"pattern":"get_all_instructors","method":0,"authRequired":false,"path":"courses-instructors/get-all","description":"Get All Course Instructors"},{"pattern":"get_instructor_by_id","method":0,"authRequired":false,"path":"courses-instructors/get-one/:id","description":"Get Course Instructor by ID"},{"pattern":"assign_to_courses","method":1,"path":"courses-instructors/assign-instructor","authRequired":true,"permissions":["course_instructors.write"],"description":"Assign Instructors to Courses"},{"pattern":"remove_from_courses","method":1,"path":"courses-instructors/remove-from-courses/:instructorId","authRequired":true,"permissions":["course_instructors.write"],"description":"Remove Instructors from Courses"},{"pattern":"delete_instructor","method":3,"path":"courses-instructors/delete/:id","authRequired":true,"permissions":["course_instructors.delete"],"description":"Delete Course Instructor"},{"pattern":"get_instructors_by_course_id","method":0,"authRequired":false,"path":"courses-instructors/get-instructors-by-course/:courseId","description":"Get Instructors by Course ID"},{"pattern":"count_instructors","method":0,"authRequired":false,"path":"courses-instructors/count","description":"Count Course Instructors"},{"pattern":"cohort_courses.create","method":1,"path":"cohort-course/create","description":"Create a new cohort course","authRequired":true},{"pattern":"cohort_courses.findAll","method":0,"path":"cohort-course/get-all","description":"Find all cohort courses with pagination","authRequired":false},{"pattern":"cohort_courses.findOne","method":0,"path":"cohort-course/get-one/:id","description":"Find a single cohort course","authRequired":false},{"pattern":"cohort_courses.update","method":4,"path":"cohort-course/update:id","description":"Update a cohort course","authRequired":true},{"pattern":"cohort_courses.remove","method":3,"path":"cohort-course/delete/:id","description":"Delete a cohort course","authRequired":true}]}
{"service":"STRUCTURE-SERVICE","routes":[{"pattern":{"cmd":"routes.discover"}},{"pattern":"container_category.create","method":1,"path":"container-category/create","authRequired":true,"permissions":["container_category.write"],"description":"Create Container Category"},{"pattern":"container_category.getAll","method":0,"authRequired":false,"path":"container-category/get-all","description":"Get All Container Categories"},{"pattern":"container_category.getOne","method":0,"authRequired":false,"path":"container-category/get-one/:id","description":"Get One Container Category"},{"pattern":"get_category.findById","method":0,"authRequired":false,"path":"container-category/get-by-category/:categoryId","description":"Get Container Categories by Category ID"},{"pattern":"get_category.findByContainer","method":0,"path":"container-category/container/:id","authRequired":false,"description":"Get Container Categories by Container ID"},{"pattern":"container_category.update","method":2,"path":"container-category/update/:id","authRequired":true,"permissions":["container_category.write"],"description":"Update Container Category"},{"pattern":"container_category.delete","method":3,"path":"container-category/hard-delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Delete Container Category"},{"pattern":"container_category.softDelete","method":4,"path":"container-category/delete/:id","authRequired":true,"permissions":["container_category.delete"],"description":"Soft Delete Container Category"},{"pattern":"container_category.restore","method":1,"path":"container-category/restore/:id","authRequired":true,"permissions":["container_category.write"],"description":"Restore Container Category"},{"pattern":"subjects.create","method":1,"path":"subjects/create","authRequired":true,"permissions":["subjects.write"],"description":"Create Subject"},{"pattern":"subjects.get_all","method":0,"authRequired":false,"path":"subjects/get-all","description":"Get All Subjects"},{"pattern":"subjects.get_one","method":0,"authRequired":false,"path":"subjects/get-one/:id","description":"Get Subject By ID"},{"pattern":"subjects.update","method":2,"path":"subjects/update/:id","authRequired":true,"permissions":["subjects.write"],"description":"Update Subject"},{"pattern":"subjects.delete","method":3,"path":"subjects/hard-delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Delete Subject"},{"pattern":"subjects.soft_delete","method":2,"path":"subjects/delete/:id","authRequired":true,"permissions":["subjects.delete"],"description":"Soft Delete Subject"},{"pattern":"subjects.restore","method":1,"path":"subjects/restore/:id","authRequired":true,"permissions":["subjects.write"],"description":"Restore Subject"},{"pattern":"courses.create","method":1,"path":"courses/create","authRequired":true,"permissions":["courses.write"],"description":"Create Course"},{"pattern":"courses.get_all","method":0,"path":"courses/get-all","authRequired":false,"description":"Get all published courses"},{"pattern":"course-structure.get-all-courses-without-filter","method":0,"authRequired":false,"path":"courses/get-all-without-filter","description":"Get all courses without filter (backoffice)"},{"pattern":"courses.publish","method":1,"path":"courses/publish/:id","authRequired":true,"permissions":["courses.write"],"description":"Publish a course"},{"pattern":"courses.unpublish","method":1,"path":"courses/unpublish/:id","authRequired":true,"permissions":["courses.write"],"description":"Unpublish a course"},{"pattern":"courses.get_by_container","method":0,"authRequired":false,"path":"courses/get-by-container/:containerId","description":"Get Courses by Container ID"},{"pattern":"courses.get_by_container_backoffice","method":0,"authRequired":false,"path":"courses/get-by-container-backoffice/:containerId","description":"Get Courses by Container ID (backoffice)"},{"pattern":"courses.get_one","method":0,"authRequired":false,"path":"courses/get-one/:id","description":"Get a course by ID"},{"pattern":"courses.get_many_by_ids","method":0,"authRequired":false,"path":"courses/ids","description":"Get Courses by list of IDs"},{"pattern":"courses.get_container_course_ids","method":0,"path":"courses/container/courseids/:id","authRequired":false,"description":"Get Course IDs by Container ID"},{"pattern":"course-structure.search-courses","method":0,"authRequired":false,"path":"courses/search/:keyword","description":"Search courses by keyword"},{"pattern":"courses.update","method":2,"path":"courses/update/:id","authRequired":true,"permissions":["courses.write"],"description":"Update a course by ID"},{"pattern":"courses.delete","method":3,"path":"courses/hard-delete/:id","authRequired":true,"permissions":["courses.delete"],"description":"Delete a course by ID"},{"pattern":"courses.soft_delete","method":3,"path":"courses/delete/:id","authRequired":true,"permissions":["courses.write"],"description":"Soft delete a course by ID"},{"pattern":"courses.restore","method":1,"path":"courses/restore/:id","authRequired":true,"permissions":["courses.write"],"description":"Restore a course by ID"},{"pattern":"course-structure.get-course-metadata","method":0,"authRequired":false,"path":"courses/metadata","description":"Get course metadata for given course IDs"},{"pattern":"courses.count","method":0,"authRequired":false,"path":"courses/count","description":"Count total number of courses"},{"pattern":"courses.get_by_creator","method":0,"path":"courses/created-by-me","permissions":["courses.read"],"authRequired":true,"description":"Get Courses by Creator ID"},{"pattern":"course-container.get_all","method":0,"authRequired":false,"path":"course-container/get-all","description":"Get All Course Containers"},{"pattern":"course-container.create","method":1,"path":"course-container/create","authRequired":true,"permissions":["course_containers.create"],"description":"Create Course Container"},{"pattern":"course-container.get_one","method":0,"authRequired":false,"path":"course-container/get-one/:id","description":"Get Single Course Container"},{"pattern":"course-container.update","method":2,"path":"course-container/update/:id","authRequired":true,"permissions":["course_containers.write"],"description":"Update Course Container"},{"pattern":"course-container.delete","method":3,"path":"course-container/hard-delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Delete Course Container"},{"pattern":"course-container.soft_delete","method":4,"path":"course-container/delete/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Soft Delete Course Container"},{"pattern":"course-container.restore","method":1,"path":"course-container/restore/:id","authRequired":true,"permissions":["course_containers.delete"],"description":"Restore Course Container"},{"pattern":"course_structure.get_rootid","method":0,"authRequired":false,"path":"course-structure/rootid/:courseid","description":"Get Root Course Structure ID"},{"pattern":"course-structure.get-structure-name","method":0,"authRequired":false,"path":"course-structure/structure-name/:structureId","description":"Get Structure Name"},{"pattern":"course_structure.create_node","method":1,"path":"course-structure/create","authRequired":true,"permissions":["course_structures.write"],"description":"Create Course Structure Node"},{"pattern":"course_structure.create_bulk","method":1,"path":"course-structure/bulk","authRequired":true,"permissions":["course_structures.write"],"description":"Create Bulk Course Structure Nodes"},{"pattern":"course_structure.get_full","method":0,"authRequired":false,"path":"course-structure/course/:courseId","description":"Get Full Course Structure"},{"pattern":"course_structure.get_firstchild","method":0,"authRequired":false,"path":"course-structure/first-level-children/:id","description":"Get First Level Children"},{"pattern":"course_structure.get_twochild","method":0,"authRequired":false,"path":"course-structure/two-level-children/:id","description":"Get Two Level Children"},{"pattern":"course_structure.get_firstchildren_with_contents","method":0,"authRequired":false,"path":"course-structure/first-children-with-contents/:id","description":"Get First Level Children with Contents Metadata"},{"pattern":"course_structure.get_breadcrumb","method":0,"authRequired":false,"path":"course-structure/breadcrumb/:id","description":"Get Breadcrumbs"},{"pattern":"course_structure.get_breadcrumb_only","method":0,"path":"course-structure/breadcrumb-only/:id","authRequired":false,"description":"Get Breadcrumbs without instructor info"},{"pattern":"course_structure.update_node","method":2,"path":"course-structure/update/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Update a node in the course structure"},{"pattern":"course_structure.move_node","method":2,"path":"course-structure/move-node","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node in the course structure"},{"pattern":"course_structure.search_by_title","method":0,"authRequired":false,"path":"course-structure/course/:courseId/search/:title","description":"Search nodes by title within a course"},{"pattern":"course_structure.search_global","method":0,"authRequired":false,"path":"course-structure/search/global/:title","description":"Globally search nodes by title"},{"pattern":"course_structure.get_subtree","method":0,"authRequired":false,"path":"course-structure/subtree/:id","description":"Get subtree from a node"},{"pattern":"course_structure.check_id_exists","method":0,"authRequired":false,"path":"course-structure/check-id-exists/:id","description":"Check if a node ID exists"},{"pattern":"course_structure.check_is_leaf_node","method":0,"authRequired":false,"path":"course-structure/check-is-leaf-node/:id","description":"Check if a node is a leaf node"},{"pattern":"course_structure.delete_structure","method":3,"path":"course-structure/hard-delete/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Delete a node by ID"},{"pattern":"course_structure.soft_delete","method":3,"path":"course-structure/:id","authRequired":true,"permissions":["course_structures.delete"],"description":"Soft Delete a node by ID"},{"pattern":"course_structure.restore_structure","method":1,"path":"course-structure/restore/:id","authRequired":true,"permissions":["course_structures.write"],"description":"Restore a node by ID"},{"pattern":"course_structure.flexible_reorder","method":1,"path":"course-structure/flexible-reorder","authRequired":true,"permissions":["course_structures.write"],"description":"Flexible reorder nodes"},{"pattern":"course_structure.reorder_node","method":4,"path":"course-structure/reorder-simple","authRequired":true,"permissions":["course_structures.write"],"description":"Reorder a node"},{"pattern":"course_structure.move_node_with_order","method":4,"path":"course-structure/move","authRequired":true,"permissions":["course_structures.write"],"description":"Move a node with specific order in the course structure"},{"pattern":"course_structure.place_relative_to_sibling","method":2,"path":"course-structure/place-relative","authRequired":true,"permissions":["course_structures.write"],"description":"Place a node relative to a sibling node"},{"pattern":"structure_types.create","method":1,"path":"structure-type/create","authRequired":true,"permissions":["structure_types.write"],"description":"Create Structure Type"},{"pattern":"structure_types.get_all","method":0,"authRequired":false,"path":"structure-type/get-all","description":"Get All Structure Types"},{"pattern":"structure_types.get_by_id","method":0,"authRequired":false,"path":"structure-type/get-one/:id","description":"Get Structure Type By ID"},{"pattern":"structure_types.update","method":2,"path":"structure-type/update/:id","authRequired":true,"permissions":["structure_types.write"],"description":"update structure type"},{"pattern":"structure_types.delete","method":3,"path":"structure-type/hard-delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"delete structure type"},{"pattern":"structure_types.soft_delete","method":3,"path":"structure-type/delete/:id","authRequired":true,"permissions":["structure_types.delete"],"description":"soft delete structure type"},{"pattern":"structure_types.restore","method":1,"path":"structure-type/restore/:id","authRequired":true,"permissions":["structure_types.write"],"description":"restore structure type"},{"pattern":"create_instructor","method":1,"path":"courses-instructors/create-instructor","authRequired":true,"description":"Create Course Instructor"},{"pattern":"get_all_instructors","method":0,"authRequired":false,"path":"courses-instructors/get-all","description":"Get All Course Instructors"},{"pattern":"get_instructor_by_id","method":0,"authRequired":false,"path":"courses-instructors/get-one/:id","description":"Get Course Instructor by ID"},{"pattern":"assign_to_courses","method":1,"path":"courses-instructors/assign-instructor","authRequired":true,"permissions":["course_instructors.write"],"description":"Assign Instructors to Courses"},{"pattern":"remove_from_courses","method":1,"path":"courses-instructors/remove-from-courses/:instructorId","authRequired":true,"permissions":["course_instructors.write"],"description":"Remove Instructors from Courses"},{"pattern":"delete_instructor","method":3,"path":"courses-instructors/delete/:id","authRequired":true,"permissions":["course_instructors.delete"],"description":"Delete Course Instructor"},{"pattern":"get_instructors_by_course_id","method":0,"authRequired":false,"path":"courses-instructors/get-instructors-by-course/:courseId","description":"Get Instructors by Course ID"},{"pattern":"count_instructors","method":0,"authRequired":false,"path":"courses-instructors/count","description":"Count Course Instructors"},{"pattern":"cohort_courses.create","method":1,"path":"cohort-course/create","description":"Create a new cohort course","authRequired":true},{"pattern":"cohort_courses.findAll","method":0,"path":"cohort-course/get-all","description":"Find all cohort courses with pagination","authRequired":false},{"pattern":"cohort_courses.findOne","method":0,"path":"cohort-course/get-one/:id","description":"Find a single cohort course","authRequired":false},{"pattern":"cohort_courses.update","method":4,"path":"cohort-course/update:id","description":"Update a cohort course","authRequired":true},{"pattern":"cohort_courses.remove","method":3,"path":"cohort-course/delete/:id","description":"Delete a cohort course","authRequired":true}]}