ActivityCompletedEvent
Emitted once per activity run when the student completes the activity. Carries completion metrics like questions answered, XP earned, and mastery.Activity metrics
Thegenerated.items array contains completion metrics. Each item has a type (string) and a value (number).
XP earned for this activity. Must follow the 1 XP = 1 focused
minute rule.
Total questions in the activity. Optional, but required if
correctQuestions is provided.Questions answered correctly. Optional, but required if
totalQuestions is provided.Number of new units (lessons) the student mastered during this activity. This is an
incremental count, not a cumulative total. The server sums these values across submissions and
uses them to auto-compute
pctCompleteApp. Optional. See Course
progress for full details.Course completion percentage (0—100). Either passed directly via
pctComplete in the activity
payload, or auto-computed by the server from masteredUnits and
totalLessons. Sent
via generated.extensions.pctCompleteApp. See Course
progress.TimeSpentEvent
Emitted periodically during a session (every 15s by default) and on final flush. Each event covers a bounded time window — how many seconds were active vs inactive.Time metrics
Thegenerated.items array contains time window metrics. Each item has a type (string), a value in seconds (max 86400), and optional fields.
Time categories
Seconds the student was actively engaged (tab visible, not paused).
Seconds the student was inactive (paused or tab hidden).
Seconds classified as non-productive.
Seconds that could not be classified.
Seconds flagged as anomalous behavior.
Per-item fields
Optional sub-classification providing additional detail on the time category.
ISO 8601 timestamp for the start of the time window.
ISO 8601 timestamp for the end of the time window.
Shared structure
Both event types share these top-level fields:Caliper JSON-LD context. Always
"http://purl.imsglobal.org/ctx/caliper/v1p2".Unique event identifier in
urn:uuid:... format."ActivityEvent" for completions, "TimeSpentEvent" for time windows."Completed" for completions, "SpentTime" for time windows.Always
"TimebackProfile".ISO 8601 timestamp of when the event occurred.
The activity context where the event was recorded.
Metrics collection. Shape depends on event type:
- ActivityCompletedEvent
- TimeSpentEvent
Type:
TimebackActivityMetricsCollectionURL identifying the application context (standard Caliper envelope field).
Custom attributes including
runId and courseId for event correlation.Entity representing a particular segment or location within the object.
Entity representing the referring context.
An Organization representing the group context. Can be a URL or an Organization entity object.
The relationship between the actor and the group in terms of roles and status.
The current user session.
If the event occurs within an LTI platform launch, the tool’s LtiSession.
Custom Activities
How the SDK emits these events
Caliper API
Direct Caliper API access for custom event submission