iblai-api-milestone
Read and write an organization's catalog milestones: completion records for courses, resources, programs, and pathways, and skill points scoped to a block, a course, the platform, or a user (with bulk and group updates). Use when querying or recording user progress and skill-point totals.
Auth & conventions
- Base URL:
https://api.iblai.app/dm — these are Data Manager (DM)
endpoints, so the /dm prefix is required; the /api/catalog/milestones/… paths below are appended to it (e.g. https://api.iblai.app/dm/api/catalog/milestones/completions/course/manage/).
- Header:
Authorization: Api-Token $IBLAIAPIKEY on every request.
- Path vars:
{org} = $IBLAIORG (a.k.a. platformkey),
{username} = $IBLAI_USERNAME.
- DELETE is destructive — confirm with the user first.
- Not connected yet? Run
/iblai-api-login first to populate IBLAI_ORG,
IBLAIUSERNAME, and IBLAIAPI_KEY.
Reads
Completions
Course
- GET
/api/catalog/milestones/completions/course/manage/ — retrieve one course completion. Params: courseid, userid. Returns completionpercentage, completed, completiondate, completion_data, grading fields.
- GET
/api/catalog/milestones/completions/course/catalog/ — all course completions for one user, keyed by course id. Params: userid; optional fieldkey (e.g. completionpercentage, completiondata) returns just that field per course.
Resource
- GET
/api/catalog/milestones/completions/resource/manage/ — retrieve one resource completion. Params: resourceid, userid. Returns resourcetype, completionpercentage, completed, completion_data.
Program
- GET
/api/catalog/milestones/completions/program/query/ — query a user's program completion. Params: programkey (required, urlencoded), and one of userid/username. Returns { "count", "completionpercentage" } (completionpercentage is 0.0–1.0).
Pathway
- GET
/api/catalog/milestones/completions/pathway/query/ — query a user's pathway completion. Params: pathwayuuid (required), and one of userid/username. Returns { "count", "completionpercentage" } (completionpercentage is 0.0–1.0).
Skill points
Block
- GET
/api/catalog/milestones/skillpoints/block/ — skill points for a block. Param: blockid (URL-encoded). Returns a { skill: points } map.
Course
- GET
/api/catalog/milestones/skillpoints/course/ — skill points for a course. Param: courseid (URL-encoded). Returns a { skill: points } map.
Platform
- GET
/api/catalog/milestones/skillpoints/platform/ — list platform skill-point records. Params: platformkey (or platformorg) required; optional query, sort (default -id). Returns a paginated { count, nextpage, previouspage, results[] }, each result carrying username, skill, skillid, skill_points.
User
- GET
/api/catalog/milestones/skillpoints/user/ — aggregated skill points for one user. Params: userid/username. Returns a { skill: { coursepoints, blockpoints, platformpoints, totalpoints } } map.
Writes
Completions
Course
- POST
/api/catalog/milestones/completions/course/manage/ — create/update a course completion. Body accepts courseid, userid, and any CourseCompletion field:
``json { "courseid": "course-v1:edX+DemoX+DemoCourse", "userid": 42, "completed": true, "completionpercentage": 95.3 } ``
Resource
- POST
/api/catalog/milestones/completions/resource/manage/ — create/update a resource completion. Body: resourceid (int, required), userid (int, required), optional completed, completionpercentage (0.0–1.0), completiondate, completion_data:
``json { "resourceid": 11, "userid": 42, "completed": true, "completion_percentage": 1.0 } ``
Skill points
Block
- POST
/api/catalog/milestones/skill_points/block/ — set a block's skill points:
``json { "blockid": "block-v1:test+test+test+type@html+block@2d68d2674abb47b5b676e822741acc25", "pointdata": { "test-skill": 4.5, "another-skill": 6.2 } } ``
Course
- POST
/api/catalog/milestones/skill_points/course/ — set a course's skill points:
``json { "courseid": "course-v1:test+test+test", "pointdata": { "test-skill": 63.0, "another-skill": 45.0 } } ``
Platform
- POST
/api/catalog/milestones/skillpoints/platform/ — update a user's platform skill points. Body: username, platformkey, point_data, optional overwrite (default true):
``json { "username": "student1", "platformkey": "test-platform", "pointdata": { "test-skill": 63.0, "another-skill": 45.0 }, "overwrite": false } ``
- DELETE
/api/catalog/milestones/skillpoints/platform/ — delete one platform skill-point record. Params: skillpointid (required), platformkey (or platform_org). Destructive — confirm with the user first.
- POST
/api/catalog/milestones/skillpoints/platform/bulk/ — bulk update platform skill points (platform-admin access). Body: skillpointdata (required; array of per-user entries — each entry takes username/userid, pointdata, optional overwrite), optional top-level platformkey applied to every entry:
``json { "platformkey": "test-platform", "skillpointdata": [ { "username": "student1", "pointdata": { "test-skill": 63.0 }, "overwrite": false }, { "userid": 7, "pointdata": { "skill-1": 31.0 }, "overwrite": false } ] } ``
- POST
/api/catalog/milestones/skillpoints/platform/group/ — update platform skill points for a group. Body: groupid, platformkey, pointdata, optional overwrite:
``json { "groupid": 123, "platformkey": "test-platform", "point_data": { "test-skill": 63.0, "another-skill": 45.0 }, "overwrite": false } ``
Example
Look up a user's course completion:
curl -G \
"https://api.iblai.app/dm/api/catalog/milestones/completions/course/manage/" \
-H "Authorization: Api-Token $IBLAI_API_KEY" \
--data-urlencode "course_id=course-v1:edX+DemoX+Demo_Course" \
--data-urlencode "user_id=10"
Notes
- Id formats: course ids are opaque keys like
course-v1:edX+DemoX+Demo_Course;
block ids like block-v1:test+test+test+type@html+block@<hash>; program keys like program-v1:main+test; pathways use a UUID (pathway_uuid). URL-encode these in query strings (: → %3A, + → %2B, @ → %40).
platformkey is the org key ($IBLAIORG) on the wire for skill-point
operations.
overwrite (default true) on platform/bulk/group updates replaces the
user's existing points for the given skills; set false to merge/add.
- The course
catalog/ read returns all of a single user's course
completions at once; pass field_key to slice out one field per course.
- Platform bulk updates require platform-admin level access.