1.9 KiB
Event Taxonomy
Events use dot-separated past-tense names and versioned payload schemas. Every tenant event includes organization context set by the server, actor context where relevant, occurred time, correlation ID, and causation ID.
Authoring
course.draft_createdcourse.version_publishedtaxonomy.mapping_createdtaxonomy.mapping_confirmed
Learning
course.openedcourse.completedlesson.startedlesson.progressedlesson.completedblock.viewed,block.interacted, andblock.completedvideo.started,video.progressed(25/50/75 milestone), andvideo.completedvideo.replayed,video.skipped, andvideo.exitedassessment.startedandassessment.completedquestion.answeredcomment.created,bookmark.created, andnote.created
The ingestion allow-list is EventTaxonomy::learning() and its current schema version is 1. The server owns organization and learner identity. Clients may supply only a stable event UUID, assignment/content identifiers, occurred time, optional session/correlation/causation identifiers, a bounded payload, and allow-listed device context (platform, formFactor, online, appVersion). Video telemetry reports media position/duration and discrete milestones; it never sends a derived learner score.
Intelligence
assessment.evidence_createdskill.evidence_recordedcapability.recalculation_requestedcapability.score_updatedcapability.snapshot_createdcoverage.metric_updatedskill_gap.detected
Raw events carry stable IDs, not copied taxonomy trees, and are immutable after ingestion. Consumers claim an event using (learning_event_id, processor, processor_version), so retries and late/offline delivery cannot duplicate projections. Derived daily metrics, risks, insights, and attention records stay in separate tables and can be rebuilt from raw events.