xAPI Course Builder Profile (v1.0)

This xAPI Profile defines the statements sent by every course built with xAPI Course Builder:

Profile IRI: https://xapi.com.au/profiles/course-builder
Version IRI: https://xapi.com.au/profiles/course-builder/v1.0

You can download the machine-readable version of the profile here:

Download profile.jsonld (JSON-LD)

Identifying statements

Every statement names this profile version as a category context activity. Video and audio statements also name the ADL Video or Audio Profile.

"context": { "contextActivities": { "category": [
{
    "id": "https://xapi.com.au/profiles/course-builder/v1.0",
    "definition": {
        "type": "http://adlnet.gov/expapi/activities/profile"
    }
}
] } }

Each statement matches exactly one template, by its verb and object activity type. Unless a template says otherwise, every statement also:

Activity ids are built from the course activity id given at launch: …/lesson/{id}, …/section/{id} for assessments, and …/block/{id} for questions, feedback and media.

Statement templates

Extension names are shortened. Hover over one for its full IRI, or see the JSON-LD.

Course and lessons

StatementVerb / activity typeMust include
Course initialized
The learner opened the course.
initialized
course
Common rules only
Course started
The learner started the course for the first time in this registration.
start
course
Common rules only
Course completed
Every lesson viewed and every graded block passed. result.success is whether all graded questions were passed.
completed
course
result.completion = true
Recommended: result.success
Lesson experienced
The learner viewed a lesson. The latest one is read back to resume the course.
experienced
lesson
Common rules only

Questions and assessments

StatementVerb / activity typeMust include
Question answered
Each answer submitted to a question or free-text block. Choice-style responses use the CMI [,] / [.] separators; graded questions also carry result.success.
answered
cmi.interaction
result.response
object.definition.interactionType
Question passed
Sent with question-answered when the answer is correct.
passed
cmi.interaction
result.response
object.definition.interactionType
result.success = true
Question failed
Sent with question-answered when the answer is wrong.
failed
cmi.interaction
result.response
object.definition.interactionType
result.success = false
Assessment passed
A scored assessment section was submitted and met its pass mark (cmi5 masteryscore, 0-1).
passed
assessment
result.success = true
result.completion = true
result.score.scaled
result.score.raw
result.score.max
context.extensions.masteryscore
result.extensions.answers
Assessment failed
A scored assessment section was submitted below its pass mark.
failed
assessment
result.success = false
result.completion = true
result.score.scaled
result.score.raw
result.score.max
context.extensions.masteryscore
result.extensions.answers

Feedback

StatementVerb / activity typeMust include
Feedback rated
A star rating (0-5, half stars) from a feedback block (Feedback Interaction Profile).
rated
feedback
result.score.raw
result.extensions.star-rating
Feedback commented
A written comment from a feedback block, sent before its rating (Feedback Interaction Profile).
commented
feedback
result.response
result.extensions.comment-text

Video

StatementVerb / activity typeMust include
Video initialized
The video player loaded and is ready.
initialized
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
context.extensions.length
Recommended: context.extensions.completion-threshold
Video played
Playback started or resumed.
played
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
result.extensions.time
Recommended: context.extensions.completion-threshold, context.extensions.length
Video paused
Playback paused.
paused
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
context.extensions.length
result.extensions.time
result.extensions.progress
result.extensions.played-segments
Recommended: context.extensions.completion-threshold
Video seeked
The learner moved the playhead.
seeked
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
result.extensions.time-from
result.extensions.time-to
Recommended: context.extensions.completion-threshold, context.extensions.length
Video completed
The learner played enough of the video to meet its completion threshold. At most once per session.
completed
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
context.extensions.length
result.extensions.time
result.extensions.progress
result.extensions.played-segments
result.completion = true
result.duration
Recommended: context.extensions.completion-threshold
Video terminated
The learner left the media; ends the session.
terminated
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
context.extensions.length
result.extensions.time
result.extensions.progress
result.extensions.played-segments
Recommended: context.extensions.completion-threshold
Video interacted
Full screen, volume, speed or captions changed: carries the full-screen + screen-size + video-playback-size, volume, speed, or cc-enabled + cc-subtitle-lang context extensions (Video Profile screenchange, volumechange, closed-captioning).
interacted
video
context.contextActivities.category[*].id includes https://w3id.org/xapi/video
context.extensions.session-id
result.extensions.time
Recommended: context.extensions.completion-threshold

Audio

StatementVerb / activity typeMust include
Audio initialized
The audio player loaded and is ready.
initialized
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
context.extensions.length
Recommended: context.extensions.completion-threshold
Audio played
Playback started or resumed.
played
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
result.extensions.time
Recommended: context.extensions.completion-threshold, context.extensions.length
Audio paused
Playback paused.
paused
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
context.extensions.length
result.extensions.time
result.extensions.progress
result.extensions.played-segments
Recommended: context.extensions.completion-threshold
Audio seeked
The learner moved the playhead.
seeked
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
result.extensions.time-from
result.extensions.time-to
Recommended: context.extensions.completion-threshold, context.extensions.length
Audio completed
The learner played enough of the audio to meet its completion threshold. At most once per session.
completed
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
context.extensions.length
result.extensions.time
result.extensions.progress
result.extensions.played-segments
result.completion = true
result.duration
Recommended: context.extensions.completion-threshold
Audio terminated
The learner left the media; ends the session.
terminated
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
context.extensions.length
result.extensions.time
result.extensions.progress
result.extensions.played-segments
Recommended: context.extensions.completion-threshold
Audio interacted
Volume changed (Audio Profile volumechange).
interacted
audio
context.contextActivities.category[*].id includes https://w3id.org/xapi/audio
context.extensions.session-id
result.extensions.time
context.extensions.volume
Recommended: context.extensions.completion-threshold

Patterns

Concepts defined by this profile

Everything else is reused from other profiles. Verbs:

Activity types:

Per-course profiles

Each exported course package includes its own xapi-profile.jsonld, which contains just the templates and patterns that course's blocks use. Alongside it, xapi-activities.json lists each lesson, assessment and tracked block, with the templates it sends.