Skip to content

feat: added ol_course_outline plugin#752

Open
zamanafzal wants to merge 10 commits intomainfrom
zafzal/coure-outline-plugin
Open

feat: added ol_course_outline plugin#752
zamanafzal wants to merge 10 commits intomainfrom
zafzal/coure-outline-plugin

Conversation

@zamanafzal
Copy link
Contributor

@zamanafzal zamanafzal commented Mar 6, 2026

What are the relevant tickets?

https://github.com/mitodl/hq/issues/10460

Description (What does it do?)

This PR adds a new Open edX LMS plugin: ol_openedx_course_outline_api.
Exposes a new endpoint: GET /api/course-outline/v0/<course_id>/
Returns a course outline summary per chapter (module id/title), including:
Effort estimation fields (effort_time, effort_activities) from the platform Effort Estimation transformer via the Blocks API
Content counts under each chapter: videos, readings (html), problems, assignments (graded or formatted sequentials), and “app_items” (other leaf blocks)
Excludes staff-only content and content hidden from TOC

Adds 24h caching for the full JSON response with a versioned cache key that also changes when course.course_version changes (so publishing effectively invalidates the cache)

Screenshots (if appropriate):

Screenshot 2026-03-18 at 2 50 20 PM

How can this be tested?

Prereq: Install/enable the plugin in LMS (per repo plugin install guide), restart LMS.
tutor dev exec lms bash
pip install -e /openedx/src/open-edx-plugins/src/ol_openedx_course_outline_api

Manual verification
As a staff user, request:
GET http://local.openedx.io:8000/api/course-outline/v0/<course_id>/
Example course id: course-v1:edX+DemoX+Demo_Course

@zamanafzal zamanafzal force-pushed the zafzal/coure-outline-plugin branch from bb9c3d9 to 4f6b9f1 Compare March 17, 2026 16:26
@zamanafzal zamanafzal marked this pull request as ready for review March 17, 2026 16:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants