Skip to main content

Progress Tracking

Start Session

Initialize a new content session to track progress.
POST /api/logger/contentsession
curl -X POST http://localhost:8080/api/logger/contentsession \
  -H "Content-Type: application/json" \
  -d '{
    "node_id": "content-node-uuid",
    "content_id": "content-uuid",
    "channel_id": "channel-uuid",
    "kind": "video"
  }'

Request Parameters

node_id
string
UUID of the content node (required unless quiz_id is provided)
content_id
string
Content identifier
channel_id
string
Channel UUID
kind
string
Content kind: video, audio, document, exercise, html5, topic
lesson_id
string
UUID of lesson if content is being accessed within a lesson
quiz_id
string
UUID of exam/quiz (alternative to node_id for coach-assigned quizzes)
mastery_model
object
Mastery criterion for exercises (required if kind is “exercise”)
repeat
boolean
Whether to reset previous progress and start fresh (default: false)
course_session_id
string
Course session identifier

Response Fields

session_id
string
Unique session identifier to use for subsequent updates
context
object
Context object with node_id, lesson_id, quiz_id, mastery_level as appropriate
progress
number
Previous progress on this content (0.0 to 1.0)
time_spent
number
Previous time spent in seconds
extra_fields
object
Additional stored data for this resource
complete
boolean
Whether this resource is completed
For exercises/assessments, also returns:
mastery_criterion
object
Mastery criterion to apply
pastattempts
array
Array of recent attempt objects
totalattempts
integer
Total number of previous attempts

Update Session

Update progress for an active session.
PUT /api/logger/contentsession/:session_id
curl -X PUT http://localhost:8080/api/logger/contentsession/session-uuid \
  -H "Content-Type: application/json" \
  -d '{
    "progress_delta": 0.25,
    "time_spent_delta": 30
  }'

Request Parameters

progress_delta
number
Amount to increase progress by (0.0 to 1.0)
progress
number
Set progress to this absolute value (alternative to progress_delta)
time_spent_delta
number
Seconds to add to time spent
extra_fields
object
Complete representation to set extra_fields to
interactions
array
Array of interaction objects for assessment attempts

Interaction Object (for exercises)

item
string
required
Question/item identifier
correct
number
required
Correctness score (0.0 to 1.0)
time_spent
number
required
Time spent on this attempt in seconds
complete
boolean
Whether this attempt is complete (default: false)
answer
object
The answer object
simple_answer
string
Simple string representation of answer
error
boolean
Whether an error occurred (default: false)
hinted
boolean
Whether hints were used (default: false)
replace
boolean
Replace existing attempt with same item (default: false)
id
string
Attempt ID to update (if updating existing attempt)

Response Fields

complete
boolean
Whether the resource is now completed
attempts
array
Array of attempt objects if interactions were included

Content Summary Logs

Content summary logs aggregate all session data for a user and content combination.

Get Total Progress

Get the total progress count for a user across all content.
GET /api/logger/totalcontentprogress/:user_id
curl http://localhost:8080/api/logger/totalcontentprogress/user-uuid

Response

id
string
User UUID
progress
integer
Total count of completed items

Mastery Logs

Mastery logs track attempts at exercises and quizzes.

List Mastery Logs

Retrieve mastery logs with filtering.
GET /api/logger/masterylog
curl "http://localhost:8080/api/logger/masterylog?content=content-uuid&user=user-uuid"

Query Parameters

content
string
required
Filter by content UUID
user
string
required
Filter by user UUID
complete
boolean
Filter by completion status
quiz
boolean
Filter for quiz attempts only (true) or exercise attempts only (false)
facility
string
Filter by facility UUID (superuser only)
classroom
string
Filter by classroom UUID
learner_group
string
Filter by learner group UUID
page_size
integer
Number of results per page

Response Fields

id
string
Mastery log unique identifier
mastery_criterion
object
The mastery criterion being applied
start_timestamp
string
ISO 8601 timestamp when this attempt started
end_timestamp
string
ISO 8601 timestamp of last activity
completion_timestamp
string
ISO 8601 timestamp when mastery was achieved
complete
boolean
Whether mastery has been achieved
correct
integer
Number of correct answers
time_spent
number
Total time spent in seconds

Get Mastery Log Diff

Get the difference between consecutive mastery attempts.
GET /api/logger/masterylog/:index/diff
curl "http://localhost:8080/api/logger/masterylog/0/diff?content=content-uuid&user=user-uuid"

Parameters

The :index parameter specifies which attempt to compare (0 for most recent).

Response

Returns the target attempt with:
diff
object
Object with correct and time_spent differences from previous attempt
attemptlogs
array
Array of attempt logs with diff information

Attempt Logs

Attempt logs track individual question attempts within exercises and quizzes.

List Attempt Logs

Retrieve attempt logs with filtering.
GET /api/logger/attemptlog
curl "http://localhost:8080/api/logger/attemptlog?masterylog=masterylog-uuid"

Query Parameters

masterylog
string
Filter by mastery log UUID
user
string
Filter by user UUID
content
string
Filter by content UUID
item
string
Filter by question/item identifier
complete
boolean
Filter by completion status
mastery_level
integer
Filter by mastery level
page_size
integer
Number of results per page

Response Fields

id
string
Attempt log unique identifier
item
string
Question/item identifier
start_timestamp
string
ISO 8601 timestamp when attempt started
end_timestamp
string
ISO 8601 timestamp of last update
completion_timestamp
string
ISO 8601 timestamp when marked complete
time_spent
number
Time spent in seconds
complete
boolean
Whether attempt is complete
correct
number
Correctness score (0.0 to 1.0)
hinted
boolean
Whether hints were used
answer
object
The submitted answer
simple_answer
string
Simple string answer
interaction_history
array
Array of interaction objects showing answer progression
error
boolean
Whether an error occurred
user
string
User UUID
masterylog
string
Mastery log UUID
sessionlog
string
Session log UUID

Session Logs

Content session logs track individual learning sessions. These are created via the progress tracking endpoints above. Session logs are primarily internal - the main API interaction is through the start/update endpoints.

Mastery Models

Mastery models define how exercises are completed: m_of_n: Complete m out of the last n questions correctly
{
  "type": "m_of_n",
  "m": 3,
  "n": 5
}
num_correct_in_a_row_10: Get 10 correct in a row
{
  "type": "num_correct_in_a_row_10"
}
num_correct_in_a_row_5: Get 5 correct in a row
{
  "type": "num_correct_in_a_row_5"
}
num_correct_in_a_row_3: Get 3 correct in a row
{
  "type": "num_correct_in_a_row_3"
}
num_correct_in_a_row_2: Get 2 correct in a row
{
  "type": "num_correct_in_a_row_2"
}
do_all: Answer all questions
{
  "type": "do_all"
}
quiz: Coach-assigned quiz
{
  "type": "quiz",
  "coach_assigned": true
}

Build docs developers (and LLMs) love