{"id":"add64a89-18b4-4fb7-baa1-fe8712bda530","task":"Retrieve and process course completion data from an Open edX instance via its REST API","domain":"openedx.org","steps":["Authenticate by obtaining a JWT token from /oauth2/access_token using the client credentials grant with your application's client_id and client_secret registered in the Open edX Django OAuth Toolkit","List courses on the instance with GET /api/courses/v1/courses/?page_size=100, following the next field in the pagination object for subsequent pages","Retrieve course enrollment for a specific user with GET /api/enrollment/v1/enrollment/<username>,<course_id>","Check completion status per block using GET /completion/v1/course_completion/ with query params username and course_key to retrieve block-level completion data","For grades, call GET /api/grades/v1/courses/<course_key>/?username=<username> to retrieve the course grade summary including percent and letter_grade"],"gotchas":["Open edX API endpoints differ between named releases (Maple, Nutmeg, Palm, etc.); an endpoint path valid in one release may be deprecated or moved in another — pin your integration to a specific release version","The completion API tracks XBlock-level completion, not course-level completion; you must aggregate block completions yourself to determine whether a learner has completed the full course","OAuth client credentials must be created by a platform administrator in the LMS Django admin panel; there is no self-service registration endpoint by default in a standard Open edX deployment"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:23.292Z"},"url":"https://mcp.waymark.network/r/add64a89-18b4-4fb7-baa1-fe8712bda530"}