Skip to content

v0.10.0 — the second API

Choose a tag to compare

@kurtseifried kurtseifried released this 28 Aug 19:30
· 20 commits to main since this release
1cc4774

The second API. Skilljar has two, and until now this server spoke only to v2.

This release adds V1Backend and the first capability served by it — learner progress:

  • find_learner — look up a learner by email, and get the id both APIs use
  • list_learner_progress — how far a learner has got in every course they are enrolled in
  • get_learner_progress — one learner, one course, on one domain

Why v1 at all

ADR-002 governs it: v2 owns every capability v2 has; v1 is used only for what v2 lacks. No fallback, no dual-routing — and that is now a passing test rather than a rule, asserting the two backends' method sets are disjoint.

Learner progress qualifies. v2's enrolment record carries score, status and dates but no lesson counts, no credits, no re-enrolment history — so "how far through this course is this learner, in lessons" is answerable only through v1.

Two things probing found that Skilljar's v1 document does not say

Per-lesson progress does not exist. The documented endpoint returns 404 on the live API, and so does every alternative route. Both progress tools say "COUNTS ONLY, NOT WHICH LESSONS" so it cannot be mistaken for missing data.

The by-id fetch resolves by the underlying course, not the publication. A course published to two domains returns the wrong one, with a 200 and nothing to indicate a substitution — 53 of one learner's 54 enrolments matched, which is what made it dangerous. get_learner_progress selects from the listing instead.

Configuration

The v1 capabilities need CSA_SKILLJAR_V1_API_KEY — a separate credential from the v2 client id and secret. Without it those three tools report the variable to set, and the whole v2 surface keeps working.

87 tools, 1074 tests. Python 3.10–3.14, Apache-2.0.