Events / Alpha / Data Dictionary

Records of what happened, without turning events into results.

This dictionary is generated from the approved Events Alpha architecture, the approved Caliper 1EdTech data dictionary, and the approved Ed-Fi 1EdTech data dictionary. Public Alpha objects are views over Caliper or Ed-Fi base storage unless they are explicit Alpha extensions, with field-level source links and invalid-value rules.

Dictionary Contract

It is a record that something happened. Events feed Results, but most events never become a graded outcome.

Generated 2026-06-09T02:58:27.809Z
System of record.

Events Alpha reads and writes the same platform3 database as Caliper and Ed-Fi 1EdTech. The Alpha names are a facade over approved base persistence, not a second database.

Known architecture follow-up.

EAITD-004 text publishes activitySource.createdAt and activitySource.updatedAt as safe public fields; the architecture alias-map JSON omitted them, so this data dictionary documents them with explicit source links and notes the follow-up.

Architecture

https://platform3-andymontgomery-9773s-projects.vercel.app/events/alpha/architecture/

Base URL

$EVENTS_BASE_URL=https://platform3-andymontgomery-9773s-projects.vercel.app/events/alpha/implementation/api

Upstream dictionaries

Caliper · Ed-Fi

Benchmark studied

https://platform3-24kpiksyo-andymontgomery-9773s-projects.vercel.app/data_dictionary

5-minute Build Contract

For the reviewer job, these are the only keys a client needs to list one student's last 7 days of moments, join People & Orgs as of the moment, and join Content for the lesson touched. The same contract applies to the API path and the raw-DB path.

base URL + joins
Copy this environment line for examples.
EVENTS_BASE_URL="https://platform3-andymontgomery-9773s-projects.vercel.app/events/alpha/implementation/api"
KeyUseValue / joinRuleInvalid when
$EVENTS_BASE_URL Set this before running every cURL example. https://platform3-andymontgomery-9773s-projects.vercel.app/events/alpha/implementation/api Append documented resource paths such as /events or /attendance-events to this canonical implementation URL. Undefined, pointed at the data-dictionary URL, or pointed at the Caliper 1EdTech Sensor API instead of Events Alpha.
Student filter Use event.studentId for the parent/teacher moments dashboard query. GET /events?studentId={studentId} studentId is the resolved People & Orgs student id set by the surface; actorRef is provenance and is not a join key. A query parses actorRef, a URL, or a display name to recover a student.
Temporal join Join People & Orgs using event.happenedAt as the as-of date. pm.begin_date <= e.happened_at::date AND (pm.end_date IS NULL OR pm.end_date >= e.happened_at::date) begin_date NULL rows are not time-locatable and are excluded; end_date NULL rows are active on or after begin_date. A query joins current roster, receivedAt, modifiedSince, or the current school assignment for a historical event.
Content join Join Content through event.contentId only. LEFT JOIN alpha.content_item_view ci ON ci.workspace_id = e.tenant_id AND ci.content_id = e.content_id contentId is the normalized relationship key. objectRef and targetRef are Caliper provenance fields and are not competing Content join keys. A dashboard joins Content by objectRef, targetRef, title, URL, or producer-specific strings.
Kind filter Use event.kind for plain-language filtering. app_opened, content_viewed, video_started, video_scrubbed, hint_requested, question_answered, assessment_started, assessment_submitted, lesson_finished, search_run, feedback_viewed, session_joined kind is a governed Alpha value derived once from typed Caliper eventType/profile/action plus alpha.policy.events.kind_map. A client ships a local kind map, invents a kind, or remaps Caliper tuples differently from the surface.

Raw Source Ingest Contract

Migration-only raw-ingest adapter for production source rows. The caller sends raw TimeBack or Horizons rows in their source shape; Events Alpha performs all mapping, validation, dedupe, descriptor resolution, and Caliper/Ed-Fi materialization server-side.

POST /source-imports
Success rule.

200 OK only after the accepted records are committed and immediately readable through the public Alpha read endpoints. A successful response must include acceptedCount, rejectedCount, materializedCount, and materialized read links. acceptedCount must equal materializedCount for non-dry-run requests; otherwise the import is not successful.

No skill leak.

The caller must not pre-normalize Caliper eventType/profile/action/kind, Ed-Fi descriptors, People & Orgs joins, Content joins, minute buckets, dedupe hashes, or event/result boundaries. If the migration client has to compute those, the surface leaked.

Request fields

FieldTypeMeaningConstraintsExampleInvalid when
sourceSystem
Required
enum The production system that produced the raw records.
Allowed: timeback_production, horizons_sis
Must be one documented source system. NWEA MAP rows are rejected by Events and must be sent to Results. timeback_production Missing, free text, names a test fixture, or names nwea_map / assessment score data that belongs in Results.
adapter
Required
enum The named server-side adapter to run for every record in this import.
Allowed: timeback_learning_event_v1, horizons_attendance_event_v1, horizons_discipline_event_v1
Must match sourceSystem and the source row family. One request uses one adapter so error paths and materialization checks are unambiguous. timeback_learning_event_v1 Missing, not supported for the sourceSystem, or asks Events to ingest Results-owned scores or MAP rows.
importId
Optional
text Caller-supplied idempotency label for the migration run, used only as import evidence and retry correlation.
Allowed: Stable string, 1-120 characters.
If supplied with Idempotency-Key, both must identify the same logical import. It is not a tenant id and not a row id. duke-2025-26-events-a1 Used to route tenant scope, contains PII beyond source-run identity, or changes meaning across retries.
records
Required
array<object> Raw production rows exactly as TimeBack Production or Horizons SIS returns them.
Allowed: 1..1000 source-shaped records per request.
Records are source-shaped: field names, casing, and nested payloads may be producer-native. The server owns normalization before persistence. [{"id":"pf_918271","student_sourced_id":"b6fa...","activity_id":"lesson_482","created_at":"2026-02-12T15:04:03Z"}] Empty, over batch limit, already rewritten into Alpha event objects, or contains secrets/tokens.
dryRun
Optional
boolean Validate and preview adapter decisions without writing rows.
Allowed: true or false; default false.
dryRun=true may return 200 with materializedCount=0 because it intentionally writes nothing. dryRun=false must materialize rows on success. false The caller treats dryRun=true as migrated data or uses dryRun=false with no readable rows.

Named adapters

AdapterAccepts source-shaped rowsServer normalizesMaterializesRejects
timeback_learning_event_v1
timeback_production
Raw TimeBack learning activity / processed-fact event rows that say a student launched an app, viewed content, scrubbed video, requested a hint, answered a question, completed a lesson, started/submitted an assessment, searched, viewed feedback, or joined a session. sourceEventId, eventType, profile, action, kind, actorRef, objectRef, studentId, contentId, orgId, happenedAt, activitySourceId, Caliper envelope, Caliper event, entity links, and alpha.event_extension relationship keys. Rows visible through GET /events and alpha.event_view at public event grain. Assessment scores, MAP rows, mastery facts, XP awards, course completion percentages, or anything that is a durable Results statement.
horizons_attendance_event_v1
horizons_sis
Raw Horizons attendance rows for a student, school/class, date, attendance category, arrival/departure times, and duration. Ed-Fi canonical attendance record, descriptor resolution through the governed Ed-Fi descriptor registry, student/school/class sourcedId links, soft-delete state, and eventDate. Rows visible through GET /attendance-events and alpha.attendance_event_view. Guardians, program participation, transcript grades, discipline rows, or attendance rows whose student sourced_id is unknown to People & Orgs.
horizons_discipline_event_v1
horizons_sis
Raw Horizons discipline incident / student behavior association rows for a student, school, incident date/time, behavior, participation code, and location. Ed-Fi canonical discipline record, governed behavior/location/participation descriptors, redacted narrative handling, soft-delete state, and incidentDate. Rows visible through GET /discipline-events and alpha.discipline_event_view. Transcript/grade records, program participation, guardians, attendance rows, or discipline rows whose student sourced_id is unknown to People & Orgs.

Problem codes

CodeStatusWhenCaller fix
events:validation_failed 400 The request envelope is malformed before adapter semantics run: invalid JSON, missing sourceSystem/adapter/records, empty records, unsupported query/path fields, records over the documented batch limit, tenant header/token mismatch shape, or dryRun not boolean. Fix the request shape. Do not retry unchanged. The response includes requestId, traceId, and fieldErrors[] with safe paths only.
events:adapter_rejected 422 The request envelope is valid but one or more source rows cannot become Events rows: unknown student sourced_id, unknown content/activity reference, unmapped TimeBack activity type, Horizons descriptor not in the governed registry, source row belongs to Results/People & Orgs/Content/Curriculum instead of Events, or source row would require client-side platform logic. Route the source row to the named owning module or fix upstream reference data. Do not pre-normalize around the adapter.
idempotency_conflict 409 The same Idempotency-Key or importId is reused with different records or adapter parameters. Use the original payload for replay or start a new import id/key for a different source cut.

Materialization checks

  • After timeback_learning_event_v1 success, GET /events?studentId={studentId}&modifiedSince={importStartedAt} returns the accepted event ids or the import is failed.
  • After horizons_attendance_event_v1 success, GET /attendance-events?studentId={studentId}&from={firstDate}&to={afterLastDate} returns the accepted attendance ids or the import is failed.
  • After horizons_discipline_event_v1 success, GET /discipline-events?studentId={studentId}&from={firstDate}&to={afterLastDate} returns the accepted discipline ids or the import is failed.
  • HTTP 200 with a Problem body, acceptedCount > materializedCount, or acceptedCount > 0 with zero readable rows is a lying success and fails the raw-ingest gate.

activitySource

The app or service allowed to send activity into Events.

rename + restrict
Module Home
Events
Visibility
public list + detail
Source
caliper.sensor
ITDs
EAITD-004 EAITD-010 EAITD-102 EAITD-112
Primary Key
id
Uniqueness
sourceIri is unique within tenant through caliper.sensor(tenant_id, sensor_iri).

Lifecycle. Created before an app can send events. Active sources can write; paused and retired sources remain for history but cannot create processed events.

Authority. The upstream caliper.sensor row is storage truth. Alpha exposes only safe source identity and lifecycle fields.

