Everything is POST + JSON body — no verb quirks. Learner endpoints (enroll, syllabus, notes, progress, certificate) and admin endpoints (Save, clone, delete, reorder, badge requirements) share the same request/response envelope used everywhere else in the CleenUI API.
Course lifecycle plus the learner-facing course extras: syllabus, notes, next-suggestion, assessment, certificate. Every Academy workflow starts here.
/academy/course/SaveCreate or update an academy course./academy/course/detailGet a single academy course for the course-overview screen./academy/course/filterGet the academy course catalog for the calling user./academy/course/cloneClone an academy course./academy/course/deleteDelete an academy course./academy/course/code-existsCheck whether an academy course code already exists./academy/course/enrollEnroll the calling user in a course./academy/course/syllabusGet an academy course syllabus./academy/course/notesGet course notes./academy/course/suggestionGet the single next-suggested academy course for the calling user./academy/course/assessmentResolve a course’s knowledge-check assessment + latest attempt./academy/course/certificateGet the caller’s certificate for a course.Lesson CRUD, drag-reorder, learner mark-complete, and the progress upsert that powers pick-up-where-you-left-off (resume position + furthest-watched).
/academy/course/lesson/saveCreate or update an academy lesson./academy/course/lesson/detailGet a single lesson for the video-lesson screen./academy/course/lesson/filterGet the lessons for a course./academy/course/lesson/deleteDelete an academy lesson./academy/course/lesson/reorderReorder academy lessons./academy/course/lesson/completeMark a lesson complete for the caller./academy/course/lesson/progress/saveUpsert the caller’s lesson progress (resume + furthest-watched).Chapters group videos within a lesson; media is the video itself. Uploaded media triggers the background transcription worker that produces the VTT file.
/academy/course/lesson/chapter/saveCreate or update an academy chapter./academy/course/lesson/chapter/detailGet a single academy chapter./academy/course/lesson/chapter/filterGet the chapters for a lesson./academy/course/lesson/chapter/deleteDelete an academy chapter./academy/course/lesson/chapter/cloneClone an academy chapter./academy/chapter/media/saveSave academy chapter media.Learner-facing notes pinned to a video timestamp inside a chapter’s media. Auto-pause / auto-resume behavior lives in the player; this is the persistence surface.
/academy/course/chapter/media/notes/saveCreate or update academy lesson notes./academy/course/chapter/media/notes/deleteDelete an academy lesson note.Two credential shapes on the same foundation. Badges are earned via configurable requirements (completion, scoring, engagement); certifications recognize course completion + passing the knowledge check. Both are verifiable publicly.
/academy/badge/saveCreate or update an academy badge./academy/badge/detailGet academy badge details./academy/badge/filterGet the caller’s badges./academy/badge/deleteDelete an academy badge./academy/badge/checkRun the badge-earned evaluation for the calling user./academy/badge/requirement/saveCreate or update a badge requirement./academy/badge/requirement/detailGet a single badge requirement./academy/badge/requirement/filterGet all requirements for a badge./academy/badge/requirement/deleteDelete a badge requirement./academy/certification-pathGet the caller’s overall certification progress./academy/verifyPublicly verify an academy credential (no auth).Book a 30-minute review and we’ll trace any operation end to end — from React component to stored procedure — using your team’s actual use case.