Example activitySource object
{
  "id": "2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001",
  "sourceIri": "https://timeback.example.edu/sensors/caliper",
  "name": "TimeBack Caliper Sensor",
  "status": "active",
  "createdAt": "2026-05-24T13:20:00.000Z",
  "updatedAt": "2026-05-24T13:20:00.000Z"
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
id
public
Alpha rename
rename
uuid
Required
NOT NULL after validation.
Stable TimeBack identifier for the app or service that sent activity.
Source: caliper.sensor.sensor_id upstream
Generated by the platform and unique within the database. Do not parse or infer it from sourceIri.
Range: UUID generated by the platform.
Referenced by event.activitySourceId. One activitySource can send many events and event batches. 2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001 Blank, not a UUID, or used as the source credential.
Edge case: Use sourceIri for Caliper provenance and id for API joins and filters.
sourceIri
public
Alpha rename
rename
text
Required
NOT NULL after validation.
The Caliper Sensor IRI kept for provenance and exact 1EdTech traceability.
Source: caliper.sensor.sensor_iri upstream
Must be an absolute IRI and unique within the tenant through the upstream caliper.sensor constraint.
Range: Absolute IRI string; no platform-local aliasing.
Matches Caliper envelope sensor IRI; not a secret and not an authentication token. https://timeback.example.edu/sensors/caliper Empty, not an IRI, duplicated within tenant, or different from the envelope sensor property.
Edge case: If the envelope sensor is an entity object, its id is the sensor IRI used here.
name
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Plain label shown to teachers, support, and app-builder LLMs when identifying which app sent an event.
Source: caliper.sensor.display_name upstream
Required text. Must not contain credentials, tokens, passwords, or student data.
Range: Human-readable text; not part of the Caliper payload.
No direct foreign-key relationship. TimeBack Caliper Sensor Blank, contains a secret, or is treated as a stable API identifier.
Edge case: Changing the display name must not alter sensor_iri or historical envelope ownership.
status
public
Alpha restriction
restrict
text
Required
NOT NULL after validation.
Lifecycle gate that decides whether this source can send new events.
Source: caliper.sensor.status upstream
Must be active, paused, or retired. Only active sources may create processed events.
Range: active, paused, retired.
No direct foreign key; status controls writes through the activitySource resource. active Any value outside active/paused/retired, or accepting writes from a non-active sensor.
Edge case: Paused and retired sensors may still be referenced by historical envelopes.
createdAt
public
Alpha rename
rename
timestamptz
Required
NOT NULL after validation.
When the activity source registration was created.
Source: caliper.sensor.created_at upstream
Set by the platform; never supplied by a sender payload.
Range: UTC timestamp.
No direct foreign-key relationship. 2026-05-24T13:20:00.000Z Missing, not a timestamp, or earlier than tenant creation in a way that breaks audit order.
Edge case: Historical envelopes can predate registration only when imported through an explicit migration path.
updatedAt
public
Alpha rename
rename
timestamptz
Required
NOT NULL after validation.
When the safe registration fields or lifecycle status last changed.
Source: caliper.sensor.updated_at upstream
Set by the platform; must be >= createdAt.
Range: UTC timestamp, monotonically updated per row.
No direct foreign-key relationship. 2026-05-24T13:20:00.000Z Missing, not a timestamp, or older than created_at.
Edge case: Envelope ingest does not update this field; it is for registration lifecycle changes.
credentialRef
internal only
Alpha cut
cut public / internal only
text
Optional
Nullable when the source payload or workflow branch omits it.
Internal pointer to credential material used by operators. It is documented here so reviewers know it is not a public Alpha field.
Source: caliper.sensor.credential_ref upstream
Must never return through public Alpha APIs and must never contain raw secret values.
Range: Opaque reference string to a secrets system, nullable for demo or externally managed credentials.
No direct foreign-key relationship. vercel-env:CALIPER_SENSOR_TIMEBACK Returned to a public caller, stored as a tag, or contains plaintext credentials.
Edge case: The prior workspace used shared_secret_ref; platform3 names this credential_ref to emphasize reference-only storage.
metadata
internal only
Alpha cut
cut public / internal only
jsonb
Required
NOT NULL after validation.
Internal operational metadata for the source registration.
Source: caliper.sensor.metadata upstream
Must not contain secrets or learner data. Not part of the public Alpha activitySource object.
Range: JSON object. Use scalar strings, numbers, booleans, and arrays; do not store raw payloads.
No direct foreign-key relationship. {"owner":"platform-integrations","rotation":"2026-06"} Used as an ungoverned public metadata bag or source of relationship facts.
Edge case: Metadata can support operations but cannot override Caliper sensor_iri or tenant scope.

eventBatch

The transport package that carried one or more event moments into the platform.

rename + cut public detail
Module Home
Events
Visibility
write acknowledgement + internal evidence; no public list/detail
Source
caliper.envelope
ITDs
EAITD-005 EAITD-008 EAITD-101 EAITD-110
Primary Key
internal envelope_id, not public Alpha identity
Uniqueness
Upstream duplicate guard is caliper.envelope(tenant_id, envelope_hash).

Lifecycle. Created on ingest as Caliper envelope evidence. Public Alpha can report safe status in write flows but does not expose raw batch browsing.

Authority. caliper.envelope remains the evidence record; public Alpha cuts raw transport internals.

Example eventBatch object
{
  "sentAt": "2026-05-24T13:21:00.000Z",
  "receivedAt": "2026-05-24T13:21:02.125Z",
  "status": "processed"
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
sentAt
public
Alpha rename
rename
timestamptz
Required
NOT NULL after validation.
When the sending app says it sent the batch.
Source: caliper.envelope.send_time upstream
Comes from the source delivery. Do not use it as platform receipt order.
Range: ISO 8601 timestamp parseable as UTC.
No direct foreign-key relationship. 2026-05-24T13:21:00.000Z Missing, malformed, impossible date, or treated as the platform receipt timestamp.
Edge case: Clock skew is possible; use received_at for platform ordering and send_time for sender evidence.
receivedAt
public
Alpha rename
rename
timestamptz
Required
NOT NULL after validation.
When TimeBack received the batch.
Source: caliper.envelope.received_at upstream
Set by the platform before normalization. Use for modifiedSince polling and operational ordering.
Range: UTC timestamp.
Feeds event.receivedAt for public reads. 2026-05-24T13:21:02.125Z Missing, malformed, or overwritten by sendTime.
Edge case: Duplicate deliveries keep their own receipt evidence without creating a second event row.
status
public
Alpha restriction
rename + restrict
text
Required
NOT NULL after validation.
Processing state for the batch that carried one or more events.
Source: caliper.envelope.envelope_status upstream
Must be received, processed, rejected, or duplicate.
Range: received, processed, rejected, duplicate.
Summarizes upstream envelope processing; no standalone public event-batch list is shipped. processed Outside the enum, processed with no normalized rows for an event envelope, or duplicate with different canonical payload.
Edge case: The prior workspace used superseded; approved platform3 architecture uses duplicate for replay evidence.
rawEnvelope
internal only
Alpha cut
cut public / internal only
jsonb
Required
NOT NULL after validation.
The raw Caliper JSON-LD envelope is preserved upstream for audit, replay, and 1EdTech evidence, but is cut from public Alpha.
Source: caliper.envelope.raw_envelope upstream
Never returned by public Alpha APIs or copied into search indexes, Problems, logs, or examples.
Range: JSON object with sensor, sendTime, dataVersion, and non-empty data array.
No direct foreign-key relationship. {"sensor":"https://timeback.example.edu/sensors/caliper","sendTime":"2026-05-24T13:21:00.000Z","dataVersion":"http://purl.imsglobal.org/ctx/caliper/v1p2","data":[{"type":"AssessmentItemEvent"}]} A public Alpha response includes raw learner payload data.
Edge case: This column can contain learner PII from valid Caliper entities. Do not copy raw values to logs, Problems, audit metadata, public examples, or conformance evidence.

event

One immutable moment in the activity stream.

rename + restrict + extend
Module Home
Events
Visibility
public list + detail, redacted by role and scope
Source
caliper.event plus caliper.envelope and relationship projections
ITDs
EAITD-001 EAITD-002 EAITD-003 EAITD-005 EAITD-006 EAITD-007 EAITD-009 EAITD-010
Primary Key
id
Uniqueness
sourceEventId and canonical event hash are tenant-scoped duplicate guards upstream.

Lifecycle. Accepted through POST /events, normalized through Caliper envelope/event storage, then read through cursor-paged list and detail endpoints. No public PUT, PATCH, or DELETE route mutates accepted events.

Authority. Raw Caliper event remains upstream evidence. Alpha event is the redacted, school-language projection for customers and LLMs.

Example event object
{
  "id": "b9f6dd89-b024-4d1d-a0c5-c923aab41001",
  "sourceEventId": "urn:uuid:11111111-1111-4111-8111-111111111111",
  "kind": "question_answered",
  "studentId": "student-ada-001",
  "contentId": "content-fractions-video-01",
  "activitySourceId": "2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001",
  "happenedAt": "2026-05-24T13:20:42.000Z",
  "receivedAt": "2026-05-24T13:21:02.125Z"
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
id
public
Alpha rename
rename
uuid
Required
NOT NULL after validation.
Stable TimeBack id for one normalized activity-stream moment.
Source: caliper.event.event_row_id upstream
Generated by the platform. Do not confuse with sourceEventId, which is the source-supplied Caliper id.
Range: UUID generated by the platform.
Used by GET /events/{eventId}. One event can have many eventLinks. b9f6dd89-b024-4d1d-a0c5-c923aab41001 Blank, duplicated, not a UUID, or exposed as the Caliper event IRI.
Edge case: Event upserts by event_iri can keep or replace this row depending on implementation, but event_iri is the Caliper identity.
sourceEventId
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Stable id supplied by the source or generated as a Caliper event IRI when Alpha accepts a plain event.
Source: caliper.event.event_iri upstream
Required on normalized events and unique within tenant unless the duplicate is an exact replay.
Range: Non-empty IRI or URN string.
Tenant-scoped natural key inherited from caliper.event.event_iri. urn:uuid:11111111-1111-4111-8111-111111111111 Missing on an accepted event, duplicated with conflicting content, or used as the platform row id.
Edge case: Same event_iri in a different tenant is a different tenant-scoped event.
eventType
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Caliper Event subclass kept for provenance and advanced filters.
Source: caliper.event.event_type upstream
Filterable on GET /events.
Must be one approved Caliper 1.2 Event type. Alpha callers normally filter on kind first.
Range: One Caliper 1.2 event type.
No direct foreign-key relationship. AssessmentItemEvent Unknown event class, entity class in the event type slot, or misspelled/case-changed term.
Edge case: Profile inference uses this field only for normalized projection; raw_event remains unchanged.
profile
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Caliper profile kept for provenance and kind derivation.
Source: caliper.event.profile upstream
Must be compatible with eventType. May be inferred for projection while raw payload remains unchanged.
Range: One Caliper 1.2 profile value.
No direct foreign-key relationship. AssessmentProfile Unknown profile, profile conflicts with event_type, or profile is used to mutate raw_event.
Edge case: When omitted in raw_event, this normalized column can be inferred; raw_event still shows omission.
action
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Typed Caliper action describing what the actor did.
Source: caliper.event.action upstream
Filterable on GET /events.
Must be one approved Caliper 1.2 action. Do not use product-local free-text verbs.
Range: One Caliper 1.2 action value.
No direct foreign-key relationship. Completed Product-local verb, lowercase synonym, unknown action, or an action not valid for the event's semantics.
Edge case: Do not collapse actions into TimeBack-specific verbs on the 1EdTech surface.
kind
public
Alpha extension
extend + restrict
text
Required
NOT NULL after normalization.
Plain, governed event category used by teachers, students, parents, app-builder LLMs, and reports.
Source: caliper.event.event_type + caliper.event.profile + caliper.event.action + alpha.policy.events.kind_map
Inline alpha_event_kind values
  • app_opened — A student, teacher, or app-builder agent opened or launched a learning app. Use when: Use when a ToolLaunchEvent or ToolUseEvent with Launched or Used marks app entry.
  • content_viewed — A student viewed a content item such as an article, page, lesson, image, or question stem. Use when: Use for ViewEvent or ReadingProfile activity where the object resolves to Content.
  • video_started — A student started playing a video content item. Use when: Use for MediaEvent activity with action Started and a video object.
  • video_scrubbed — A student jumped, rewound, skipped, or changed position in a video. Use when: Use for MediaEvent position-changing actions. The exact position is an extension only if governed and non-secret.
  • hint_requested — A student asked for help or requested a hint while working. Use when: Use only when alpha.policy.events.kind_map folds the source event to this canonical kind.
  • question_answered — A student answered an item or question. Use when: Use for item-level assessment activity that marks an answer moment, whether or not a durable score exists yet.
  • assessment_started — A student started an assessment, quiz, placement, or test sitting. Use when: Use when the event starts the attempt but does not by itself settle the score.
  • assessment_submitted — A student submitted an assessment attempt. Use when: Use for the submission moment. The scored outcome belongs in Results.
  • lesson_finished — A student completed or finished a lesson or assignable learning unit. Use when: Use for assignable or resource activity where completion is the event, not the durable grade.
  • search_run — A student, teacher, or app ran a search inside a learning context. Use when: Use for search events where the query text is redacted unless policy allows it.
  • feedback_viewed — A student or teacher viewed feedback. Use when: Use when the moment is seeing feedback, not writing a score or gradebook entry.
  • session_joined — A student joined, logged into, or started a session. Use when: Use for session activity where the event marks participation in a tool or class session.
Filterable on GET /events.
Derived once at write/normalization time. Unknown source tuples are rejected unless alpha.policy.events.kind_map folds them to a canonical value.
Range: One alpha_event_kind value.
No foreign-key relationship; computed from typed Caliper fields and policy config. question_answered Parsed from a display name or URL, invented by a caller outside the registry, or remapped differently by a consumer.
Edge case: Skill packs may filter by kind but must not carry their own kind-map table.
actorRef
public
Alpha rename
rename
jsonb
Required
NOT NULL after validation.
Original Caliper actor reference or redacted actor object for the person, app, or organization that acted.
Source: caliper.event.actor upstream
Returned only as role-scoped redacted projection. Must not be parsed to derive studentId at read time.
Range: JSON string IRI or Caliper entity object.
May project to eventLink.role=actor and, when resolvable, event.studentId. {"id":"https://timeback.example.edu/users/student-1","type":"Person","name":"Ada Learner"} Missing, not an IRI or entity object, lacks id/type, or includes unsupported entity type.
Edge case: May contain direct learner PII. Tenant scope and redaction rules apply.
studentId
public
Alpha extension
extend + restrict
text
Optional
Nullable when the actor is not a student, cannot be resolved, or the caller is not authorized to see the student link.
Plain TimeBack student id when the actor resolves to a known student.
Source: caliper.event.actor + caliper.entity + People & Orgs user
Filterable on GET /events.
Set during write/normalization through a typed relationship lookup as of happenedAt. Never parsed by consumers from actorRef.
Range: Sourced id or platform id from People & Orgs user.
Optionally belongs to one People & Orgs student user. One student can have many events. student-ada-001 Filled from URL parsing, points to a non-student, or points at a People & Orgs row not visible to the tenant/caller.
Edge case: An event can keep actorRef even when studentId is null; unresolved external references are not silently dropped.
objectRef
public
Alpha rename
rename
jsonb
Required
NOT NULL after validation.
Original Caliper object reference or redacted object acted on by the actor.
Source: caliper.event.object upstream
Returned as redacted Caliper provenance. Do not use it for Content joins; use event.contentId after normalization.
Range: JSON string IRI or Caliper entity object.
May project to eventLink.role=object. It can explain why event.contentId was set, but event.contentId is the only public Content join key. {"id":"https://timeback.example.edu/items/fractions-1","type":"AssessmentItem","name":"Fractions check"} Missing, not an IRI or entity object, lacks id/type, or contains unsupported entity type.
Edge case: Object may be an assessment item, resource, message, query, tool, or another Caliper entity.
contentId
public
Alpha extension
extend + restrict
text
Optional
Nullable when the event is not about platform Content, cannot resolve, or the caller lacks access.
The single Content join key for Events: the Content module id when the object or target resolves to a known article, video, question, test, lesson, or other content item.
Source: caliper.event.object + caliper.event.target + Content item
Filterable on GET /events.
Relationship must be set before reads and joined to alpha.content_item_view.content_id. Do not infer it from objectRef, targetRef, content title, URL, or producer-specific string at read time.
Range: Content id from the Content Alpha surface.
Optionally belongs to one Content item. One Content item can be referenced by many Events. content-fractions-video-01 Points to a deleted or inaccessible Content row, is parsed from a title, or is used to store the content object itself.
Edge case: Content effectiveness is not incremented by this field; effectiveness is a derived Content overlay from Results.
appRef
public
Alpha rename
rename
jsonb
Optional
Nullable when the source payload or workflow branch omits it.
App named inside the event, distinct from the activitySource that delivered the event.
Source: caliper.event.ed_app upstream
Optional and redacted. Must not be used as user auth or source credential.
Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.
May project to eventLink.role=edApp. {"id":"https://timeback.example.edu/apps/timeback","type":"SoftwareApplication"} Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.
Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.
activitySourceId
public
Alpha rename
rename
uuid
Optional
Nullable when the source payload or workflow branch omits it.
Registered activity source that delivered the event.
Source: caliper.envelope.sensor_id upstream
Filterable on GET /events.
Must reference an activitySource in the same tenant when present. Paused and retired sources cannot create new processed events.
Range: UUID from caliper.sensor.sensor_id, nullable only for retained rejected evidence where matching failed.
Belongs to one activitySource; one activitySource can deliver many events. 2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001 References a sensor from another tenant, a retired/paused sensor for a processed envelope, or a missing row.
Edge case: Rejected envelopes can keep sensor_iri even when sensor_id is null because registration failed.
groupRef
public
Alpha rename
rename
jsonb
Optional
Nullable when the source payload or workflow branch omits it.
Original Caliper group or cohort context.
Source: caliper.event.group_entity upstream
Optional redacted projection; must not override People & Orgs org truth.
Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.
May project to eventLink.role=group and, when resolvable, event.orgId. {"id":"https://timeback.example.edu/classes/math-3-a","type":"CourseSection"} Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.
Edge case: Database column is group_entity to avoid SQL ambiguity; the public Caliper property remains group.
orgId
public
Alpha extension
extend + restrict
text
Optional
Nullable when no group is present, the group is external, or the row is not time-locatable.
People & Orgs organization id when the group context resolves to a known school, class, campus, or org as of happenedAt.
Source: caliper.event.group_entity + People & Orgs org
Filterable on GET /events.
Set by typed relationship lookup. Do not infer campus, brand, modality, or district from this event field.
Range: Sourced id or platform id from People & Orgs org.
Optionally belongs to one People & Orgs org. One org can have many events. org-school-west-001 Derived from free text, points at another tenant, or overrides the People & Orgs tree.
Edge case: Brand, modality, and NWEA account are read through People & Orgs, not copied onto the event.
generatedRef
public
Alpha restriction
rename + restrict
jsonb
Optional
Nullable when the source payload or workflow branch omits it.
Generated output reference, such as an attempt, response, or Results-owned result reference.
Source: caliper.event.generated upstream
May link to Results but cannot expose score, mastery, gradebook rollup, or working grade as Events-owned fields.
Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.
May project to eventLink.role=generated and can point to a Results record by reference only. {"id":"https://timeback.example.edu/attempts/attempt-1","type":"Attempt"} Used to store result score, mastery, report card, or Content effectiveness values in Events.
Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.
targetRef
public
Alpha rename
rename
jsonb
Optional
Nullable when the source payload or workflow branch omits it.
Target entity for navigation, launch, move, or media actions.
Source: caliper.event.target upstream
Returned as redacted Caliper provenance. Do not use it for Content joins; use event.contentId after normalization.
Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.
May project to eventLink.role=target. It can explain why event.contentId was set, but event.contentId is the only public Content join key. {"id":"https://timeback.example.edu/resources/fractions-video","type":"DigitalResource"} Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.
Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.
referrerRef
public
Alpha rename
rename
jsonb
Optional
Nullable when the source payload or workflow branch omits it.
Referring resource for navigation or reading activity.
Source: caliper.event.referrer upstream
Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.
Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.
May project to eventLink.role=referrer. {"id":"https://timeback.example.edu/pages/unit-3","type":"WebPage"} Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.
Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.
sessionRef
public
Alpha rename
rename
jsonb
Optional
Nullable when the source payload or workflow branch omits it.
Session correlation reference across tools.
Source: caliper.event.federated_session upstream
Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.
Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.
May project to eventLink.role=federatedSession. {"id":"https://timeback.example.edu/lti/sessions/session-1","type":"LtiSession"} Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.
Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.
happenedAt
public
Alpha rename
rename
timestamptz
Required
NOT NULL after validation.
When the activity happened and the formal as-of key for People & Orgs joins.
Source: caliper.event.event_time upstream
Filterable on GET /events.
Default sort input.
Required for accepted events. Use happenedAt, not receivedAt or modifiedSince, for point-in-time roster/org lookups.
Range: ISO 8601 timestamp parseable as UTC.
No foreign key; controls temporal joins to People & Orgs effective-dated rows. 2026-05-24T13:20:42.000Z Missing, malformed, or replaced by received_at.
Edge case: Clock skew is possible. Timelines should display event_time and retain received_at for debugging.
receivedAt
public
Alpha rename
rename
timestamptz
Required
NOT NULL after validation.
When TimeBack received the batch that carried this event.
Source: caliper.envelope.received_at upstream
Filterable on GET /events.
Set by the platform. Used by modifiedSince polling and operational debugging.
Range: UTC timestamp.
Comes from the owning eventBatch/envelope. 2026-05-24T13:21:02.125Z Missing, malformed, or overwritten by sendTime.
Edge case: Duplicate deliveries keep their own receipt evidence without creating a second event row.
extensions
public
Alpha restriction
restrict
jsonb
Required
NOT NULL after validation.
Governed, non-secret, redacted extension values that remain after official Caliper fields are normalized.
Source: caliper.event.event_extensions upstream
Must be a JSON object. Extensions cannot satisfy required typed fields, override official Caliper values, store secrets, or become a free-form relationship bag.
Range: JSON object. Keys must not collide with official Caliper properties in the normalized projection.
No direct foreign-key relationship. {"https://timeback.example.edu/extensions/outcomeScore":1} Contains secrets, learner PII not authorized for the caller, relationship values that should be real columns, or policy numbers that belong under alpha.policy.events.*.
Edge case: Unknown top-level event keys can be collected here for operational inspection while raw_event remains exact.
rawPayload
internal only
Alpha cut
cut public / internal only
jsonb
Required
NOT NULL after validation.
Raw Caliper event payload preserved upstream for 1EdTech audit/replay. It is not a public Alpha field.
Source: caliper.event.raw_event upstream
Never returned by public Alpha APIs. Use redacted projections instead.
Range: JSON object with id, type, actor, action, object, eventTime, and optional Caliper properties/extensions.
No direct foreign-key relationship. {"id":"urn:uuid:11111111-1111-4111-8111-111111111111","type":"AssessmentItemEvent","action":"Completed","eventTime":"2026-05-24T13:20:42.000Z"} Returned by GET /events, copied into Problems/logs/search, or used as the surface-owned source for reports.
Edge case: This is the audit source for exact replay. Do not make relational columns the source of interchange truth.

attendanceEvent

One attendance moment for a student, read as an Alpha Events object without copying Ed-Fi attendance records.

rename + restrict
Module Home
Events
Visibility
public list + detail, redacted by role and scope
Source
edfi.canonical_record where record_kind in (StudentSchoolAttendanceEvent, StudentSectionAttendanceEvent)
ITDs
EAITD-013 EAITD-014 EAITD-016 EAITD-102 EAITD-103
Primary Key
id
Uniqueness
Ed-Fi source natural key plus tenant remains upstream truth; id is the platform-minted canonical record id.

Lifecycle. Normal app writes route through the Ed-Fi 1EdTech base surface. Production migration may use POST /source-imports with horizons_attendance_event_v1, which writes canonical Ed-Fi storage server-side and then reads through alpha.attendance_event_view. Events Alpha ships read-only list/detail routes for ordinary attendance reads.

Authority. The Ed-Fi base surface owns writes, descriptors, soft-delete, draft/canonical state, and roster resolution. Events Alpha owns only the school-language read view and raw/API convergence rules.

Example attendanceEvent object
{
  "id": "018f4f57-7f9a-7c49-a768-1d9bbcc88a02",
  "sourceRecordKind": "StudentSchoolAttendanceEvent",
  "studentId": "student-1001",
  "schoolId": "school-001",
  "classId": "class-algebra-1-a",
  "eventDate": "2026-05-30",
  "category": "Present",
  "durationMinutes": 390,
  "isDeleted": false
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
id
public
Alpha rename
rename
UUID
required
required
Stable platform id for the canonical Ed-Fi attendance record projected as an Alpha moment.
Source: edfi.canonical_record.edfi_local_id upstream
Platform-minted UUID from the Ed-Fi canonical record overlay. The source attendance natural key stays in source_key_json.
Range: See Ed-Fi 1EdTech gap-fill row.
Used by GET /attendance-events/{attendanceEventId}. It is not a OneRoster sourcedId and not an Ed-Fi natural key. 018f4f57-7f9a-7c49-a768-1d9bbcc88a02 Used as a student id, school id, class id, or external Ed-Fi natural key.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
sourceRecordKind
public
Alpha restriction
rename + restrict
text enum
Required
NOT NULL.
Which approved Ed-Fi attendance resource produced this moment.
Source: edfi.canonical_record.record_kind upstream
Filterable on GET /events.
The view must filter to exactly these two record kinds; all other Ed-Fi attendance/program attendance resources stay out of Events Alpha until architecture ships them.
Range: StudentSchoolAttendanceEvent or StudentSectionAttendanceEvent.
Selects the payload shape used for eventDate, durationMinutes, schoolId, and classId projection. StudentSchoolAttendanceEvent Any value outside StudentSchoolAttendanceEvent or StudentSectionAttendanceEvent, or a generic Ed-Fi browser route exposed through Events.
Edge case: Program/intervention attendance is not included by EAITD-013 because it belongs to administrative/program views unless a later Events ITD says otherwise.
studentId
public
Alpha rename
rename
TEXT
conditional
conditional
TimeBack student id from the OneRoster-backed People & Orgs record referenced by the Ed-Fi attendance row.
Source: edfi.canonical_record.student_sourced_id upstream
Filterable on GET /events.
Must be a real student in the tenant and caller scope; Ed-Fi writes that cannot resolve a platform student fail at the Ed-Fi boundary.
Range: See Ed-Fi 1EdTech gap-fill row.
Belongs to one People & Orgs student. One student can have many attendanceEvent rows. student-1001 Parsed from payload_json at read time, points to a non-student, or bypasses the Ed-Fi roster-reference boundary.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
schoolId
public
Alpha rename
rename
TEXT
conditional
conditional
People & Orgs school id associated with the attendance moment.
Source: edfi.canonical_record.school_sourced_id upstream
Filterable on GET /events.
Must resolve through the OneRoster org tree. Brand, modality, campus, and NWEA account are joined from People & Orgs, never copied here.
Range: See Ed-Fi 1EdTech gap-fill row.
Belongs to one People & Orgs school org when sourceRecordKind is StudentSchoolAttendanceEvent; class-level rows may also carry classId. school-001 A dashboard treats schoolId as brand, modality, district, or a second NWEA account source.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
classId
public
Alpha rename
rename
TEXT
Optional
Nullable for school-day attendance rows and required only when the Ed-Fi canonical row references a section/class.
People & Orgs class id when the attendance row is section/class-scoped.
Source: edfi.canonical_record.class_sourced_id upstream
Filterable on GET /events.
Do not infer a class from the school or session when Ed-Fi did not supply a section/class reference.
Range: See Ed-Fi 1EdTech gap-fill row.
Optionally belongs to one People & Orgs class. class-algebra-1-a Filled for a school-day row by guessing from a current schedule rather than Ed-Fi canonical relationship.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
eventDate
public
Alpha rename
rename
date
required
NOT NULL.
Calendar date the attendance event happened.
Source: edfi.canonical_record.payload_json.AttendanceEvent.EventDate upstream
Filterable on GET /events.
Default sort input.
Used as the point-in-time date for People & Orgs joins. Do not replace with updated_at or created_at.
Range: ISO 8601 full-date.
Controls point-in-time school/class membership resolution for attendance-event reports. 2026-05-30 Missing, not a calendar date, or used as an ingestion timestamp.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
category
public
Alpha rename
rename + restrict
edfi_attendance_event_category descriptor code
required
NOT NULL because Ed-Fi AttendanceEventCategory is required.
Governed attendance category such as Present, Tardy, Excused Absence, or Unexcused Absence.
Source: edfi.canonical_record.payload_json.AttendanceEvent.AttendanceEventCategoryDescriptor + edfi.edfi_descriptor_code upstream
Filterable on GET /events.
Resolve through edfi.edfi_descriptor_code; do not ship a client descriptor table or accept free text.
Range: One governed AttendanceEventCategory descriptor code active for the tenant.
Descriptor lookup, not a foreign key to People & Orgs or Content. Present Code is not governed for the tenant, outside its effective date window, or translated by a consumer-local enum table.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
arrivedAt
public
Alpha rename
rename
time
Optional
Nullable when the source did not record arrival time.
Local time of day the student arrived for the attendance event.
Source: edfi.canonical_record.payload_json.ArrivalTime upstream
Optional source value. It does not change eventDate and must not be treated as receivedAt.
Range: ISO 8601 local-time.
Read from edfi.canonical_record.payload_json through an Alpha SQL view expression. 08:11:00 Contains a date, timezone-derived instant, or inferred value not present in Ed-Fi.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
departedAt
public
Alpha rename
rename
time
Optional
Nullable when the source did not record departure time.
Local time of day the student departed for the attendance event.
Source: edfi.canonical_record.payload_json.DepartureTime upstream
Optional source value. If both arrivedAt and departedAt exist, departedAt must not be before arrivedAt for the same local day.
Range: ISO 8601 local-time.
Read from edfi.canonical_record.payload_json through an Alpha SQL view expression. 14:55:00 Contains a date, timezone-derived instant, or inferred value not present in Ed-Fi.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
durationMinutes
public
Alpha rename
rename + restrict
integer
Optional
Nullable when the source did not provide a duration.
Duration in minutes from the school- or section-attendance source field.
Source: edfi.canonical_record.payload_json.SchoolAttendanceDuration or payload_json.SectionAttendanceDuration upstream
Read the school duration for StudentSchoolAttendanceEvent and the section duration for StudentSectionAttendanceEvent. Do not compute minutes locally from arrivedAt/departedAt unless a future policy config explicitly ships that rule.
Range: 0 to 1440 minutes per the Ed-Fi AttendanceEventDuration type.
Feeds reports as an attendance-event fact; learning activity minutes still use alpha.policy.events.minute_bucket_rule. 390 Negative, greater than 1440, computed by a consumer, or used as a durable Results-owned learning-minutes outcome.
Edge case: A partial-day row can have a category and no duration; consumers must handle nullable durationMinutes.
isDeleted
public
Alpha restriction
rename + restrict
BOOLEAN
required, default false
required, default false
Soft-delete visibility flag inherited from the Ed-Fi base surface.
Source: edfi.canonical_record.is_deleted upstream
Defaults false. The row remains for correction and audit history.
Range: See Ed-Fi 1EdTech gap-fill row.
Ordinary Alpha reads exclude true rows; authorized audit reads can include them only when a documented includeDeleted policy ships. false Hard-deleted from the raw store or silently included in ordinary list answers.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.

disciplineEvent

One discipline-related moment for a student or incident, read as an Alpha Events object without copying Ed-Fi discipline records.

rename + restrict
Module Home
Events
Visibility
public list + detail, redacted by role and scope
Source
edfi.canonical_record where record_kind in (DisciplineIncident, StudentDisciplineIncidentBehaviorAssociation)
ITDs
EAITD-013 EAITD-015 EAITD-016 EAITD-102 EAITD-103
Primary Key
id
Uniqueness
IncidentIdentifier is scoped by tenant and school upstream; id is the platform-minted canonical record id.

Lifecycle. Normal app writes route through the Ed-Fi 1EdTech base surface. Production migration may use POST /source-imports with horizons_discipline_event_v1, which writes canonical Ed-Fi storage server-side and then reads through alpha.discipline_event_view. Events Alpha ships read-only list/detail routes for ordinary discipline reads.

Authority. The Ed-Fi base surface owns writes, descriptors, soft-delete, draft/canonical state, and roster resolution. Events Alpha owns only the school-language read view and redaction contract.

Example disciplineEvent object
{
  "id": "018f4f57-7f9a-7c49-a768-1d9bbcc88a02",
  "incidentId": "INC-2026-0038",
  "studentId": "student-1001",
  "schoolId": "school-001",
  "incidentDate": "2026-05-29",
  "incidentTime": "10:22:00",
  "behavior": "School Violation",
  "participationCode": "Perpetrator",
  "location": "Classroom",
  "description": "Redacted discipline narrative",
  "isDeleted": false
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
id
public
Alpha rename
rename
UUID
required
required
Stable platform id for the canonical Ed-Fi discipline row projected as an Alpha moment.
Source: edfi.canonical_record.edfi_local_id upstream
Platform-minted UUID from the Ed-Fi canonical record overlay.
Range: See Ed-Fi 1EdTech gap-fill row.
Used by GET /discipline-events/{disciplineEventId}. It is not a OneRoster sourcedId and not an Ed-Fi natural key. 018f4f57-7f9a-7c49-a768-1d9bbcc88a02 Used as the incident id, student id, school id, or external Ed-Fi natural key.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
incidentId
public
Alpha rename
rename
text
Required
NOT NULL for DisciplineIncident-backed projections.
Locally assigned discipline incident identifier from the Ed-Fi natural key.
Source: edfi.canonical_record.source_key_json.IncidentIdentifier upstream
Filterable on GET /events.
Identifies the whole incident even when multiple students or behaviors are associated. It is not globally unique without tenant and school context.
Range: Up to 36 characters per Ed-Fi DisciplineIncident.IncidentIdentifier.
Can connect DisciplineIncident and StudentDisciplineIncidentBehaviorAssociation projections for the same incident. INC-2026-0038 Treated as a platform row id or used without tenant/school scope.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
studentId
public
Alpha rename
rename
TEXT
Optional
Nullable for incident-only records until joined to a student behavior association.
TimeBack student id when the discipline record is associated with a student.
Source: edfi.canonical_record.student_sourced_id upstream
Filterable on GET /events.
Must be resolved by the Ed-Fi base surface through OneRoster sourcedIds, not by payload parsing at read time.
Range: See Ed-Fi 1EdTech gap-fill row.
Optionally belongs to one People & Orgs student. One student can have many disciplineEvent rows. student-1001 Points to a non-student, another tenant, or an unresolved payload-only reference.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
schoolId
public
Alpha rename
rename
TEXT
conditional
conditional
People & Orgs school id where the incident occurred.
Source: edfi.canonical_record.school_sourced_id upstream
Filterable on GET /events.
Must resolve through OneRoster org.sourcedId at the Ed-Fi boundary.
Range: See Ed-Fi 1EdTech gap-fill row.
Belongs to one People & Orgs school org. school-001 Used as brand/modality/district truth or inferred from a student current enrollment instead of the incident source.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.
incidentDate
public
Alpha rename
rename
date
required
NOT NULL for DisciplineIncident-backed projections.
Calendar date the discipline incident occurred.
Source: edfi.canonical_record.payload_json.IncidentDate upstream
Filterable on GET /events.
Default sort input.
Used as the point-in-time date for People & Orgs joins. Do not replace with updated_at.
Range: ISO 8601 full-date.
Controls point-in-time school/student context for discipline-event reports. 2026-05-29 Missing on a DisciplineIncident, not a calendar date, or used as an ingestion timestamp.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
incidentTime
public
Alpha rename
rename
time
Optional
Nullable when the source did not record incident time.
Local time of day the incident took place.
Source: edfi.canonical_record.payload_json.IncidentTime upstream
Optional source value. It refines incidentDate but does not become a timestamp by itself.
Range: ISO 8601 local-time.
Read from edfi.canonical_record.payload_json through an Alpha SQL view expression. 10:22:00 Contains a date, timezone-derived instant, or inferred value not present in Ed-Fi.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
behavior
public
Alpha rename
rename + restrict
edfi_behavior descriptor code
required
Required for StudentDisciplineIncidentBehaviorAssociation-backed projections; nullable for incident-only rows.
Governed category of behavior involved in the incident.
Source: edfi.canonical_record.payload_json.BehaviorDescriptor + edfi.edfi_descriptor_code upstream
Filterable on GET /events.
Resolve through edfi.edfi_descriptor_code; do not ship a client descriptor table or accept free text.
Range: One governed Behavior descriptor code active for the tenant.
Descriptor lookup, not a Results outcome or gradebook category. School Violation Code is not governed for the tenant, outside its effective date window, or translated by a consumer-local enum table.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
participationCode
public
Alpha rename
rename + restrict
edfi_discipline_incident_participation_code descriptor code array
Optional collection
Nullable when the source did not record participation codes.
Governed role or type of the student participation in the incident.
Source: edfi.canonical_record.payload_json.DisciplineIncidentParticipationCodes + edfi.edfi_descriptor_code upstream
Resolve each value through edfi.edfi_descriptor_code. Preserve collection semantics; do not flatten multiple values into free text.
Range: Array of governed DisciplineIncidentParticipationCode descriptor codes.
Descriptor lookup tied to the student-incident association. Perpetrator Ungoverned free text, unknown descriptor code, or conflated with staff/external participant records outside Events scope.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
location
public
Alpha rename
rename + restrict
edfi_incident_location descriptor code
Optional
Nullable when the source did not record incident location.
Governed location where the incident occurred.
Source: edfi.canonical_record.payload_json.IncidentLocationDescriptor + edfi.edfi_descriptor_code upstream
Filterable on GET /events.
Resolve through edfi.edfi_descriptor_code; do not parse from description text.
Range: One governed IncidentLocation descriptor code active for the tenant.
Descriptor lookup for reporting dimensions only. Classroom Not governed for the tenant, outside its effective date window, or used to override People & Orgs school truth.
Edge case: The Ed-Fi base surface owns writes and validation; Events reads the canonical value after commit.
description
public
Alpha rename
restrict
text
Optional
Nullable and redacted by default for most callers.
Human-written incident or behavior detail when the caller is authorized to view it.
Source: edfi.canonical_record.payload_json.IncidentDescription or payload_json.BehaviorDetailedDescription upstream
Sensitive narrative text. Public examples must not include real student names, staff names, or identifying details.
Range: Up to 1024 characters for IncidentDescription or BehaviorDetailedDescription.
No cross-module relationship. It is not a score, result, gradebook note, or disciplinary action outcome. Redacted discipline narrative Returned to unauthorized callers, included verbatim in public examples, or used as a source for parsed behavior/location values.
Edge case: Default parent/teacher dashboards usually show structured behavior/location/category first and reveal description only under tighter authorization.
isDeleted
public
Alpha restriction
rename + restrict
BOOLEAN
required, default false
required, default false
Soft-delete visibility flag inherited from the Ed-Fi base surface.
Source: edfi.canonical_record.is_deleted upstream
Defaults false. The row remains for correction and audit history.
Range: See Ed-Fi 1EdTech gap-fill row.
Ordinary Alpha reads exclude true rows; authorized audit reads can include them only when a documented includeDeleted policy ships. false Hard-deleted from the raw store or silently included in ordinary list answers.
Edge case: The Ed-Fi base surface owns writes and canonicalization; Events reads through a view.

eventThing

A person, app, group, resource, session, attempt, or result object named inside an event.

rename + restrict
Module Home
Events
Visibility
embedded in event detail; no standalone list endpoint
Source
caliper.entity
ITDs
EAITD-002 EAITD-006 EAITD-008 EAITD-010
Primary Key
id
Uniqueness
Upstream caliper.entity is unique by tenant and sourceId.

Lifecycle. Projected while normalizing events. Current entity view can change as new events arrive, but raw event history remains upstream evidence.

Authority. caliper.entity is the upstream projection. Alpha eventThing is a redacted detail helper, not a new People, Content, or Results record.

Example eventThing object
{
  "id": "018c8207-7418-47fd-9c1c-3f38a3b41001",
  "sourceId": "https://timeback.example.edu/users/student-1",
  "type": "Person",
  "name": "Ada Learner"
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
id
public
Alpha rename
rename
uuid
Required
NOT NULL after validation.
Stable platform id for the current projected entity named inside an event.
Source: caliper.entity.entity_row_id upstream
Unique primary key. Do not expose as the Caliper entity id.
Range: UUID generated by the platform.
Referenced by eventLink in event detail. No standalone public list endpoint is shipped. 018c8207-7418-47fd-9c1c-3f38a3b41001 Blank, duplicated, not a UUID, or used as entity_iri.
Edge case: Entity row identity can stay stable while raw_entity changes on later observations.
sourceId
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Original Caliper entity IRI or source id for the person, app, group, resource, session, attempt, or result object.
Source: caliper.entity.entity_iri upstream
Kept for provenance. Must not be parsed by consumers to derive studentId, contentId, or orgId.
Range: Non-empty IRI or URN string.
Referenced by caliper.event_entity_link through entity_row_id after upsert. https://timeback.example.edu/users/student-1 Missing, blank, duplicated with incompatible entity type, or replaced by a platform row id.
Edge case: Same IRI in different tenants remains tenant-scoped. This table is a current view, not a historical entity-version table.
type
public
Alpha rename
rename
text
Required
NOT NULL after validation.
Caliper entity class preserved for provenance.
Source: caliper.entity.entity_type upstream
Must be one Caliper 1.2 entity type when present.
Range: One Caliper 1.2 entity class.
No direct foreign-key relationship. Person Unknown class, event class in entity slot, misspelled term, or product-local class.
Edge case: Extensions can remain in raw_entity; entity_type itself must remain a Caliper term.
name
public
Alpha restriction
rename + restrict
text
Optional
Nullable when the source payload or workflow branch omits it.
Display label only when authorization and redaction allow it.
Source: caliper.entity.name upstream
Optional and redacted. Must not be invented by the platform.
Range: Text. Nullable when no Caliper name property is supplied.
No direct foreign-key relationship. Ada Learner Exposes learner, parent, staff, or private resource names to a caller without scope.
Edge case: For Person entities this can be direct learner, parent, or teacher PII.

trustEvidence

Internal release evidence proving docs, implementation, integration, and skill-pack checks ran.

cut public / summary only
Module Home
Events
Visibility
cut public; docs/QC/integration summary only
Source
caliper.conformance_run
ITDs
EAITD-008 EAITD-110
Primary Key
conformance_run_id upstream only
Uniqueness
Append-only evidence rows; no public Alpha natural key.

Lifecycle. Append-only upstream evidence rows. Public Alpha surfaces trust through hosted docs and QC links, not through mutation APIs.

Authority. caliper.conformance_run remains internal/1EdTech evidence.

Example trustEvidence object
{
  "publicFields": "none",
  "publicEvidence": "hosted surface QC and integration URLs"
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
conformance_run_id
internal only
Alpha cut
cut public / internal evidence only
uuid
Required
NOT NULL after validation.
Stable identifier for one local conformance, documentation, implementation, or integration evidence run. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.conformance_run_id
Unique primary key. This field is not returned as a public Alpha trustEvidence resource.
Range: UUID generated by the platform.
No direct foreign-key relationship. 45f8b7c8-d4ec-43ca-912f-61e39f1d1001 Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Blank, duplicated, not a UUID, or reused across runs.
Edge case: A pass row is local evidence and not an official certification claim.
tenant_id
internal only
Alpha cut
cut public / internal evidence only
uuid
Optional
Nullable when the source payload or workflow branch omits it.
Optional platform tenant associated with this evidence run. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.tenant_id
When present, must match the tenant whose demo/prod or integration evidence produced the run. This field is not returned as a public Alpha trustEvidence resource.
Range: UUID from platform.tenant(tenant_id), nullable for global docs or package checks.
Optionally belongs to one platform.tenant. One tenant can have many evidence runs. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 Exposed as a public Alpha conformance mutation field. Upstream invalid rule: References another tenant, is malformed, or is filled with a learner/person identifier.
Edge case: Global documentation checks may leave this null.
source_name
internal only
Alpha cut
cut public / internal evidence only
text
Required
NOT NULL after validation.
Name of the local or external gate that produced the evidence. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.source_name
Must identify a reproducible gate, reviewer pass, or integration app check. This field is not returned as a public Alpha trustEvidence resource.
Range: Stable short text identifier.
No direct foreign-key relationship. surface-qc-demo-prod-caliper Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Blank, vague, or names an official certification gate that did not actually run.
Edge case: Use source_version and evidence for command/version details.
source_version
internal only
Alpha cut
cut public / internal evidence only
text
Required
NOT NULL after validation.
Version, commit, source bundle, or artifact label used by the evidence run. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.source_version
Must be specific enough to reproduce or compare the evidence. This field is not returned as a public Alpha trustEvidence resource.
Range: Stable text.
No direct foreign-key relationship. caliper-analytics-1.2-platform3-a1 Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Blank, points at mutable latest without a date/commit, or claims unrun official certification.
Edge case: For hosted docs, include canonical URL in evidence and commit/deploy IDs when available.
result
internal only
Alpha cut
cut public / internal evidence only
text
Required
NOT NULL after validation.
Outcome of the evidence run. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.result
Must be one of conformance_result values. This field is not returned as a public Alpha trustEvidence resource.
Range: pass, fail, warning.
No direct foreign-key relationship. pass Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Outside enum, pass without executed evidence, or warning used to hide a blocking failure.
Edge case: Official certification claims require a separate linked process; local pass is not enough.
evidence
internal only
Alpha cut
cut public / internal evidence only
jsonb
Required
NOT NULL after validation.
Structured, redacted evidence payload from the run. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.evidence
Must be an object. Must not contain raw learner data, raw envelopes, bearer tokens, IP addresses, user agents, or secrets. This field is not returned as a public Alpha trustEvidence resource.
Range: JSON object with hashes, URLs, command names, result counts, or transcript references.
No direct foreign-key relationship. {"docsUrl":"https://platform3-andymontgomery-9773s-projects.vercel.app/caliper/1edtech/data_dictionary","redacted":true} Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Not JSON, contains secrets/PII, or is the only place a required contract is documented.
Edge case: Store hashes and object-storage references for bulky artifacts rather than copying full transcripts into JSONB.
started_at
internal only
Alpha cut
cut public / internal evidence only
timestamptz
Required
NOT NULL after validation.
Timestamp when the evidence run started. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.started_at
Must be <= finished_at. This field is not returned as a public Alpha trustEvidence resource.
Range: UTC timestamp.
No direct foreign-key relationship. 2026-05-24T13:30:00.000Z Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Missing, malformed, or after finished_at.
Edge case: For instantaneous checks, started_at and finished_at can be equal.
finished_at
internal only
Alpha cut
cut public / internal evidence only
timestamptz
Required
NOT NULL after validation.
Timestamp when the evidence run finished. Public Alpha gets hosted evidence links through docs, QC, integration, and skill pack, not a mutation API for this row.
Source: caliper.conformance_run.finished_at
Must be >= started_at and indexed for latest-evidence lookup. This field is not returned as a public Alpha trustEvidence resource.
Range: UTC timestamp.
No direct foreign-key relationship. 2026-05-24T13:32:00.000Z Exposed as a public Alpha conformance mutation field. Upstream invalid rule: Missing, malformed, or before started_at.
Edge case: Failed and warning runs still require finished_at when the gate produced a result.

eventsPolicy

Named surface configuration that owns event-kind mapping and policy numbers so consumers do not hard-code them.

extend
Module Home
Events
Visibility
surface config, read by consumers through documented config endpoints or docs
Source
alpha.policy.events.*
ITDs
EAITD-007 EAITD-009 EAITD-103
Primary Key
policy key
Uniqueness
One current value per tenant or global policy scope, depending on platform config ownership.

Lifecycle. Maintained by surface operators. Policy changes are surface changes and must not require dashboard or skill-pack code changes.

Authority. Alpha Events policy config, backed by architecture ITDs and cross-cutting rule 4.

Example eventsPolicy object
{
  "kindMap": {
    "AssessmentItemEvent|AssessmentProfile|Completed": "question_answered"
  },
  "pageSize": {
    "default": 50,
    "max": 200
  },
  "minuteBucketRule": "active_learning_minutes_v1"
}
Field Provenance Type / required Meaning Constraints / range Relationship Example Invalid when / edge cases
kindMap
surface config
Alpha extension
extend
json object
Required
NOT NULL surface config.
Maintained mapping from Caliper eventType/profile/action tuples and approved aliases to canonical event.kind values.
Source: alpha.policy.events.kind_map
Must not be embedded in skill packs, dashboards, or reports. Unknown source tuples are rejected unless a maintained alias folds them to one canonical value.
Range: JSON object whose output values are exactly alpha_event_kind.
Reads typed Caliper fields; does not parse event names, URLs, or prose. {"AssessmentItemEvent|AssessmentProfile|Completed":"question_answered"} Missing, maps one tuple to multiple kinds, produces a non-registry kind, or hides policy values in consumer code.
Edge case: Policy aliases can support producer vocabulary drift, but every alias must fold to one canonical kind before the event is readable.
pageSize
surface config
Alpha extension
extend
json object
Required
NOT NULL surface config.
Default and maximum page-size bounds for cursor-paged activity-stream reads.
Source: alpha.policy.events.page_size
GET /events pageSize must be between 1 and the configured max. Consumers read the published value and never hard-code it.
Range: Object with positive integer default and max values; exact numbers are policy, not client constants.
Controls GET /events pagination only. {"default":50,"max":200} Missing, zero, negative, max below default, or duplicated as a client-side magic number.
Edge case: A later customer website can show current values; this dictionary pins ownership and shape, not permanent policy numbers.
minuteBucketRule
surface config
Alpha extension
extend
string or json object
Optional until a minutes report is published
Nullable until a documented Events or Results workflow consumes it.
Named rule used when Events exposes activity minutes to downstream reports.
Source: alpha.policy.events.minute_bucket_rule
Must be read from surface config by consumers. A skill pack must not ship school-day or minutes calendar logic.
Range: Named config value or object; exact thresholds and calendar logic are policy.
Feeds downstream Results or report views; does not create a durable result. "active_learning_minutes_v1" Hard-coded in a dashboard, duplicated in a skill pack, or used to store minute totals on event rows.
Edge case: If a minutes report needs this and it is not exposed by the surface, that is a surface gap, not skill-pack logic.

Stream Query Parameters

EAITD-009, EAITD-014, EAITD-015, and EAITD-103 ship bounded cursor-paged streams for learning activity, attendance, and discipline moments. These are the supported filter fields; no SQL-like query language or local export filtering is part of Alpha.

API read model
OperationParameterType / requiredMeaningConstraintsExampleTrace
GET /events studentId text
Optional
Filter to learning activity events for one resolved TimeBack student. This is the People & Orgs join key; unresolved actorRef-only events are not returned by this filter.
Source: event.studentId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
student-ada-001 EAITD-006 EAITD-009
GET /events contentId text
Optional
Filter to events linked to one Content item. This is the only public Content join key; objectRef and targetRef are provenance, not competing Content keys.
Source: event.contentId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
content-fractions-video-01 EAITD-006 EAITD-009
GET /events orgId text
Optional
Filter to events resolved to one People & Orgs organization as of event.happenedAt.
Source: event.orgId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
org-school-west-001 EAITD-006 EAITD-009
GET /events activitySourceId uuid
Optional
Filter to events delivered by one registered activity source.
Source: event.activitySourceId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001 EAITD-004 EAITD-009
GET /events kind alpha_event_kind
Optional
Filter by the governed plain-language event kind.
Source: event.kind
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
question_answered EAITD-007 EAITD-009
GET /events action caliper_action
Optional
Advanced Caliper provenance filter. Prefer kind unless exact Caliper action matters.
Source: event.action
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
Completed EAITD-002 EAITD-009
GET /events eventType caliper_event_type
Optional
Advanced Caliper provenance filter. Prefer kind unless exact Caliper subclass matters.
Source: event.eventType
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
AssessmentItemEvent EAITD-002 EAITD-009
GET /events happenedAtFrom timestamptz
Optional
Inclusive lower bound for when the learning activity happened; the same happenedAt value is the as-of timestamp for People & Orgs joins.
Source: event.happenedAt
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-05-24T00:00:00.000Z EAITD-009 EAITD-103
GET /events happenedAtTo timestamptz
Optional
Exclusive upper bound for when the learning activity happened; the same happenedAt value is the as-of timestamp for People & Orgs joins.
Source: event.happenedAt
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-05-25T00:00:00.000Z EAITD-009 EAITD-103
GET /events modifiedSince timestamptz
Optional
Return events received after this timestamp for polling. Does not mean the event happened after this time.
Source: event.receivedAt
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-06-03T12:00:00.000Z EAITD-009 EAITD-107
GET /attendance-events studentId text
Optional
Filter to attendance events for one resolved TimeBack student.
Source: attendanceEvent.studentId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
student-ada-001 EAITD-014 EAITD-103
GET /attendance-events schoolId text
Optional
Filter to attendance events for one People & Orgs school.
Source: attendanceEvent.schoolId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
org-school-west-001 EAITD-014 EAITD-103
GET /attendance-events classId text
Optional
Filter to section/class attendance events for one People & Orgs class.
Source: attendanceEvent.classId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
class-algebra-1-a EAITD-014 EAITD-103
GET /attendance-events category edfi_attendance_event_category
Optional
Filter by governed Ed-Fi attendance category descriptor.
Source: attendanceEvent.category
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
Present EAITD-014 EAITD-016
GET /attendance-events from date
Optional
Inclusive lower bound for the attendance event date.
Source: attendanceEvent.eventDate
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-05-28 EAITD-014 EAITD-103
GET /attendance-events to date
Optional
Exclusive upper bound for the attendance event date.
Source: attendanceEvent.eventDate
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-06-04 EAITD-014 EAITD-103
GET /attendance-events modifiedSince timestamptz
Optional
Return canonical attendance records updated after this timestamp for polling.
Source: edfi.canonical_record.updated_at
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-06-03T12:00:00.000Z EAITD-016 EAITD-107
GET /discipline-events studentId text
Optional
Filter to discipline events for one resolved TimeBack student.
Source: disciplineEvent.studentId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
student-ada-001 EAITD-015 EAITD-103
GET /discipline-events schoolId text
Optional
Filter to discipline events for one People & Orgs school.
Source: disciplineEvent.schoolId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
org-school-west-001 EAITD-015 EAITD-103
GET /discipline-events incidentId text
Optional
Filter to one locally assigned incident identifier, scoped by tenant and school.
Source: disciplineEvent.incidentId
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
INC-2026-0038 EAITD-015 EAITD-103
GET /discipline-events behavior edfi_behavior
Optional
Filter by governed Ed-Fi behavior descriptor.
Source: disciplineEvent.behavior
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
School Violation EAITD-015 EAITD-016
GET /discipline-events from date
Optional
Inclusive lower bound for the incident date.
Source: disciplineEvent.incidentDate
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-05-28 EAITD-015 EAITD-103
GET /discipline-events to date
Optional
Exclusive upper bound for the incident date.
Source: disciplineEvent.incidentDate
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-06-04 EAITD-015 EAITD-103
GET /discipline-events modifiedSince timestamptz
Optional
Return canonical discipline records updated after this timestamp for polling.
Source: edfi.canonical_record.updated_at
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
2026-06-03T12:00:00.000Z EAITD-016 EAITD-107
all list endpoints cursor opaque string
Optional
Stable cursor from the previous page. Clients must not parse it.
Source: date/time sort key + id
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
eyJoYXBwZW5lZEF0IjoiMjAyNi0wNS0yNFQxMzoyMDo0MloiLCJpZCI6ImI5ZjZkZDg5In0= EAITD-103
all list endpoints pageSize integer
Optional
Bounded page size controlled by surface config; consumers do not hard-code max values.
Source: alpha.policy.events.page_size
Unknown parameters are rejected with RFC 7807 Problem JSON. Values are tenant- and scope-filtered before return.
Invalid when: Malformed, unauthorized, references another tenant, or conflicts with the documented type.
50 EAITD-103

Run The Student Moments Query

These examples are the build-cold path for the common dashboard job: one student's recent moments, their People & Orgs context as of the moment, and the Content item touched.

API + raw DB

Raw TimeBack source-event import

Migrate production TimeBack learning-event rows without asking the caller to compute Caliper event tuples, Alpha event kind, Content joins, People & Orgs joins, dedupe hashes, or Results-owned metrics.

API path
curl -sS -X POST "$EVENTS_BASE_URL/source-imports" \
  -H "Authorization: Bearer $TIMEBACK_JWT" \
  -H "X-Timeback-Tenant: $TENANT_ID" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: duke-2025-26-events-source-import-a1" \
  -d '{
    "sourceSystem": "timeback_production",
    "adapter": "timeback_learning_event_v1",
    "importId": "duke-2025-26-events-a1",
    "records": [
      {
        "id": "pf_918271",
        "student_sourced_id": "b6fa7128-f641-4efd-9075-375411fd6c39",
        "activity_id": "fractions_video_482",
        "activity_kind": "video_scrub",
        "occurred_at": "2026-02-12T15:04:03Z",
        "course_ref": "math-5-fractions"
      }
    ]
  }'
Raw DB path
-- Success is checked at public Events grain, not source-row submission grain.
-- The source import itself is a surface call; raw DB checks only prove materialization.
SELECT
  count(*) AS materialized_event_count,
  min(e.happened_at) AS first_event_at,
  max(e.happened_at) AS last_event_at
FROM alpha.event_view e
WHERE e.tenant_id = :tenant_id
  AND e.student_id = :student_id
  AND e.received_at >= :import_started_at
  AND e.kind IN ('app_opened','content_viewed','video_started','video_scrubbed',
                 'hint_requested','question_answered','assessment_started',
                 'assessment_submitted','lesson_finished','search_run',
                 'feedback_viewed','session_joined');
  • The source record in the example is intentionally TimeBack-shaped. It is not a Caliper event and not an Alpha event object.
  • The server must derive sourceEventId, eventType, profile, action, kind, actorRef, objectRef, studentId, contentId, orgId, happenedAt, and relationship links before writing.
  • events:validation_failed returns HTTP 400. events:adapter_rejected returns HTTP 422. A validation or adapter rejection under HTTP 200 is a raw-ingest failure.
  • On success, acceptedCount equals materializedCount and the returned event ids are immediately readable through GET /events.

Trace: EAITD-005 EAITD-006 EAITD-007 EAITD-008 EAITD-108

Last 7 days of moments for one student

List event moments for a given studentId in the last 7 days, joined to People & Orgs for the org as of event.happenedAt and Content through event.contentId for the lesson touched.

API path
curl "$EVENTS_BASE_URL/events?studentId=person_ada_lovelace&happenedAtFrom=2026-05-28T00:00:00Z&happenedAtTo=2026-06-04T00:00:00Z&pageSize=50" \
  -H "Authorization: Bearer $TIMEBACK_JWT" \
  -H "X-Timeback-Tenant: $TENANT_ID"
Raw DB path
SELECT
  e.id,
  e.happened_at,
  e.kind,
  e.student_id,
  p.first_name,
  p.last_name,
  pm.place_id AS org_id_as_of_event,
  pl.name AS org_name_as_of_event,
  ci.content_id,
  ci.title AS content_title,
  ci.content_kind
FROM alpha.event_view e
-- People & Orgs temporal join: event.happened_at is the only as-of key.
JOIN alpha.person p
  ON p.tenant_id = e.tenant_id
 AND p.person_id = e.student_id
JOIN alpha.place_membership pm
  ON pm.tenant_id = e.tenant_id
 AND pm.person_id = e.student_id
 AND pm.role_kind = 'student'
 AND pm.is_time_locatable = true
 AND pm.begin_date <= e.happened_at::date
 AND (pm.end_date IS NULL OR pm.end_date >= e.happened_at::date)
JOIN alpha.place pl
  ON pl.tenant_id = pm.tenant_id
 AND pl.place_id = pm.place_id
-- Content join: event.content_id is the only public Content relationship key.
LEFT JOIN alpha.content_item_view ci
  ON ci.workspace_id = e.tenant_id
 AND ci.content_id = e.content_id
WHERE e.tenant_id = :tenant_id
  AND e.student_id = :student_id
  AND e.happened_at >= :as_of::timestamptz - interval '7 days'
  AND e.happened_at < :as_of::timestamptz
ORDER BY e.happened_at DESC
LIMIT :page_size;
  • Raw readers use alpha.event_view at public event grain, not caliper.envelope or raw payload rows.
  • The People & Orgs join is point-in-time and formal: begin_date NULL rows are excluded, end_date NULL rows are active after begin_date, and event.happenedAt / e.happened_at is the as-of key.
  • Content has exactly one public Events join key: event.contentId / e.content_id to alpha.content_item_view.content_id. objectRef and targetRef are provenance only.
  • Scores, mastery, MAP, working grade, and report-card fields are intentionally absent. Join Results separately only when the job is a settled outcome report.

Trace: EAITD-003 EAITD-006 EAITD-009 EAITD-103

Migration skeleton for the public event view

Create the raw-DB surface the query above depends on without copying Caliper fields into an Alpha table.

API path
Core event writes route through POST /events; rename/cut/restrict fields are persisted in Caliper base tables, not Alpha copies.
Raw DB path
CREATE VIEW alpha.event_view AS
SELECT
  e.tenant_id,
  e.event_row_id AS id,
  e.event_iri AS source_event_id,
  e.event_type,
  e.profile,
  e.action,
  x.event_kind AS kind,
  e.actor AS actor_ref,
  x.student_sourced_id AS student_id,
  e.object AS object_ref,
  x.content_id,
  env.sensor_id AS activity_source_id,
  e.group_entity AS group_ref,
  x.org_sourced_id AS org_id,
  e.generated AS generated_ref,
  e.target AS target_ref,
  e.referrer AS referrer_ref,
  e.federated_session AS session_ref,
  e.event_time AS happened_at,
  env.received_at,
  e.event_extensions AS extensions
FROM caliper.event e
JOIN caliper.envelope env
  ON env.tenant_id = e.tenant_id
 AND env.envelope_id = e.envelope_id
LEFT JOIN alpha.event_extension x
  ON x.tenant_id = e.tenant_id
 AND x.event_row_id = e.event_row_id
WHERE env.envelope_status = 'processed';
  • This is a view, not an Alpha table. It may expose Caliper-sourced columns because it stores nothing.
  • alpha.event_extension is the only Events-owned sidecar here; it stores new Alpha columns such as event_kind, student_sourced_id, content_id, and org_sourced_id plus FKs to base rows.
  • Do not add raw_event, canonical_event, event_hash, raw_envelope, credential_ref, score, mastery, or content-effectiveness columns to this public view.

Trace: EAITD-001 EAITD-002 EAITD-006 EAITD-007 EAITD-008

Attendance events for one student and school week

List attendance moments for one student in the last 7 days, joined to People & Orgs as of eventDate.

API path
curl "$EVENTS_BASE_URL/attendance-events?studentId=person_ada_lovelace&from=2026-05-28&to=2026-06-04&pageSize=50" \
  -H "Authorization: Bearer $TIMEBACK_JWT" \
  -H "X-Timeback-Tenant: $TENANT_ID"
Raw DB path
SELECT
  ae.id,
  ae.event_date,
  ae.category,
  ae.duration_minutes,
  ae.student_id,
  p.first_name,
  p.last_name,
  pm.place_id AS school_id_as_of_event,
  pl.name AS school_name_as_of_event
FROM alpha.attendance_event_view ae
JOIN alpha.person p
  ON p.tenant_id = ae.tenant_id
 AND p.person_id = ae.student_id
JOIN alpha.place_membership pm
  ON pm.tenant_id = ae.tenant_id
 AND pm.person_id = ae.student_id
 AND pm.role_kind = 'student'
 AND pm.is_time_locatable = true
 AND pm.begin_date <= ae.event_date
 AND (pm.end_date IS NULL OR pm.end_date >= ae.event_date)
JOIN alpha.place pl
  ON pl.tenant_id = pm.tenant_id
 AND pl.place_id = pm.place_id
WHERE ae.tenant_id = :tenant_id
  AND ae.student_id = :student_id
  AND ae.event_date >= :as_of::date - interval '7 days'
  AND ae.event_date < :as_of::date
  AND ae.is_deleted = false
ORDER BY ae.event_date DESC, ae.id DESC
LIMIT :page_size;
  • Use alpha.attendance_event_view at canonical attendance-event grain, not edfi.edfi_draft_record or raw payload_json alone.
  • Descriptor-valued category must already be resolved through edfi.edfi_descriptor_code; a raw query should not carry its own attendance category table.
  • The point-in-time join uses event_date, not current enrollment and not edfi.canonical_record.updated_at.

Trace: EAITD-014 EAITD-016 EAITD-103

Discipline events for one student

List discipline moments for one student, with governed behavior/location values and redacted description handling.

API path
curl "$EVENTS_BASE_URL/discipline-events?studentId=person_ada_lovelace&from=2026-05-01&to=2026-06-04&pageSize=50" \
  -H "Authorization: Bearer $TIMEBACK_JWT" \
  -H "X-Timeback-Tenant: $TENANT_ID"
Raw DB path
SELECT
  de.id,
  de.incident_id,
  de.incident_date,
  de.incident_time,
  de.behavior,
  de.location,
  de.participation_code,
  de.student_id,
  p.first_name,
  p.last_name,
  pm.place_id AS school_id_as_of_incident
FROM alpha.discipline_event_view de
LEFT JOIN alpha.person p
  ON p.tenant_id = de.tenant_id
 AND p.person_id = de.student_id
LEFT JOIN alpha.place_membership pm
  ON pm.tenant_id = de.tenant_id
 AND pm.person_id = de.student_id
 AND pm.role_kind = 'student'
 AND pm.is_time_locatable = true
 AND pm.begin_date <= de.incident_date
 AND (pm.end_date IS NULL OR pm.end_date >= de.incident_date)
WHERE de.tenant_id = :tenant_id
  AND de.student_id = :student_id
  AND de.incident_date >= :from_date
  AND de.incident_date < :to_date
  AND de.is_deleted = false
ORDER BY de.incident_date DESC, de.id DESC
LIMIT :page_size;
  • Discipline description is sensitive and redacted by authorization policy; do not place real narrative text in public examples or logs.
  • Behavior, participationCode, and location are descriptor-resolved governed values. Do not parse them out of description.
  • Discipline actions, sanctions, transcript effects, and durable outcomes are not Events-owned fields.

Trace: EAITD-015 EAITD-016 EAITD-103 EAITD-111

Migration skeleton for attendance and discipline views

Create the Ed-Fi-backed raw-DB views without copying Ed-Fi canonical records into Alpha tables.

API path
Normal app writes route to the Ed-Fi 1EdTech base surface; production migration can call POST /source-imports with horizons_attendance_event_v1 or horizons_discipline_event_v1 and must get public view rows afterward.
Raw DB path
CREATE VIEW alpha.attendance_event_view AS
SELECT
  c.tenant_id,
  c.edfi_local_id AS id,
  c.record_kind AS source_record_kind,
  c.student_sourced_id AS student_id,
  c.school_sourced_id AS school_id,
  c.class_sourced_id AS class_id,
  (c.payload_json #>> '{AttendanceEvent,EventDate}')::date AS event_date,
  dc.code_value AS category,
  (c.payload_json #>> '{ArrivalTime}')::time AS arrived_at,
  (c.payload_json #>> '{DepartureTime}')::time AS departed_at,
  COALESCE((c.payload_json #>> '{SchoolAttendanceDuration}')::integer,
           (c.payload_json #>> '{SectionAttendanceDuration}')::integer) AS duration_minutes,
  c.updated_at,
  c.is_deleted
FROM edfi.canonical_record c
JOIN edfi.edfi_descriptor_code dc
  ON dc.tenant_id = c.tenant_id
 AND dc.descriptor_type = 'AttendanceEventCategory'
 AND dc.code_value = c.payload_json #>> '{AttendanceEvent,AttendanceEventCategoryDescriptor}'
WHERE c.record_kind IN ('StudentSchoolAttendanceEvent', 'StudentSectionAttendanceEvent');

CREATE VIEW alpha.discipline_event_view AS
SELECT
  c.tenant_id,
  c.edfi_local_id AS id,
  c.source_key_json #>> '{IncidentIdentifier}' AS incident_id,
  c.student_sourced_id AS student_id,
  c.school_sourced_id AS school_id,
  (c.payload_json #>> '{IncidentDate}')::date AS incident_date,
  (c.payload_json #>> '{IncidentTime}')::time AS incident_time,
  behavior.code_value AS behavior,
  participation.code_value AS participation_code,
  location.code_value AS location,
  c.payload_json #>> '{IncidentDescription}' AS description,
  c.updated_at,
  c.is_deleted
FROM edfi.canonical_record c
LEFT JOIN edfi.edfi_descriptor_code behavior
  ON behavior.tenant_id = c.tenant_id
 AND behavior.descriptor_type = 'Behavior'
 AND behavior.code_value = c.payload_json #>> '{BehaviorDescriptor}'
LEFT JOIN edfi.edfi_descriptor_code participation
  ON participation.tenant_id = c.tenant_id
 AND participation.descriptor_type = 'DisciplineIncidentParticipationCode'
 AND participation.code_value = c.payload_json #>> '{DisciplineIncidentParticipationCodes,0}'
LEFT JOIN edfi.edfi_descriptor_code location
  ON location.tenant_id = c.tenant_id
 AND location.descriptor_type = 'IncidentLocation'
 AND location.code_value = c.payload_json #>> '{IncidentLocationDescriptor}'
WHERE c.record_kind IN ('DisciplineIncident', 'StudentDisciplineIncidentBehaviorAssociation');
  • These are views over Ed-Fi canonical storage. There is no CREATE TABLE alpha.attendance_event or CREATE TABLE alpha.discipline_event carrying Ed-Fi-sourced columns.
  • Descriptor joins are illustrative of the required raw-path rule; production SQL may normalize descriptor references differently as long as it uses edfi.edfi_descriptor_code.
  • Ordinary public reads add is_deleted = false and role/scope filters on top of these views.

Trace: EAITD-012 EAITD-014 EAITD-015 EAITD-016

Endpoint Shape

The data dictionary pins endpoint vocabulary so the customer website and implementation inherit the same object model.

API axes
OperationMeaningMaps toTrace
POST /eventsCreate one batch of one or more plain Alpha event objects.caliper.envelope + caliper.event + caliper.entity + caliper.event_entity_linkEAITD-005 EAITD-006 EAITD-007 EAITD-101
POST /source-importsImport source-shaped production TimeBack or Horizons rows and normalize server-side before materializing public Events rows.timeback_learning_event_v1 -> caliper.envelope/caliper.event/alpha.event_extension; horizons_* -> edfi.canonical_record public viewsEAITD-005 EAITD-007 EAITD-012 EAITD-014 EAITD-015 EAITD-108
GET /eventsCursor-paged activity stream with supported filters.caliper.event + caliper.envelope.received_at + relationship projectionsEAITD-009 EAITD-102 EAITD-103 EAITD-112
GET /events/{eventId}Single redacted event detail with eventThing and eventLink projections.caliper.event + caliper.entity + caliper.event_entity_linkEAITD-002 EAITD-006 EAITD-009
GET /attendance-eventsCursor-paged attendance moment stream with student, school, class, category, date, and modifiedSince filters.edfi.canonical_record StudentSchoolAttendanceEvent/StudentSectionAttendanceEvent + descriptor resolutionEAITD-014 EAITD-016 EAITD-102 EAITD-103
GET /attendance-events/{attendanceEventId}Single redacted attendance event detail.edfi.canonical_record + edfi.edfi_descriptor_codeEAITD-014 EAITD-016
GET /discipline-eventsCursor-paged discipline moment stream with student, school, incident, behavior, date, and modifiedSince filters.edfi.canonical_record DisciplineIncident/StudentDisciplineIncidentBehaviorAssociation + descriptor resolutionEAITD-015 EAITD-016 EAITD-102 EAITD-103
GET /discipline-events/{disciplineEventId}Single redacted discipline event detail.edfi.canonical_record + edfi.edfi_descriptor_codeEAITD-015 EAITD-016 EAITD-111
GET /activity-sourcesSafe list of visible activity sources.caliper.sensorEAITD-004 EAITD-102 EAITD-112
GET /activity-sources/{sourceId}Safe activity source detail without credentials.caliper.sensorEAITD-004 EAITD-010

Raw-DB And API Convergence Rules

Events has two first-class paths: call the Alpha API or query the raw database through this dictionary. The same question must return the same answer, so every API guardrail is stated here as a raw-query rule.

launch gate
RuleAPI ruleRaw DB ruleWrong answer if omittedTrace
tenant_scopeEvery Events API request must carry a tenant in X-Timeback-Tenant that matches the JWT tenant claim.Every raw query must filter caliper.* base rows and alpha.event_extension by the same tenant_id before joining, paging, or counting.A raw query that omits tenant_id can mix demo, reviewer, and real tenant activity into one answer.EAITD-109
hygiene_filterGET /events returns only accepted, processed, redacted event projections; rejected envelopes, duplicate-only evidence, raw payloads, canonical hashes, and conformance internals are not public Alpha rows.Raw-path readers use alpha.event_view or reproduce its WHERE clauses: accepted event rows joined to processed envelope evidence, excluding cut raw/canonical fields and internal conformance rows.Counting raw caliper.envelope or caliper.event rows directly can include invalid submissions, duplicate evidence, or private transport JSON.EAITD-005 EAITD-008 EAITD-010 EAITD-110
real_student_scopestudentId filters return events only for student links the caller is authorized to see and that resolve through People & Orgs as real student records at the event time.Join event.studentId through People & Orgs using happenedAt as the as-of date, keep only real-student rows in TimeBack schools, and exclude non-time-locatable memberships from point-in-time claims.A raw query that trusts actorRef strings or unresolved external ids can include test users, staff actors, or students outside the caller scope.EAITD-006 EAITD-106
point_in_time_join_grainEvents resolves studentId, orgId, contentId, and activitySourceId once through typed relationships; roster and org answers are as of event.happenedAt.Use event.happenedAt for People & Orgs effective-dated joins. begin_date NULL means the relationship is not time-locatable and cannot be counted as a point-in-time match; end_date NULL means active for dates on or after begin_date.Joining to current roster or parsing groupRef can move historical activity into the wrong school, class, brand, modality, or guide assignment.EAITD-006 EAITD-009
duplicate_and_replay_grainPOST /events deduplicates exact replays through sourceEventId, canonical hashes, and Idempotency-Key behavior; GET /events exposes one accepted public event per platform event id.Do not count envelopes as moments. Use the public event id/event view grain, and treat duplicate/replayed envelope evidence as ingest evidence rather than extra student activity.Counting by envelope or raw payload inflates activity when a sender retries the same batch.EAITD-005 EAITD-101 EAITD-105
event_not_result_boundaryEvents may reference a generated result but never returns score, mastery, working grade, MAP, report-card, or content-effectiveness fields.Raw readers must not join from event.generatedRef into Results and then present those fields as Events-owned columns; settled outcomes live in Results and derived content effectiveness lives in Content.A raw query that folds Results into Events gives the same moment two incompatible homes and breaks module-placement QC.EAITD-003
policy_config_inputsevent.kind, page-size bounds, polling limits, and minute-bucket policy come from alpha.policy.events.* and are not client constants.Raw readers use the current alpha.policy.events.* values when interpreting kind, cursor windows, page bounds, or minute buckets; they do not ship a local kind map or hard-coded thresholds.A dashboard or skill pack with its own map/window table can disagree with the API after a policy change.EAITD-007 EAITD-009 EAITD-103 EAITD-107
edfi_descriptor_resolutionGET /attendance-events category and GET /discipline-events behavior/location/participationCode return governed descriptor codes resolved by the Ed-Fi base surface.Raw readers join descriptor-valued payload fields through edfi.edfi_descriptor_code by descriptor_type, namespace, code_value, tenant scope, and effective-date window; they never carry a local descriptor table or accept free text.A raw query that reads descriptor strings directly from payload_json can count obsolete local codes, miss tenant-local governed codes, or disagree with the API after a descriptor registry change.EAITD-014 EAITD-015 EAITD-016
edfi_canonical_onlyAttendance and discipline reads expose only canonical Ed-Fi records, never drafts or pre-ack recovery rows.Raw readers use alpha.attendance_event_view and alpha.discipline_event_view over edfi.canonical_record and exclude edfi.edfi_draft_record unless the job is explicitly draft recovery on the Ed-Fi base surface.Including draft rows turns UI recovery state into real student moments and breaks the Ed-Fi GAP-A5 canonical-state boundary.EAITD-013 EAITD-014 EAITD-015 EAITD-016
edfi_soft_delete_filterOrdinary attendance and discipline list/detail reads exclude soft-deleted Ed-Fi canonical records.Raw readers filter is_deleted = false unless an authorized audit query explicitly asks for deleted records and reports them as correction history, not current moments.A raw query that omits is_deleted can show invalidated attendance or discipline corrections as live events.EAITD-016
edfi_point_in_time_join_grainAttendance and discipline school/student context is resolved through People & Orgs as of eventDate or incidentDate.Use attendanceEvent.eventDate or disciplineEvent.incidentDate as the as-of date for People & Orgs joins. begin_date NULL rows are excluded; end_date NULL rows are active on or after begin_date.Joining to current roster can move historical attendance or discipline rows to the wrong school, class, level, brand, modality, or guide assignment.EAITD-014 EAITD-015 EAITD-016
source_ingest_materializationPOST /source-imports accepts source-shaped TimeBack or Horizons rows, normalizes them server-side, and returns 200 only after accepted rows are readable through the public Events Alpha endpoints.A successful TimeBack import creates processed caliper.envelope/caliper.event rows plus alpha.event_extension relationship keys visible in alpha.event_view. A successful Horizons attendance/discipline import creates canonical Ed-Fi rows visible in alpha.attendance_event_view or alpha.discipline_event_view. Count public view rows, not submitted source rows.HTTP 200 with a Problem body, accepted source rows with zero public rows, or a caller pre-normalizing event kinds/descriptors is a skill leak and fails the migration gate.EAITD-005 EAITD-007 EAITD-012 EAITD-014 EAITD-015 EAITD-108
source_ingest_problem_statusThe ingest adapter returns events:validation_failed with HTTP 400 for invalid request shape and events:adapter_rejected with HTTP 422 for valid source rows the named adapter cannot map. It never returns HTTP 200 for a validation or adapter rejection.Raw-path migration checks treat only committed rows in alpha.event_view / alpha.attendance_event_view / alpha.discipline_event_view as migrated. Problem rows, rejected source rows, and dry-run previews are not counted as materialized Events.A lying 200 hides a failed import from migration reconciliation and produces the exact bad state found by the live gate: source rows > 0 and Events surface rows = 0.EAITD-005 EAITD-008 EAITD-108

Allowed Values

Alpha-owned values are documented directly. Caliper values are inherited from the approved Caliper 1EdTech dictionary and remain visible here for field-level completeness.

Alpha event kind

alpha_event_kind for event.kind

Alpha extension

EAITD-007 governed projection from typed Caliper fields and alpha.policy.events.kind_map.

ValueMeaningUse whenInvalid whenTrace
app_opened A student, teacher, or app-builder agent opened or launched a learning app. Use when a ToolLaunchEvent or ToolUseEvent with Launched or Used marks app entry.
Default mapping: ToolLaunchEvent/ToolLaunchProfile/Launched or ToolUseEvent/ToolUseProfile/Used
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
content_viewed A student viewed a content item such as an article, page, lesson, image, or question stem. Use for ViewEvent or ReadingProfile activity where the object resolves to Content.
Default mapping: ViewEvent/ReadingProfile/Viewed
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
video_started A student started playing a video content item. Use for MediaEvent activity with action Started and a video object.
Default mapping: MediaEvent/MediaProfile/Started
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
video_scrubbed A student jumped, rewound, skipped, or changed position in a video. Use for MediaEvent position-changing actions. The exact position is an extension only if governed and non-secret.
Default mapping: MediaEvent/MediaProfile/JumpedTo, Rewound, Skipped, or ForwardedTo
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
hint_requested A student asked for help or requested a hint while working. Use only when alpha.policy.events.kind_map folds the source event to this canonical kind.
Default mapping: ToolUseEvent or MessageEvent with a policy-mapped action such as Questioned or Used
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
question_answered A student answered an item or question. Use for item-level assessment activity that marks an answer moment, whether or not a durable score exists yet.
Default mapping: AssessmentItemEvent/AssessmentProfile/Completed or Submitted
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
assessment_started A student started an assessment, quiz, placement, or test sitting. Use when the event starts the attempt but does not by itself settle the score.
Default mapping: AssessmentEvent/AssessmentProfile/Started
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
assessment_submitted A student submitted an assessment attempt. Use for the submission moment. The scored outcome belongs in Results.
Default mapping: AssessmentEvent or AssessmentItemEvent/AssessmentProfile/Submitted or Completed
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
lesson_finished A student completed or finished a lesson or assignable learning unit. Use for assignable or resource activity where completion is the event, not the durable grade.
Default mapping: AssignableEvent/AssignableProfile/Completed or ViewEvent/ReadingProfile/Completed
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
search_run A student, teacher, or app ran a search inside a learning context. Use for search events where the query text is redacted unless policy allows it.
Default mapping: SearchEvent/SearchProfile/Searched
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
feedback_viewed A student or teacher viewed feedback. Use when the moment is seeing feedback, not writing a score or gradebook entry.
Default mapping: FeedbackEvent/FeedbackProfile/Viewed or Reviewed
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007
session_joined A student joined, logged into, or started a session. Use for session activity where the event marks participation in a tool or class session.
Default mapping: SessionEvent/SessionProfile/LoggedIn or Started
Invalid when the same moment is better represented by another canonical kind, when the source tuple is unknown and not policy-mapped, or when the caller invents a non-registry string. EAITD-007

Activity source status

alpha_activity_source_status for activitySource.status

Alpha restriction

Renamed from caliper.sensor.status and restricted to the approved sensor lifecycle values.

ValueMeaningUse whenInvalid whenTrace
active The registered sensor may send envelopes for this tenant. Use after credentials and tenant authorization are configured. Invalid when the sensor should be blocked, retired, or unknown. EAITD-004
paused The sensor is temporarily blocked without deleting its registration. Use during incident response, credential rotation, or customer-requested pause. Invalid for a sensor that is actively receiving production traffic. EAITD-004
retired The sensor registration is retained for history but no longer accepts new envelopes. Use after a sender integration is permanently decommissioned. Invalid when the sensor might resume ordinary writes. EAITD-004

Event batch status

alpha_event_batch_status for eventBatch.status

Alpha restriction

Renamed from caliper.envelope.envelope_status and used only as safe ingest evidence.

ValueMeaningUse whenInvalid whenTrace
received The endpoint accepted the transport unit and recorded receipt before normalization finished. Use while downstream event/entity projection is in progress. Invalid after projection has completed or failed. EAITD-005
processed The envelope was accepted, normalized, and projected into the event/entity tables. Use for ordinary successful Sensor API deliveries. Invalid when any required event is rejected. EAITD-005
rejected The envelope was received but failed shape, vocabulary, auth, tenant, sensor, or privacy validation. Use when rejection evidence must be retained without treating the payload as usable activity. Invalid for an envelope that produced normalized events. EAITD-005
duplicate The envelope is a safe replay of an already-seen canonical envelope for the same tenant. Use when the canonical envelope hash already exists and no second event row should be created. Invalid when the repeated request has different content or a different tenant. EAITD-005

Attendance source record kind

alpha_attendance_source_record_kind for attendanceEvent.sourceRecordKind

Alpha restriction

EAITD-014 restricts attendanceEvent to Ed-Fi StudentSchoolAttendanceEvent and StudentSectionAttendanceEvent canonical records.

ValueMeaningUse whenInvalid whenTrace
StudentSchoolAttendanceEvent A school-day attendance event for one student. Use when the source record is the Ed-Fi studentSchoolAttendanceEvents resource. Invalid for class/section attendance rows or program/intervention attendance rows. EAITD-014
StudentSectionAttendanceEvent A section/class attendance event for one student. Use when the source record is the Ed-Fi studentSectionAttendanceEvents resource. Invalid for school-day attendance rows or generic class period records. EAITD-014

AttendanceEventCategory descriptor

edfi_attendance_event_category for attendanceEvent.category

Ed-Fi governed descriptor

This descriptor holds the category of the attendance event (e.g., tardy). Values are resolved through edfi.edfi_descriptor_code; consumers do not ship descriptor tables or free-text fallbacks.

ValueMeaningUse whenInvalid whenTrace
Early departure Early departure ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016
Excused Absence Excused Absence ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016
In Attendance In Attendance ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016
Partial Partial ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016
Present Present ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016
Tardy Tardy ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016
Unexcused Absence Unexcused Absence ed_fi_standard value in uri://ed-fi.org/AttendanceEventCategoryDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-014 EAITD-016

Behavior descriptor

edfi_behavior for disciplineEvent.behavior

Ed-Fi governed descriptor

This descriptor holds the categories of behavior describing a discipline incident. Values are resolved through edfi.edfi_descriptor_code; consumers do not ship descriptor tables or free-text fallbacks.

ValueMeaningUse whenInvalid whenTrace
Other Other ed_fi_standard value in uri://ed-fi.org/BehaviorDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
School Code of Conduct School Code of Conduct ed_fi_standard value in uri://ed-fi.org/BehaviorDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
School Violation School Violation ed_fi_standard value in uri://ed-fi.org/BehaviorDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
State Offense State Offense ed_fi_standard value in uri://ed-fi.org/BehaviorDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016

DisciplineIncidentParticipationCode descriptor

edfi_discipline_incident_participation_code for disciplineEvent.participationCode

Ed-Fi governed descriptor

The role or type of participation of a person in a discipline incident; for example: Victim, Perpetrator, Witness, Reporter. Values are resolved through edfi.edfi_descriptor_code; consumers do not ship descriptor tables or free-text fallbacks.

ValueMeaningUse whenInvalid whenTrace
Perpetrator Perpetrator ed_fi_standard value in uri://ed-fi.org/DisciplineIncidentParticipationCodeDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Reporter Reporter ed_fi_standard value in uri://ed-fi.org/DisciplineIncidentParticipationCodeDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Victim Victim ed_fi_standard value in uri://ed-fi.org/DisciplineIncidentParticipationCodeDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Witness Witness ed_fi_standard value in uri://ed-fi.org/DisciplineIncidentParticipationCodeDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016

IncidentLocation descriptor

edfi_incident_location for disciplineEvent.location

Ed-Fi governed descriptor

Identifies where the incident occurred and whether or not it occurred on school property. Values are resolved through edfi.edfi_descriptor_code; consumers do not ship descriptor tables or free-text fallbacks.

ValueMeaningUse whenInvalid whenTrace
Administrative offices area Administrative offices area ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Athletic field or playground Athletic field or playground ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Auditorium Auditorium ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Bus stop Bus stop ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Cafeteria area Cafeteria area ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Classroom Classroom ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Computer lab Computer lab ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Hallway or stairs Hallway or stairs ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Library/media center Library/media center ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Locker room or gym areas Locker room or gym areas ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Off campus Off campus ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Off-campus at a school sponsored activity Off-campus at a school sponsored activity ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Off-campus at another location unrelated to school Off-campus at another location unrelated to school ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Off-campus at other school Off-campus at other school ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Off-campus at other school district facility Off-campus at other school district facility ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
On campus On campus ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
On-campus other inside area On-campus other inside area ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
On-campus other outside area On-campus other outside area ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Online Online ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Parking lot Parking lot ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Restroom Restroom ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
School bus School bus ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Stadium Stadium ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Unknown Unknown ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016
Walking to or from school Walking to or from school ed_fi_standard value in uri://ed-fi.org/IncidentLocationDescriptor. Invalid when not present in the governed descriptor registry for the tenant, outside its effective date window, or supplied as ungoverned free text. EAITD-015 EAITD-016

Caliper Event type

caliper_event_type for caliper.event.event_type

1EdTech pass-through

Inherited allowed values from the approved Caliper 1EdTech data dictionary; Alpha exposes these only for provenance and advanced filtering.

ValueMeaningUse whenInvalid whenTrace
AnnotationEvent A Caliper event class for annotation activity. Normalized rows use AnnotationProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly AnnotationEvent. Invalid when capitalization differs, the JSON-LD type is not AnnotationEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssessmentEvent A Caliper event class for assessment activity. Normalized rows use AssessmentProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly AssessmentEvent. Invalid when capitalization differs, the JSON-LD type is not AssessmentEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssessmentItemEvent A Caliper event class for assessment item activity. Normalized rows use AssessmentProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly AssessmentItemEvent. Invalid when capitalization differs, the JSON-LD type is not AssessmentItemEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssignableEvent A Caliper event class for assignable activity. Normalized rows use AssignableProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly AssignableEvent. Invalid when capitalization differs, the JSON-LD type is not AssignableEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
FeedbackEvent A Caliper event class for feedback activity. Normalized rows use FeedbackProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly FeedbackEvent. Invalid when capitalization differs, the JSON-LD type is not FeedbackEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ForumEvent A Caliper event class for forum activity. Normalized rows use ForumProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly ForumEvent. Invalid when capitalization differs, the JSON-LD type is not ForumEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
GradeEvent A Caliper event class for grade activity. Normalized rows use GradingProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly GradeEvent. Invalid when capitalization differs, the JSON-LD type is not GradeEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MediaEvent A Caliper event class for media activity. Normalized rows use MediaProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly MediaEvent. Invalid when capitalization differs, the JSON-LD type is not MediaEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MessageEvent A Caliper event class for message activity. Normalized rows use ForumProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly MessageEvent. Invalid when capitalization differs, the JSON-LD type is not MessageEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
NavigationEvent A Caliper event class for navigation activity. Normalized rows use GeneralProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly NavigationEvent. Invalid when capitalization differs, the JSON-LD type is not NavigationEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
QuestionnaireEvent A Caliper event class for questionnaire activity. Normalized rows use SurveyProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly QuestionnaireEvent. Invalid when capitalization differs, the JSON-LD type is not QuestionnaireEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
QuestionnaireItemEvent A Caliper event class for questionnaire item activity. Normalized rows use SurveyProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly QuestionnaireItemEvent. Invalid when capitalization differs, the JSON-LD type is not QuestionnaireItemEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ResourceManagementEvent A Caliper event class for resource management activity. Normalized rows use ResourceManagementProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly ResourceManagementEvent. Invalid when capitalization differs, the JSON-LD type is not ResourceManagementEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SearchEvent A Caliper event class for search activity. Normalized rows use SearchProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly SearchEvent. Invalid when capitalization differs, the JSON-LD type is not SearchEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SessionEvent A Caliper event class for session activity. Normalized rows use SessionProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly SessionEvent. Invalid when capitalization differs, the JSON-LD type is not SessionEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SurveyEvent A Caliper event class for survey activity. Normalized rows use SurveyProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly SurveyEvent. Invalid when capitalization differs, the JSON-LD type is not SurveyEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SurveyInvitationEvent A Caliper event class for survey invitation activity. Normalized rows use SurveyProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly SurveyInvitationEvent. Invalid when capitalization differs, the JSON-LD type is not SurveyInvitationEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ThreadEvent A Caliper event class for thread activity. Normalized rows use ForumProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly ThreadEvent. Invalid when capitalization differs, the JSON-LD type is not ThreadEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ToolLaunchEvent A Caliper event class for tool launch activity. Normalized rows use ToolLaunchProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly ToolLaunchEvent. Invalid when capitalization differs, the JSON-LD type is not ToolLaunchEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ToolUseEvent A Caliper event class for tool use activity. Normalized rows use ToolUseProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly ToolUseEvent. Invalid when capitalization differs, the JSON-LD type is not ToolUseEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ViewEvent A Caliper event class for view activity. Normalized rows use GeneralProfile unless the sender supplies a compatible explicit profile. Use when the event object's Caliper type is exactly ViewEvent. Invalid when capitalization differs, the JSON-LD type is not ViewEvent, or the value is an entity class rather than an event class. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE

Caliper Profile

caliper_profile for caliper.event.profile

1EdTech pass-through

Inherited allowed values from the approved Caliper 1EdTech data dictionary; Alpha exposes these only for provenance and advanced filtering.

ValueMeaningUse whenInvalid whenTrace
AnnotationProfile Groups events about creating, sharing, viewing, or managing annotations. Use when the sender supplies AnnotationProfile, or when profile inference from event type selects AnnotationProfile. Invalid when AnnotationProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssessmentProfile Groups assessment and assessment-item activity such as starting, completing, submitting, or grading assessment work. Use when the sender supplies AssessmentProfile, or when profile inference from event type selects AssessmentProfile. Invalid when AssessmentProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssignableProfile Groups activity around assignable digital resources. Use when the sender supplies AssignableProfile, or when profile inference from event type selects AssignableProfile. Invalid when AssignableProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
FeedbackProfile Groups feedback activity between learners, educators, and tools. Use when the sender supplies FeedbackProfile, or when profile inference from event type selects FeedbackProfile. Invalid when FeedbackProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ForumProfile Groups forum, thread, message, and discussion activity. Use when the sender supplies ForumProfile, or when profile inference from event type selects ForumProfile. Invalid when ForumProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
GradingProfile Groups grade, score, and result activity. Use when the sender supplies GradingProfile, or when profile inference from event type selects GradingProfile. Invalid when GradingProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MediaProfile Groups audio, video, image, and media playback activity. Use when the sender supplies MediaProfile, or when profile inference from event type selects MediaProfile. Invalid when MediaProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ReadingProfile Groups reading, viewing, bookmarking, highlighting, and navigation activity over resources. Use when the sender supplies ReadingProfile, or when profile inference from event type selects ReadingProfile. Invalid when ReadingProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ResourceManagementProfile Groups resource creation, update, copy, publish, archive, and deletion activity. Use when the sender supplies ResourceManagementProfile, or when profile inference from event type selects ResourceManagementProfile. Invalid when ResourceManagementProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SearchProfile Groups search query and search result activity. Use when the sender supplies SearchProfile, or when profile inference from event type selects SearchProfile. Invalid when SearchProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SessionProfile Groups login, logout, session start, session end, and federated-session activity. Use when the sender supplies SessionProfile, or when profile inference from event type selects SessionProfile. Invalid when SessionProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SurveyProfile Groups survey, questionnaire, survey invitation, and questionnaire item activity. Use when the sender supplies SurveyProfile, or when profile inference from event type selects SurveyProfile. Invalid when SurveyProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ToolLaunchProfile Groups tool launch activity, including LTI or app launches. Use when the sender supplies ToolLaunchProfile, or when profile inference from event type selects ToolLaunchProfile. Invalid when ToolLaunchProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ToolUseProfile Groups general tool-use activity after a tool has launched. Use when the sender supplies ToolUseProfile, or when profile inference from event type selects ToolUseProfile. Invalid when ToolUseProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
GeneralProfile General Caliper profile used for events that do not fit a narrower profile in this projection. Use when the sender supplies GeneralProfile, or when profile inference from event type selects GeneralProfile. Invalid when GeneralProfile conflicts with the event type or is spelled differently from the Caliper term. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE

Caliper Action

caliper_action for caliper.event.action

1EdTech pass-through

Inherited allowed values from the approved Caliper 1EdTech data dictionary; Alpha exposes these only for provenance and advanced filtering.

ValueMeaningUse whenInvalid whenTrace
Abandoned The actor abandoned the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Abandoned. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Abandoned. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Accepted The actor accepted the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Accepted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Accepted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Activated The actor activated the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Activated. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Activated. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Added The actor added the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Added. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Added. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Archived The actor archived the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Archived. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Archived. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Attached The actor attached the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Attached. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Attached. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Bookmarked The actor bookmarked the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Bookmarked. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Bookmarked. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ChangedResolution The actor changed resolution the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ChangedResolution. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ChangedResolution. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ChangedSize The actor changed size the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ChangedSize. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ChangedSize. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ChangedSpeed The actor changed speed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ChangedSpeed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ChangedSpeed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ChangedVolume The actor changed volume the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ChangedVolume. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ChangedVolume. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Classified The actor classified the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Classified. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Classified. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ClosedPopout The actor closed popout the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ClosedPopout. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ClosedPopout. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Commented The actor added a comment. Use when the event action property is exactly Commented. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Commented. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Completed The actor completed the object, session, assessment, item, or activity. Use when the event action property is exactly Completed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Completed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Copied The actor copied the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Copied. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Copied. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Created The actor created a resource, entity, or record. Use when the event action property is exactly Created. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Created. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Deactivated The actor deactivated the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Deactivated. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Deactivated. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Declined The actor declined the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Declined. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Declined. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Deleted The actor deleted or requested deletion of a resource, entity, or record. Use when the event action property is exactly Deleted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Deleted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Described The actor described the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Described. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Described. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
DisabledClosedCaptioning The actor disabled closed captioning the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly DisabledClosedCaptioning. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of DisabledClosedCaptioning. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Disliked The actor disliked the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Disliked. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Disliked. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Downloaded The actor downloaded the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Downloaded. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Downloaded. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
EnabledClosedCaptioning The actor enabled closed captioning the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly EnabledClosedCaptioning. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of EnabledClosedCaptioning. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Ended The actor ended the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Ended. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Ended. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
EnteredFullScreen The actor entered full screen the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly EnteredFullScreen. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of EnteredFullScreen. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ExitedFullScreen The actor exited full screen the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ExitedFullScreen. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ExitedFullScreen. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ForwardedTo The actor forwarded to the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly ForwardedTo. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of ForwardedTo. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Graded The actor graded work, a result, or an assessment object. Use when the event action property is exactly Graded. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Graded. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Hid The actor hid the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Hid. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Hid. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Highlighted The actor highlighted the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Highlighted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Highlighted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Identified The actor identified the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Identified. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Identified. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
JumpedTo The actor jumped to the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly JumpedTo. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of JumpedTo. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Launched The actor launched a tool, application, resource, or LTI link. Use when the event action property is exactly Launched. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Launched. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Liked The actor liked the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Liked. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Liked. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Linked The actor linked the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Linked. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Linked. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
LoggedIn The actor started an authenticated session. Use when the event action property is exactly LoggedIn. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of LoggedIn. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
LoggedOut The actor ended an authenticated session. Use when the event action property is exactly LoggedOut. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of LoggedOut. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MarkedAsRead The actor marked as read the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly MarkedAsRead. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of MarkedAsRead. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MarkedAsUnread The actor marked as unread the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly MarkedAsUnread. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of MarkedAsUnread. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Modified The actor modified an existing resource, entity, or record. Use when the event action property is exactly Modified. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Modified. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Muted The actor muted the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Muted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Muted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
NavigatedTo The actor navigated to a target resource or location. Use when the event action property is exactly NavigatedTo. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of NavigatedTo. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
OpenedPopout The actor opened popout the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly OpenedPopout. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of OpenedPopout. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
OptedIn The actor opted in the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly OptedIn. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of OptedIn. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
OptedOut The actor opted out the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly OptedOut. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of OptedOut. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Paused The actor paused the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Paused. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Paused. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Posted The actor posted a message, comment, or discussion item. Use when the event action property is exactly Posted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Posted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Printed The actor printed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Printed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Printed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Published The actor published the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Published. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Published. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Questioned The actor questioned the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Questioned. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Questioned. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Ranked The actor ranked the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Ranked. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Ranked. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Recommended The actor recommended the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Recommended. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Recommended. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Removed The actor removed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Removed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Removed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Reset The actor reset the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Reset. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Reset. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Restarted The actor restarted the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Restarted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Restarted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Restored The actor restored the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Restored. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Restored. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Resumed The actor resumed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Resumed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Resumed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Retrieved The actor retrieved the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Retrieved. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Retrieved. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Returned The actor returned the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Returned. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Returned. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Reviewed The actor reviewed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Reviewed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Reviewed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Rewound The actor rewound the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Rewound. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Rewound. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Saved The actor saved the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Saved. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Saved. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Searched The actor issued a search query. Use when the event action property is exactly Searched. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Searched. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Sent The actor sent the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Sent. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Sent. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Shared The actor shared the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Shared. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Shared. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Showed The actor showed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Showed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Showed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Skipped The actor skipped the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Skipped. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Skipped. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Started The actor started the object, session, assessment, media, or activity. Use when the event action property is exactly Started. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Started. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Submitted The actor submitted work, answers, responses, or another generated object. Use when the event action property is exactly Submitted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Submitted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Subscribed The actor subscribed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Subscribed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Subscribed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Tagged The actor tagged the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Tagged. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Tagged. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
TimedOut The actor timed out the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly TimedOut. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of TimedOut. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Unmuted The actor unmuted the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Unmuted. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Unmuted. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Unpublished The actor unpublished the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Unpublished. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Unpublished. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Unsubscribed The actor unsubscribed the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Unsubscribed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Unsubscribed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Uploaded The actor uploaded the event object, generated result, media control, resource, or target named by the Caliper event. Use when the event action property is exactly Uploaded. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Uploaded. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Used The actor used a tool, application, feature, or resource. Use when the event action property is exactly Used. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Used. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Viewed The actor viewed a resource, item, page, message, or result. Use when the event action property is exactly Viewed. Invalid when the sender emits a synonym, lowercase form, or product-local action instead of Viewed. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE

Caliper Entity type

caliper_entity_type for caliper.entity.entity_type

1EdTech pass-through

Inherited allowed values from the approved Caliper 1EdTech data dictionary; Alpha exposes these only for provenance and advanced filtering.

ValueMeaningUse whenInvalid whenTrace
Agent A Caliper entity class for agent objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Agent. Invalid when the type is an event class, a product-local class, or a misspelled form of Agent. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AggregateMeasure A Caliper entity class for aggregate measure objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly AggregateMeasure. Invalid when the type is an event class, a product-local class, or a misspelled form of AggregateMeasure. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AggregateMeasureCollection A Caliper entity class for aggregate measure collection objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly AggregateMeasureCollection. Invalid when the type is an event class, a product-local class, or a misspelled form of AggregateMeasureCollection. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Annotation A Caliper entity class for annotation objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Annotation. Invalid when the type is an event class, a product-local class, or a misspelled form of Annotation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Assessment A test, quiz, assessment, or assessment package. Use when the entity object's Caliper type is exactly Assessment. Invalid when the type is an event class, a product-local class, or a misspelled form of Assessment. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssessmentItem A question or item inside an assessment. Use when the entity object's Caliper type is exactly AssessmentItem. Invalid when the type is an event class, a product-local class, or a misspelled form of AssessmentItem. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AssignableDigitalResource A Caliper entity class for assignable digital resource objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly AssignableDigitalResource. Invalid when the type is an event class, a product-local class, or a misspelled form of AssignableDigitalResource. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Attempt A learner attempt or work attempt generated by an event. Use when the entity object's Caliper type is exactly Attempt. Invalid when the type is an event class, a product-local class, or a misspelled form of Attempt. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
AudioObject An audio media object. Use when the entity object's Caliper type is exactly AudioObject. Invalid when the type is an event class, a product-local class, or a misspelled form of AudioObject. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
BookmarkAnnotation A Caliper entity class for bookmark annotation objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly BookmarkAnnotation. Invalid when the type is an event class, a product-local class, or a misspelled form of BookmarkAnnotation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Chapter A Caliper entity class for chapter objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Chapter. Invalid when the type is an event class, a product-local class, or a misspelled form of Chapter. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Collection A Caliper entity class for collection objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Collection. Invalid when the type is an event class, a product-local class, or a misspelled form of Collection. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Comment A Caliper entity class for comment objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Comment. Invalid when the type is an event class, a product-local class, or a misspelled form of Comment. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
CourseOffering A course offering that can contain one or more sections. Use when the entity object's Caliper type is exactly CourseOffering. Invalid when the type is an event class, a product-local class, or a misspelled form of CourseOffering. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
CourseSection An instructional section or class instance used to group activity. Use when the entity object's Caliper type is exactly CourseSection. Invalid when the type is an event class, a product-local class, or a misspelled form of CourseSection. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
DateTimeQuestion A Caliper entity class for date time question objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly DateTimeQuestion. Invalid when the type is an event class, a product-local class, or a misspelled form of DateTimeQuestion. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
DateTimeResponse A Caliper entity class for date time response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly DateTimeResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of DateTimeResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
DigitalResource A digital learning resource. Use when the entity object's Caliper type is exactly DigitalResource. Invalid when the type is an event class, a product-local class, or a misspelled form of DigitalResource. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
DigitalResourceCollection A collection of digital resources. Use when the entity object's Caliper type is exactly DigitalResourceCollection. Invalid when the type is an event class, a product-local class, or a misspelled form of DigitalResourceCollection. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Document A Caliper entity class for document objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Document. Invalid when the type is an event class, a product-local class, or a misspelled form of Document. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
FillinBlankResponse A Caliper entity class for fillin blank response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly FillinBlankResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of FillinBlankResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Forum A forum or discussion container. Use when the entity object's Caliper type is exactly Forum. Invalid when the type is an event class, a product-local class, or a misspelled form of Forum. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Frame A Caliper entity class for frame objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Frame. Invalid when the type is an event class, a product-local class, or a misspelled form of Frame. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Group A group or collection of people, courses, or resources. Use when the entity object's Caliper type is exactly Group. Invalid when the type is an event class, a product-local class, or a misspelled form of Group. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
HighlightAnnotation A Caliper entity class for highlight annotation objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly HighlightAnnotation. Invalid when the type is an event class, a product-local class, or a misspelled form of HighlightAnnotation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
ImageObject An image media object. Use when the entity object's Caliper type is exactly ImageObject. Invalid when the type is an event class, a product-local class, or a misspelled form of ImageObject. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
LearningObjective A Caliper entity class for learning objective objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly LearningObjective. Invalid when the type is an event class, a product-local class, or a misspelled form of LearningObjective. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
LikertScale A Caliper entity class for likert scale objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly LikertScale. Invalid when the type is an event class, a product-local class, or a misspelled form of LikertScale. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Link A Caliper entity class for link objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Link. Invalid when the type is an event class, a product-local class, or a misspelled form of Link. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
LtiLink An LTI launch link or placement. Use when the entity object's Caliper type is exactly LtiLink. Invalid when the type is an event class, a product-local class, or a misspelled form of LtiLink. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
LtiSession An LTI-related session entity. Use when the entity object's Caliper type is exactly LtiSession. Invalid when the type is an event class, a product-local class, or a misspelled form of LtiSession. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MediaLocation A Caliper entity class for media location objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly MediaLocation. Invalid when the type is an event class, a product-local class, or a misspelled form of MediaLocation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MediaObject A media resource such as a video, audio, or image object. Use when the entity object's Caliper type is exactly MediaObject. Invalid when the type is an event class, a product-local class, or a misspelled form of MediaObject. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Membership A role or membership relationship between a person and a group. Use when the entity object's Caliper type is exactly Membership. Invalid when the type is an event class, a product-local class, or a misspelled form of Membership. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Message A forum or messaging object. Use when the entity object's Caliper type is exactly Message. Invalid when the type is an event class, a product-local class, or a misspelled form of Message. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MultipleChoiceResponse A Caliper entity class for multiple choice response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly MultipleChoiceResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of MultipleChoiceResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MultipleResponseResponse A Caliper entity class for multiple response response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly MultipleResponseResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of MultipleResponseResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MultiselectQuestion A Caliper entity class for multiselect question objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly MultiselectQuestion. Invalid when the type is an event class, a product-local class, or a misspelled form of MultiselectQuestion. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MultiselectResponse A Caliper entity class for multiselect response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly MultiselectResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of MultiselectResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
MultiselectScale A Caliper entity class for multiselect scale objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly MultiselectScale. Invalid when the type is an event class, a product-local class, or a misspelled form of MultiselectScale. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
NumericScale A Caliper entity class for numeric scale objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly NumericScale. Invalid when the type is an event class, a product-local class, or a misspelled form of NumericScale. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
OpenEndedQuestion A Caliper entity class for open ended question objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly OpenEndedQuestion. Invalid when the type is an event class, a product-local class, or a misspelled form of OpenEndedQuestion. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
OpenEndedResponse A Caliper entity class for open ended response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly OpenEndedResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of OpenEndedResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Organization An organization such as a school, district, department, or provider. Use when the entity object's Caliper type is exactly Organization. Invalid when the type is an event class, a product-local class, or a misspelled form of Organization. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Page A Caliper entity class for page objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Page. Invalid when the type is an event class, a product-local class, or a misspelled form of Page. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Person A learner, teacher, parent, or other human actor. Treat names and identifiers as sensitive learner or roster data. Use when the entity object's Caliper type is exactly Person. Invalid when the type is an event class, a product-local class, or a misspelled form of Person. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Query A search query or query entity. Use when the entity object's Caliper type is exactly Query. Invalid when the type is an event class, a product-local class, or a misspelled form of Query. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Question A Caliper entity class for question objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Question. Invalid when the type is an event class, a product-local class, or a misspelled form of Question. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Questionnaire A questionnaire or survey instrument. Use when the entity object's Caliper type is exactly Questionnaire. Invalid when the type is an event class, a product-local class, or a misspelled form of Questionnaire. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
QuestionnaireItem An item within a questionnaire or survey. Use when the entity object's Caliper type is exactly QuestionnaireItem. Invalid when the type is an event class, a product-local class, or a misspelled form of QuestionnaireItem. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Rating A Caliper entity class for rating objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Rating. Invalid when the type is an event class, a product-local class, or a misspelled form of Rating. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
RatingScaleQuestion A Caliper entity class for rating scale question objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly RatingScaleQuestion. Invalid when the type is an event class, a product-local class, or a misspelled form of RatingScaleQuestion. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
RatingScaleResponse A Caliper entity class for rating scale response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly RatingScaleResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of RatingScaleResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Response A learner response object generated by an interaction. Use when the entity object's Caliper type is exactly Response. Invalid when the type is an event class, a product-local class, or a misspelled form of Response. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Result A score, result, or graded output generated by assessment or grading activity. Use when the entity object's Caliper type is exactly Result. Invalid when the type is an event class, a product-local class, or a misspelled form of Result. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Scale A Caliper entity class for scale objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly Scale. Invalid when the type is an event class, a product-local class, or a misspelled form of Scale. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Score A numeric or categorical score entity. Use when the entity object's Caliper type is exactly Score. Invalid when the type is an event class, a product-local class, or a misspelled form of Score. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SearchResponse A search response entity generated by a search event. Use when the entity object's Caliper type is exactly SearchResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of SearchResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SelectTextResponse A Caliper entity class for select text response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly SelectTextResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of SelectTextResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Session A session entity used to correlate a learner's or tool's activity. Use when the entity object's Caliper type is exactly Session. Invalid when the type is an event class, a product-local class, or a misspelled form of Session. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SharedAnnotation A Caliper entity class for shared annotation objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly SharedAnnotation. Invalid when the type is an event class, a product-local class, or a misspelled form of SharedAnnotation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SoftwareApplication A software tool, learning app, platform, or sensor-side application. Use when the entity object's Caliper type is exactly SoftwareApplication. Invalid when the type is an event class, a product-local class, or a misspelled form of SoftwareApplication. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Survey A survey instrument. Use when the entity object's Caliper type is exactly Survey. Invalid when the type is an event class, a product-local class, or a misspelled form of Survey. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
SurveyInvitation An invitation to participate in a survey. Use when the entity object's Caliper type is exactly SurveyInvitation. Invalid when the type is an event class, a product-local class, or a misspelled form of SurveyInvitation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
TagAnnotation A Caliper entity class for tag annotation objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly TagAnnotation. Invalid when the type is an event class, a product-local class, or a misspelled form of TagAnnotation. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
Thread A discussion thread. Use when the entity object's Caliper type is exactly Thread. Invalid when the type is an event class, a product-local class, or a misspelled form of Thread. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
TrueFalseResponse A Caliper entity class for true false response objects. Preserve the sender's class name exactly. Use when the entity object's Caliper type is exactly TrueFalseResponse. Invalid when the type is an event class, a product-local class, or a misspelled form of TrueFalseResponse. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
VideoObject A video media object. Use when the entity object's Caliper type is exactly VideoObject. Invalid when the type is an event class, a product-local class, or a misspelled form of VideoObject. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE
WebPage A web page resource. Use when the entity object's Caliper type is exactly WebPage. Invalid when the type is an event class, a product-local class, or a misspelled form of WebPage. CITD-001-SOURCE-AUTHORITY-TERM-INDEX CITD-005-VOCABULARY-VALIDATION-PROFILE-INFERENCE

Conformance result

conformance_result for caliper.conformance_run.result

1EdTech pass-through

Inherited allowed values from the approved Caliper 1EdTech data dictionary; Alpha exposes these only for provenance and advanced filtering.

ValueMeaningUse whenInvalid whenTrace
pass The local gate completed and met the documented expectations. Use for successful documentation, implementation, demo/prod, or conformance checks. Invalid for official 1EdTech certification unless external certification evidence is linked separately. CITD-014-CONFORMANCE-RELEASE-EVIDENCE
fail The local gate ran and found a blocking defect. Use when evidence identifies a concrete failed assertion or reviewer category. Invalid when the run could not execute at all. CITD-014-CONFORMANCE-RELEASE-EVIDENCE
warning The local gate completed with non-blocking risk or incomplete optional evidence. Use only when release policy permits a non-blocking warning. Invalid for a hard blocker that should be fail. CITD-014-CONFORMANCE-RELEASE-EVIDENCE

Cut And Internal-Only Fields

These upstream fields still exist where Caliper or release evidence needs them, but public Alpha does not expose them as ordinary fields.

EAITD-008
Upstream sourceWhy Alpha cuts itTrace
caliper.envelope.raw_envelopeRaw transport payload is preserved upstream but cut from public Alpha.EAITD-008
caliper.envelope.canonical_envelopeCanonical hash input is internal evidence, not customer vocabulary.EAITD-008
caliper.envelope.envelope_hashDuplicate guard remains internal; Alpha exposes idempotent behavior, not hash internals.EAITD-005
caliper.event.raw_eventRaw event payload is preserved upstream but not returned by GET /events.EAITD-008
caliper.event.canonical_eventCanonical event evidence is internal and must not become a public payload.EAITD-008
caliper.event.event_hashDuplicate guard remains internal; sourceEventId and behavior are public.EAITD-005
caliper.entity.raw_entityRaw entity projections can contain PII and are cut from public eventThing.EAITD-010
caliper.entity.canonical_entityCanonical entity evidence is internal.EAITD-008
caliper.conformance_run.*Release evidence exists upstream, but Alpha exposes docs/QC links, not conformance mutation APIs.EAITD-110
edfi.edfi_draft_record.*Draft and pre-ack records are UI/import recovery state, not real attendance or discipline moments.EAITD-016
edfi.canonical_record.payload_jsonRaw Ed-Fi payloads can contain sensitive administrative PII; Alpha exposes typed, redacted view columns instead.EAITD-016
edfi.canonical_record.etag / ack_idEd-Fi write concurrency and acknowledgement evidence belongs to the Ed-Fi base write surface, not Events Alpha read objects.EAITD-016
discipline narrative text in public examplesDiscipline descriptions are sensitive and must be redacted unless the caller is explicitly authorized.EAITD-111

Module Placement QC

Every table and field belongs to exactly one Alpha module by the brainlift belongs-here test.

Cross-module
ModuleBelongs there ifEvents rule
People & OrgsStudents, staff, orgs, memberships, levels, brand, modality, campus, and point-in-time roster facts.Events stores typed links such as studentId or orgId only when a moment resolves to People & Orgs. The roster fact remains in People & Orgs.
CurriculumThe shared curriculum graph and academic standards.Events may be evidence that a curriculum skill was touched, usually through Content. Events does not own curriculum nodes or edges.
ContentArticles, videos, questions, tests, lessons, and other things a student touches.Events can reference contentId or objectRef. The blank instrument and content effectiveness rollup stay in Content.
EventsA record that something happened.Events owns immutable moments such as app opens, views, scrubs, hint requests, answers, launches, submissions, sessions, attendance events, and discipline incidents.
ResultsSettled statements about how one student is doing.Events can feed or point to Results. Score, mastery, MAP, working grade, report card, and student knowledge graph stay in Results.

Cross-cutting rule application

RuleEvents Alpha application
Tag registry vs. real columnEvents uses real fields for studentId, contentId, orgId, activitySourceId, generatedRef, happenedAt, eventDate, incidentDate, eventType, action, kind, category, behavior, and isDeleted because callers join, filter, sort, dedupe, or compute from them. Ed-Fi descriptors resolve through the governed descriptor registry, not ad hoc event extensions.
Point-in-time defaultEvery roster, org, campus, brand, modality, guide, or enrollment lookup from Events is evaluated as of event.happenedAt, attendanceEvent.eventDate, or disciplineEvent.incidentDate. If the People & Orgs row is not time-locatable, Events keeps the source reference but must not claim a resolved point-in-time link.
Typed field, never parsed at read timeevent.kind, event.eventType, event.action, event.profile, attendanceEvent.category, disciplineEvent.behavior, studentId, contentId, orgId/schoolId/classId, and activitySourceId are set by the base surface or normalization. Consumers must not parse URLs, names, payload JSON, or extension text to recover these facts.
Policy numbers are surface configevent.kind mapping overrides, page-size bounds, inactivity windows, source trust windows, minute bucket rules, descriptor effective-date handling, and stuck-attempt thresholds live under alpha.policy.events.* or the Ed-Fi descriptor registry. Skill packs and dashboards read surface config; they do not carry numbers.
Event, result, gradebook never collapsedAn event is a moment. A result is a scored or durable outcome. A gradebook line item is a report-card rollup. Events may reference Results but never store score, mastery, working grade, or report-card rollup fields.
Two graphs, two homesEvents can provide evidence for mastery calculations. The shared curriculum graph stays in Curriculum; the per-student knowledge graph stays in Results.
NWEA account boundary is district boundaryEvents never writes brand, modality, or NWEA district id. Reports derive those through People & Orgs and locked registry tags.
Secrets are never schema fields or tagsactivitySource credential values are not public fields and are not tags. The upstream credential_ref is an internal pointer only; actual secrets live in the managed vault or alpha.app_credential. Attendance and discipline descriptions must not carry credentials, tokens, or raw secret material.
Tenure bands are policy configEvents can be filtered by happenedAt and studentId, but tenure is computed outside Events from admission_date and alpha.policy.tenure_buckets. It is not written onto event rows.
Content effectiveness is derivedEvents can say a student touched content. validated_by_count, failed_by_count, and effectiveness rates are Content overlays recomputed from Results, not event counters.
Source records enter through named adaptersRaw TimeBack learning-event rows and event-shaped Horizons SIS rows enter Events through POST /source-imports. The adapter accepts source-shaped rows and normalizes server-side. External test scores and NWEA MAP rows enter Results, not Events.
Test type is typed taxonomyIf an event references a test, test_type is read from the Content test object. Events does not infer placement, diagnostic, screener, or mastery-gate status from event names or producer URLs.
K-8 advancement is surface-ownedEvents can provide minutes and activity evidence. Advancement is Results-owned formula alpha.advancement(student, subject, asOfDate), not Events or skill-pack math.

Alias Map And Source Files

The architecture alias map is copied into the machine-readable dictionary so downstream deliverables can prove every Alpha name has a source.

EAITD-011
Alias map
Alpha nameKindChange1EdTech sourceStorage classTraceNotes
activitySourceobjectrename + restrictcaliper.sensorSQL view over caliper.sensor; no Alpha tableEAITD-004The app or service allowed to send activity. Public Alpha never exposes secret values.
activitySource.idfieldrenamecaliper.sensor.sensor_idview column from caliper.sensor.sensor_id; no Alpha storageEAITD-004Stable platform row id for the source.
activitySource.sourceIrifieldrenamecaliper.sensor.sensor_iriview column from caliper.sensor.sensor_iri; no Alpha storageEAITD-004Caliper Sensor IRI retained for provenance.
activitySource.namefieldrenamecaliper.sensor.display_nameview column from caliper.sensor.display_name; no Alpha storageEAITD-004Plain label shown in teacher and app-builder workflows.
activitySource.statusfieldrestrictcaliper.sensor.statusview column from caliper.sensor.status; no Alpha storageEAITD-004active, paused, retired.
eventBatchobjectrename + cut public detailcaliper.envelopecut from public Alpha; upstream evidence remains in caliper.envelope; no Alpha tableEAITD-005Transport package used for ingest evidence; raw batch details are not a public Alpha resource.
eventBatch.sentAtfieldrenamecaliper.envelope.send_timeview column from caliper.envelope.send_time; no Alpha storageEAITD-005When the source says it sent the batch.
eventBatch.receivedAtfieldrenamecaliper.envelope.received_atview column from caliper.envelope.received_at; no Alpha storageEAITD-005When TimeBack received the batch.
eventBatch.statusfieldrename + restrictcaliper.envelope.envelope_statusview column from caliper.envelope.envelope_status; no Alpha storageEAITD-005received, processed, rejected, duplicate.
eventobjectrenamecaliper.eventSQL view over caliper.event; no Alpha tableEAITD-001One immutable moment in the activity stream.
event.idfieldrenamecaliper.event.event_row_idview column from caliper.event.event_row_id; no Alpha storageEAITD-002Platform identifier for the normalized event row.
event.sourceEventIdfieldrenamecaliper.event.event_iriview column from caliper.event.event_iri; no Alpha storageEAITD-005Source-provided stable id, generated as a Caliper event IRI when Alpha accepts a plain event.
event.eventTypefieldrenamecaliper.event.event_typeview column from caliper.event.event_type; no Alpha storageEAITD-002Caliper Event subclass preserved for provenance.
event.profilefieldrenamecaliper.event.profileview column from caliper.event.profile; no Alpha storageEAITD-002Caliper profile retained for advanced provenance and mapping.
event.actionfieldrenamecaliper.event.actionview column from caliper.event.action; no Alpha storageEAITD-002Typed Caliper action, not parsed prose.
event.kindfieldextendalpha.event_extension.event_kindextension column alpha.event_extension.event_kind; no Caliper column copied; derivation inputs are caliper.event.event_type, caliper.event.action, caliper.event.profile, and alpha.policy.events.kind_mapEAITD-007Plain governed event kind used by Alpha filters. Derivation inputs: caliper.event.event_type, caliper.event.action, caliper.event.profile, and alpha.policy.events.kind_map.
event.actorReffieldrenamecaliper.event.actorview column from caliper.event.actor; no Alpha storageEAITD-002Original Caliper actor reference or object.
event.studentIdfieldextendalpha.event_extension.student_sourced_idextension FK column alpha.event_extension.student_sourced_id; no Caliper actor JSON copied; derivation input is Caliper actor/link resolution at write/normalization timeEAITD-006Real relationship link when actor resolves to a known student. Derivation inputs: caliper.event.actor, caliper.event_entity_link, and People & Orgs user.
event.objectReffieldrenamecaliper.event.objectview column from caliper.event.object; no Alpha storageEAITD-002Thing acted on, preserved from Caliper.
event.contentIdfieldextendalpha.event_extension.content_idextension FK column alpha.event_extension.content_id; no Caliper object/target JSON copied; derivation input is Caliper object/target/link resolution at write/normalization timeEAITD-006Real relationship link when the object/target resolves to platform Content. Derivation inputs: caliper.event.object, caliper.event.target, caliper.event_entity_link, and Content item.
event.appReffieldrenamecaliper.event.ed_appview column from caliper.event.ed_app; no Alpha storageEAITD-002App named inside the event.
event.activitySourceIdfieldrenamecaliper.envelope.sensor_idview column from caliper.envelope.sensor_id; no Alpha storageEAITD-004Registered source that delivered the event.
event.groupReffieldrenamecaliper.event.group_entityview column from caliper.event.group_entity; no Alpha storageEAITD-002Group or cohort context from Caliper.
event.orgIdfieldextendalpha.event_extension.org_sourced_idextension FK column alpha.event_extension.org_sourced_id; no Caliper group JSON copied; derivation input is Caliper group/link resolution at write/normalization timeEAITD-006Real relationship link when group context resolves to a known organization. Derivation inputs: caliper.event.group_entity, caliper.event_entity_link, and People & Orgs org.
event.generatedReffieldrename + restrictcaliper.event.generatedview column from caliper.event.generated; no Alpha storageEAITD-003May link to generated output, including a result reference, but does not expose the result record.
event.targetReffieldrenamecaliper.event.targetview column from caliper.event.target; no Alpha storageEAITD-002Target entity for navigation, launch, or move actions.
event.referrerReffieldrenamecaliper.event.referrerview column from caliper.event.referrer; no Alpha storageEAITD-002Referring resource for navigation or reading activity.
event.sessionReffieldrenamecaliper.event.federated_sessionview column from caliper.event.federated_session; no Alpha storageEAITD-002Session correlation reference.
event.happenedAtfieldrenamecaliper.event.event_timeview column from caliper.event.event_time; no Alpha storageEAITD-002Point-in-time date used for roster and org lookups.
event.receivedAtfieldrenamecaliper.envelope.received_atview column from caliper.envelope.received_at; no Alpha storageEAITD-005Receipt timestamp from the event batch.
event.extensionsfieldrestrictcaliper.event.event_extensionsview column from caliper.event.event_extensions; no Alpha storageEAITD-010Only governed, non-secret, redacted extension keys are surfaced in Alpha.
event.rawPayloadfieldcutcaliper.event.raw_eventcut from public Alpha; upstream evidence remains in caliper.event.raw_event; no Alpha tableEAITD-008Raw Caliper payload is preserved internally but not a public Alpha field.
eventThingobjectrenamecaliper.entitySQL view over caliper.entity; no Alpha tableEAITD-002A person, app, group, resource, session, attempt, or result object named inside an event.
eventThing.idfieldrenamecaliper.entity.entity_row_idview column from caliper.entity.entity_row_id; no Alpha storageEAITD-002Platform id for the current entity projection.
eventThing.sourceIdfieldrenamecaliper.entity.entity_iriview column from caliper.entity.entity_iri; no Alpha storageEAITD-002Original Caliper entity IRI.
eventThing.typefieldrenamecaliper.entity.entity_typeview column from caliper.entity.entity_type; no Alpha storageEAITD-002Caliper entity class preserved for provenance.
eventThing.namefieldrename + restrictcaliper.entity.nameview column from caliper.entity.name; no Alpha storageEAITD-010Display label only when auth and redaction allow it.
eventLinkobjectrenamecaliper.event_entity_linkSQL view over caliper.event_entity_link; no Alpha tableEAITD-006Typed relationship from an event to a named eventThing.
eventLink.rolefieldrenamecaliper.event_entity_link.relationview column from caliper.event_entity_link.relation; no Alpha storageEAITD-006actor, object, generated, target, edApp, group, membership, referrer, federatedSession, member, or item.
eventLink.orderfieldrenamecaliper.event_entity_link.ordinalview column from caliper.event_entity_link.ordinal; no Alpha storageEAITD-006Sibling order when a relation is an array.
eventLink.rawPathfieldrename + restrictcaliper.event_entity_link.raw_pathview column from caliper.event_entity_link.raw_path; no Alpha storageEAITD-006Advanced provenance path; not a user-facing label.
trustEvidenceobjectcut public / summary onlycaliper.conformance_runcut from public Alpha; upstream evidence remains in caliper.conformance_run; no Alpha tableEAITD-008Release evidence remains queryable internally; public Alpha gets only trust summary links in docs/QC, not a mutation API.
attendanceEventobjectrename + restrictedfi.canonical_record where record_kind in (StudentSchoolAttendanceEvent, StudentSectionAttendanceEvent)SQL view over edfi.canonical_record where record_kind in (StudentSchoolAttendanceEvent, StudentSectionAttendanceEvent); no Alpha tableEAITD-014A school-day or class-section attendance occurrence. It is sourced from Ed-Fi canonical records and surfaced as an Alpha Events object because it happened.
attendanceEvent.idfieldrenameedfi.canonical_record.edfi_local_idview column from edfi.canonical_record.edfi_local_id; no Alpha storageEAITD-014Platform-minted Ed-Fi row id, not a OneRoster sourcedId.
attendanceEvent.sourceRecordKindfieldrename + restrictedfi.canonical_record.record_kindview column from edfi.canonical_record.record_kind; no Alpha storageEAITD-014StudentSchoolAttendanceEvent or StudentSectionAttendanceEvent only.
attendanceEvent.studentIdfieldrenameedfi.canonical_record.student_sourced_idview column from edfi.canonical_record.student_sourced_id; no Alpha storageEAITD-014OneRoster user.sourcedId resolved by the Ed-Fi GAP-A1 roster boundary.
attendanceEvent.schoolIdfieldrenameedfi.canonical_record.school_sourced_idview column from edfi.canonical_record.school_sourced_id; no Alpha storageEAITD-014OneRoster org.sourcedId for school attendance records.
attendanceEvent.classIdfieldrenameedfi.canonical_record.class_sourced_idview column from edfi.canonical_record.class_sourced_id; no Alpha storageEAITD-014OneRoster class.sourcedId for section attendance records.
attendanceEvent.eventDatefieldrenameedfi.canonical_record.payload_json.AttendanceEvent.EventDateview expression from edfi.canonical_record.payload_json.AttendanceEvent.EventDate; no Alpha storageEAITD-014Date the attendance occurrence happened; used for point-in-time roster joins.
attendanceEvent.categoryfieldrename + restrictedfi.canonical_record.payload_json.AttendanceEvent.AttendanceEventCategoryDescriptor + edfi.descriptor_codeview expression resolving edfi.canonical_record.payload_json.AttendanceEvent.AttendanceEventCategoryDescriptor + edfi.descriptor_code; no Alpha storage and no client-side descriptor tableEAITD-014Governed AttendanceEventCategory descriptor resolved through Ed-Fi descriptor codes, not an open string.
attendanceEvent.arrivedAtfieldrenameedfi.canonical_record.payload_json.ArrivalTimeview expression from edfi.canonical_record.payload_json.ArrivalTime; no Alpha storageEAITD-014Optional local arrival time.
attendanceEvent.departedAtfieldrenameedfi.canonical_record.payload_json.DepartureTimeview expression from edfi.canonical_record.payload_json.DepartureTime; no Alpha storageEAITD-014Optional local departure time.
attendanceEvent.durationMinutesfieldrename + restrictedfi.canonical_record.payload_json.SchoolAttendanceDuration or payload_json.SectionAttendanceDurationview expression from edfi.canonical_record.payload_json.SchoolAttendanceDuration or payload_json.SectionAttendanceDuration; no Alpha storageEAITD-014Optional attendance duration in minutes; school and section source fields fold to one plain field.
attendanceEvent.isDeletedfieldrename + restrictedfi.canonical_record.is_deletedview column from edfi.canonical_record.is_deleted; no Alpha storageEAITD-016Ordinary Alpha reads exclude true rows; audit reads must ask for deleted records explicitly.
disciplineEventobjectrename + restrictedfi.canonical_record where record_kind in (DisciplineIncident, StudentDisciplineIncidentBehaviorAssociation)SQL view over edfi.canonical_record where record_kind in (DisciplineIncident, StudentDisciplineIncidentBehaviorAssociation); no Alpha tableEAITD-015A discipline incident plus the student behavior association that makes it student-scoped.
disciplineEvent.idfieldrenameedfi.canonical_record.edfi_local_idview column from edfi.canonical_record.edfi_local_id; no Alpha storageEAITD-015Platform-minted Ed-Fi row id for the student-scoped discipline association or incident row.
disciplineEvent.incidentIdfieldrenameedfi.canonical_record.source_key_json.IncidentIdentifierview expression from edfi.canonical_record.source_key_json.IncidentIdentifier; no Alpha storageEAITD-015Local Ed-Fi incident identifier preserved for provenance.
disciplineEvent.studentIdfieldrenameedfi.canonical_record.student_sourced_idview column from edfi.canonical_record.student_sourced_id; no Alpha storageEAITD-015OneRoster user.sourcedId from StudentDisciplineIncidentBehaviorAssociation.
disciplineEvent.schoolIdfieldrenameedfi.canonical_record.school_sourced_idview column from edfi.canonical_record.school_sourced_id; no Alpha storageEAITD-015OneRoster org.sourcedId from the DisciplineIncident school reference.
disciplineEvent.incidentDatefieldrenameedfi.canonical_record.payload_json.IncidentDateview expression from edfi.canonical_record.payload_json.IncidentDate; no Alpha storageEAITD-015Date the incident happened; used for point-in-time roster joins.
disciplineEvent.incidentTimefieldrenameedfi.canonical_record.payload_json.IncidentTimeview expression from edfi.canonical_record.payload_json.IncidentTime; no Alpha storageEAITD-015Optional local time of the incident.
disciplineEvent.behaviorfieldrename + restrictedfi.canonical_record.payload_json.BehaviorDescriptor + edfi.descriptor_codeview expression resolving edfi.canonical_record.payload_json.BehaviorDescriptor + edfi.descriptor_code; no Alpha storage and no client-side descriptor tableEAITD-015Governed behavior descriptor from the student association, not free text.
disciplineEvent.participationCodefieldrename + restrictedfi.canonical_record.payload_json.DisciplineIncidentParticipationCodes + edfi.descriptor_codeview expression resolving edfi.canonical_record.payload_json.DisciplineIncidentParticipationCodes + edfi.descriptor_code; no Alpha storage and no client-side descriptor tableEAITD-015Governed participation descriptor when present.
disciplineEvent.locationfieldrename + restrictedfi.canonical_record.payload_json.IncidentLocationDescriptor + edfi.descriptor_codeview expression resolving edfi.canonical_record.payload_json.IncidentLocationDescriptor + edfi.descriptor_code; no Alpha storage and no client-side descriptor tableEAITD-015Governed incident-location descriptor when present.
disciplineEvent.descriptionfieldrestrictedfi.canonical_record.payload_json.IncidentDescription or payload_json.BehaviorDetailedDescriptionview expression from edfi.canonical_record.payload_json.IncidentDescription or payload_json.BehaviorDetailedDescription; no Alpha storageEAITD-015Redacted summary only; raw narrative remains sensitive Ed-Fi payload data.
disciplineEvent.isDeletedfieldrename + restrictedfi.canonical_record.is_deletedview column from edfi.canonical_record.is_deleted; no Alpha storageEAITD-016Ordinary Alpha reads exclude true rows; audit reads must ask for deleted records explicitly.
activitySource.createdAtfieldrenamecaliper.sensor.created_atview column from caliper.sensor.created_at; no Alpha storageEAITD-004Documented by EAITD-004 text as a safe public source field; omitted from the generated architecture alias-map JSON.
activitySource.updatedAtfieldrenamecaliper.sensor.updated_atview column from caliper.sensor.updated_at; no Alpha storageEAITD-004Documented by EAITD-004 text as a safe public source field; omitted from the generated architecture alias-map JSON.
eventsPolicyobjectextendalpha.policy.events.*surface config alpha.policy.events.*; no copied Caliper columnEAITD-007Policy-owned configuration for event kind mapping, page-size bounds, and event-derived minutes rules.
Source files read
  • loop/context/benchmarks/data_dictionary.html
  • https://platform3-24kpiksyo-andymontgomery-9773s-projects.vercel.app/data_dictionary
  • https://docs.stripe.com/api/events
  • https://docs.stripe.com/api/charges/object
  • loop/events/state.json
  • loop/events/prompts/doer.md
  • loop/events/feedback/alpha_data_dictionary.md
  • loop/migration/issues.jsonl
  • loop/events/artifacts/alpha/architecture/site/index.html
  • loop/events/artifacts/alpha/architecture/site/events-alpha-alias-map.json
  • loop/events/artifacts/alpha/architecture/site/events-alpha-architecture-traceability.json
  • loop/events/artifacts/alpha/architecture/commitments.json
  • loop/events/artifacts/alpha/architecture/source/build-site.mjs
  • loop/events/artifacts/alpha/architecture/source/architecture-notes.md
  • loop/caliper/artifacts/1edtech/data_dictionary/site/caliper-data-dictionary.json
  • loop/caliper/artifacts/1edtech/data_dictionary/source/caliper-data-dictionary-source.json
  • loop/caliper/artifacts/1edtech/data_dictionary/source/data-dictionary-notes.md
  • loop/caliper/artifacts/1edtech/data_dictionary/summary.json
  • loop/ed_fi/artifacts/1edtech/data_dictionary/site/data/edfi-udm-catalog.json
  • loop/ed_fi/artifacts/1edtech/data_dictionary/summary.json
  • loop/ed_fi/artifacts/1edtech/architecture/site/edfi-architecture-traceability.json
  • loop/ed_fi/artifacts/1edtech/customer_website/source/build-site.mjs
  • loop/people_and_orgs/artifacts/alpha/data_dictionary/site/people-and-orgs-alpha-data-dictionary.json
  • loop/content/artifacts/alpha/data_dictionary/site/content-alpha-data-dictionary.json
  • vendor/caliper-prior-workspace/spec_bundle/MANIFEST.md
  • vendor/caliper-prior-workspace/docs/plain-english-guide.md
  • vendor/caliper-prior-workspace/docs/caliper-relational-json-architecture.md
  • vendor/caliper-prior-workspace/docs/adr/0008-entity-event-projection.md
  • vendor/caliper-prior-workspace/contracts/caliper-boundary.openapi.yaml
  • vendor/caliper-prior-workspace/src/caliper/caliperModel.ts
  • vendor/caliper-prior-workspace/src/caliper/caliperNormalizer.ts
  • vendor/caliper-prior-workspace/tests/caliperNormalizer.test.ts