Caliper Data Dictionary1EdTech surface - generated from approved architecture and Caliper 1.2 source indexes
TimeBack Platform - Caliper Analytics 1.2

Data dictionary for the Caliper 1EdTech persistence surface

This dictionary documents every Caliper-owned table, field, allowed value, nullability rule, relationship, invalid-value case, privacy handling rule, source label, and architecture decision link. It is written for a staff engineer who needs to write migrations and queries without reading source code.

Schema rule

Caliper names stay Caliper names; platform fields are explicit gap fills.

The 1EdTech surface preserves Caliper Analytics 1.2 JSON-LD, Sensor API envelopes, event classes, profile terms, action terms, entity classes, and raw payload fields. The platform adds tenant scope, registered sensors, canonical hashes, processing status, relation projections, read-projection evidence, and conformance evidence only where Caliper does not define a hosted multi-tenant persistence layer.

Caliper-owned tables6
Documented fields69
Allowed value rows207
API decision axes inherited12
Local tenant tables0
Reading rule. Field rows labeled 1EdTech pass-through come from Caliper 1.2 terms or JSON-LD properties. Rows labeled Platform gap fill are storage, security, evidence, hashing, tenant, or lifecycle decisions linked to a Caliper architecture CITD. Rows labeled Mixed combine exact Caliper values with platform persistence structure.
Schema navigation

Object index

Use this index, the sidebar, or search to jump to a table, field, allowed value, source label, relationship, invalid-value case, or CITD link. Every table and field has a stable anchor.

Inherited shared schema

No caliper.tenant table exists in platform3.

The prior Caliper workspace had a local tenant table. The approved Caliper architecture moved tenant truth to the shared platform schema. Caliper rows reference platform.tenant, and the HTTP surface routes tenant scope through X-Timeback-Tenant plus a matching JWT tenant claim.

platform.tenant Platform Tenant

Authoritative tenant, status, and tenant metadata row. Every Caliper tenant_id field references this table; there is no caliper.tenant table.

  • tenant_id: UUID primary key used by Caliper foreign keys
  • tenant_key: human-stable platform key
  • display_name: operator/customer display name
  • status: provisioning, active, suspended, archived

Open authoritative platform dictionary

platform.idempotency_key Platform Idempotency Key

Shared retry ledger for explicit Idempotency-Key conflict handling. Caliper also uses canonical envelope/event hashes for Sensor replay detection.

  • module: must be caliper for Caliper operations
  • surface: must be 1edtech for this surface
  • request_hash: conflicts when the same key carries different payload
  • status: records in-progress, completed, or failed replay state

Open authoritative platform dictionary

Architecture inheritance

API decision axes that constrain this dictionary

These are not extra tables. They are the approved architecture commitments that decide which fields, keys, indexes, evidence rows, and invalid cases this dictionary must make visible.

Write granularity SHIP Bulk-only Caliper envelope writes through `POST /caliper/v1p2/events`; no per-event POST/PUT/PATCH/DELETE operations are part of this 1EdTech surface.

Tradeoff: Caliper's Sensor API transport unit is the envelope, so a per-event write model would duplicate the standard primitive and make retries harder to reason about. Bulk-only writes still let an integrator send one event in an envelope when they need single-event delivery.

Re-open trigger: Re-open per-resource mutation only when three distinct integrator decisions in 90 days show that valid Caliper Sensors cannot complete the served analytics-consumer job with envelope delivery.

Read shape SHIP + DEFER Ship known-key detail projections only: `GET /caliper/v1p2/events?eventIri=...` and `GET /caliper/v1p2/envelopes?hash=...`. Defer generic list/detail/sub-collection browsing.

Tradeoff: Read-after-write proof is persona-blocking for demo, QC, and Integrator workflows, but broad browsing would force paging, sorting, privacy, and authorization semantics that the Sensor API does not define.

Re-open trigger: Re-open generic list/detail browsing when an approved customer-website workflow needs discovery without a known event IRI or envelope hash, or when three integrator decisions in 90 days cite missing browsing as job-blocking.

Query model SHIP + DEFER Ship exact identifier lookup parameters only (`eventIri`, `hash`). Defer filter, sort, cursor paging, and `modifiedSince` query semantics.

Tradeoff: Exact lookup parameters are identifiers for the shipped projections, not a collection query language. Filter/sort/cursor/modifiedSince would imply list endpoints and eventing semantics the surface has not committed to.

Re-open trigger: Re-open automatically with any approved collection list endpoint, or when three integrator decisions in 90 days need Caliper activity search to complete the served-audience job.

Concurrency model DEFER No If-Match or ETag concurrency model ships because the Caliper 1EdTech surface has no mutable resource overwrite route.

Tradeoff: Concurrency control is useful for PATCH/PUT style updates, but the shipped write is append-like envelope ingestion plus duplicate detection. Adding If-Match now would be ceremonial and confusing.

Re-open trigger: Re-open with the first approved Caliper update/delete route or any feature request that makes an existing Caliper row mutable through the public API.

Idempotency model SHIP Canonical envelope/event hashes deduplicate Caliper delivery; optional `Idempotency-Key` records retry state in `platform.idempotency_key` and returns `409 conflict` if reused with different content.

Tradeoff: The Sensor API does not require Idempotency-Key, so requiring it would make valid Sensors harder to integrate. Hashes protect natural Caliper retries while the optional platform key protects clients that already use shared platform retry semantics.

Re-open trigger: Re-open only if Caliper certification evidence or repeated live incidents show content-hash deduplication is insufficient for valid Sensor retries.

Auth shape SHIP HS256 Bearer JWTs with tenant claims, role/roles, and optional scopes (`caliper:write`, `caliper:read`) plus an active tenant-owned `caliper.sensor` registry.

Tradeoff: Role-only tokens are too coarse for read versus write authority, while OneRoster-style school/class claims would import roster authorization into a Caliper event-ingest surface.

Re-open trigger: Re-open school/class scoped claims only if a platform-level authorization commitment requires them across standards modules, not from Caliper alone.

Eventing model DEFER No outbound webhooks, event stream, poll feed, or `modifiedSince` eventing model ships. Caliper event ingestion is the inbound standard primitive; read projections are exact lookups only.

Tradeoff: Webhooks and poll feeds add callback security, retry, ordering, cursor, and privacy choices. They are not needed to prove Sensor ingest, read-after-write, or integration-app buildability.

Re-open trigger: Re-open when a shipped workflow becomes asynchronous enough that a cold integrator cannot distinguish completion from failure, or when three integrator decisions in 90 days request event feed semantics to complete the documented job.

Error envelope SHIP RFC 7807-style Problem JSON with stable platform problem type URIs, flat `code` values such as `invalid_request`, `unauthorized`, `forbidden`, `conflict`, `not_found`, `unsupported_media_type`, and `source_validation_failed`, plus field-level codes such as `unsupported_caliper_action`.

Tradeoff: Plain RFC 7807 without stable codes makes clients regex prose. Surface-prefixing every Problem code was rejected because the approved implementation and customer website publish flat machine codes and field-level Caliper-specific codes where needed.

Re-open trigger: Re-open only if platform PITD-006 changes the shared Problem contract or SDK generation needs a public problem-code registry.

Tenant routing SHIP Tenant is routed by required `X-Timeback-Tenant` header plus a matching JWT tenant claim on `CALIPER_BASE_URL`; there is no tenant path prefix and no JWT-only hidden tenant routing.

Tradeoff: A header keeps the Caliper path close to the Sensor API endpoint while making tenant scope explicit in cURL and logs. JWT-only routing was rejected because the approved customer website and implementation require the header and verify it against the token claim.

Re-open trigger: Re-open only if platform-wide routing changes or a Caliper certification test forbids the additional tenant header.

Conformance evidence SHIP + DEFER Ship local spec-runner, transport, docs, live demo/reviewer, surface-QC, and integration evidence in `caliper.conformance_run`; defer official 1EdTech certification until external evidence exists.

Tradeoff: No evidence makes standards fidelity unverifiable, while claiming certification from local tests would be dishonest. Local evidence is useful and bounded; official certification remains a separate evidence type.

Re-open trigger: Re-open official certification when a customer contract, compliance requirement, or successful 1EdTech certification run provides external evidence to link.

Privacy / retention SHIP + DEFER Ship tenant-scoped raw-payload preservation with redaction from Problems, logs, audit metadata, traces, search indexes, public docs, and conformance evidence. Defer a Caliper-specific public DELETE or age-based retention API.

Tradeoff: Rejecting Person names and identifiers would be stricter than Caliper. Echoing raw learner payloads into secondary surfaces would violate platform privacy. A deletion/retention API needs platform policy because Caliper itself does not define it.

Re-open trigger: Re-open Caliper-specific deletion or retention endpoints when platform privacy policy names retention periods or a legal/compliance workflow requires a public erasure operation for Caliper learner activity.

List endpoints DEFER Write-and-remember: no collection list endpoints ship. Integrators keep event IRIs and envelope hashes from their own Caliper payloads and use exact read projections for verification.

Tradeoff: One list endpoint per collection would be useful for analytics dashboards, but it duplicates a future query surface and forces paging/authorization/privacy decisions before the Sensor persona needs them.

Re-open trigger: Re-open with the read-shape trigger, or when an approved integration app needs activity browsing as its first-screen workflow without an event IRI or envelope hash supplied by the user's own Sensor flow.

Two first-class paths -- raw-DB answer must equal the API answer

Guardrails: rules the raw-DB path must apply to match the API.

An agent may answer a question by calling the Caliper 1EdTech Sensor API or by querying these caliper.* tables directly through this dictionary, and must get the same answer either way. The API applies the filters, join grains, and event-time semantics below on every read; a naive select * from caliper.<table> silently returns wrong-but-plausible rows unless it reproduces each rule. These guardrails are additive documentation only -- they do not change any field, table, or allowed value above; they document how the existing columns must be queried so API-only, raw-only, and free-choice answers converge.

1. Tenant scope -- always filter tenant_id

Rule the API enforces: Every read is scoped to the caller's tenant. The API never returns rows from another tenant; tenant_id is resolved from the authenticated JWT tenant_id claim, which must equal the X-Timeback-Tenant header. It is never taken from a query string (a tenantId query param is only used for demo token minting, never for read authorization).

Why the API enforces it: tenant_id is the platform isolation boundary (it is not a Caliper field; there is no caliper.tenant table -- rows reference platform.tenant). The same Caliper event/entity/sensor IRI can recur across tenants, and the uniqueness constraints (event_iri, entity_iri, sensor_iri, envelope_hash) are all scoped per-tenant (unique (tenant_id, ...)). An unscoped read mixes tenants and can collide on an IRI that is only unique within a tenant.

Raw-DB path must do: Add `where tenant_id = $tenant` to EVERY query (and to every JOIN's ON clause, e.g. `on ev.tenant_id = l.tenant_id`). Never join two caliper.* tables on a row id or IRI alone -- always pair it with tenant_id. Resolve $tenant from the same identity the API uses (JWT tenant claim == X-Timeback-Tenant); do not trust a tenant value passed alongside the data.

2. Sensor must be active -- ingest and 'live' reads require status = active

Rule the API enforces: An envelope is only accepted when its sensor_iri resolves to a registered caliper.sensor row whose status = 'active' in the same tenant (assertActiveSensor). A suspended/revoked sensor is rejected at ingest, so persisted events always trace to a sensor that was active at write time; a sensor can later be deactivated without removing its already-ingested events.

Why the API enforces it: Reading events by joining caliper.event -> caliper.sensor without checking sensor status returns events whose sensor is now suspended/revoked as if the source were still trusted. The API treats sensor status as the trust gate; a raw join that ignores it answers 'what was ever ingested', not 'what came from a currently-trusted sensor'.

Raw-DB path must do: caliper.event has no sensor_iri, so reach the sensor through the envelope: `join caliper.envelope en on (en.tenant_id = ev.tenant_id and en.envelope_id = ev.envelope_id) join caliper.sensor s on (s.tenant_id = en.tenant_id and s.sensor_iri = en.sensor_iri) where s.status = 'active'` for 'events from currently-trusted sensors'. To audit all history (including events from later-deactivated sensors), omit the status filter.

3. Event grain -- one row per Caliper event

Rule the API enforces: The authoritative event grain is one caliper.event row per Caliper event, keyed by (tenant_id, event_iri) and equally by (tenant_id, event_hash) (both are unique). An event's referenced entities are NOT extra event rows: they live in caliper.entity and are attached through caliper.event_entity_link (relation = actor/object/group/edApp/target/generated/referrer/membership/...). One event row can have many link rows.

Why the API enforces it: Joining caliper.event to caliper.event_entity_link (or to caliper.entity through it) multiplies the row count: an event with five linked entities returns five rows, so `count(*)` over the join over-counts events five-to-one and any per-event aggregate (XP, time-on-task) is inflated. No API endpoint returns an event more than once.

Raw-DB path must do: To count or list events, query `caliper.event` directly (one row per event); never `count(*)` over a join to event_entity_link. To expand an event's participants, LEFT JOIN event_entity_link/entity but then de-duplicate back to event_row_id (e.g. group by ev.event_row_id, or aggregate links with json_agg) before counting events. Use event_iri (or event_hash) as the event identity, not event_row_id alone across tenants.

4. Event vs entity scope -- pick the right table

Rule the API enforces: caliper.event is the immutable record of something that happened (an actor did an action on an object at event_time). caliper.entity is the current/last-seen state of a thing the events refer to (a learner, an assessment, a resource), upserted on (tenant_id, entity_iri) so re-ingest overwrites it. They answer different questions and are not unioned by any endpoint: GET .../events reads caliper.event; entity state comes from caliper.entity.

Why the API enforces it: Treating entities as events (or vice versa) gives a wrong-but-plausible answer. caliper.entity holds one row per thing (deduplicated, last writer wins via last_seen_at), while caliper.event holds the full append-only history. Reading entity counts to answer 'how many events' (or reading event JSON blobs to answer 'current entity state') disagrees with the API.

Raw-DB path must do: For 'what happened' / activity history: `from caliper.event where tenant_id = $tenant ...`. For 'current state of a thing': `from caliper.entity where tenant_id = $tenant and entity_iri = $iri` (one row, last_seen_at is most-recent ingest). To connect them, go through caliper.event_entity_link on (tenant_id, event_row_id) and (tenant_id, entity_row_id); never equate an entity_iri with an event_iri.

5. Event time vs send/received time -- order and window on event_time

Rule the API enforces: event_time is when the learning activity actually occurred (Caliper eventTime, required). send_time is when the sensor transmitted the envelope and received_at is when the platform stored it (envelope-level). 'When did this happen / what happened between D1 and D2' is answered by caliper.event.event_time, NOT by envelope send_time or received_at. The API's event reads order by event_time (then event_iri as a stable tiebreak).

Why the API enforces it: Events arrive late and out of order: an activity from yesterday can be sent/received today. Ordering or windowing by received_at/send_time puts late-arriving events in the wrong day and disagrees with the API, which is event-time authoritative. event_time and the envelope times are deliberately separate columns.

Raw-DB path must do: For occurrence ordering: `order by ev.event_time desc, ev.event_iri` (the index is on (tenant_id, event_time desc)). For an occurrence window: `and ev.event_time >= $d1::timestamptz and ev.event_time < $d2::timestamptz` (half-open). Use send_time/received_at only for delivery/audit questions ('when was this ingested'), never for 'when did the learner do it'. All times are ISO 8601 UTC (timestamptz).

6. Dedup of duplicate events -- canonical hash, not row id

Rule the API enforces: Duplicates are collapsed by canonical hash. An envelope re-sent verbatim resolves to the existing row via the unique (tenant_id, envelope_hash); an event re-sent verbatim resolves via the unique (tenant_id, event_hash). Re-using an event id (event_iri) with DIFFERENT canonical content is a conflict (409), as is re-using a hash for a different id -- so each (tenant_id, event_iri) maps to exactly one canonical (tenant_id, event_hash) and vice versa. Re-ingesting the same envelope returns the original rows; it does not create new ones.

Why the API enforces it: Sensors retry. A raw query that counts rows assuming every POST created new rows over-counts; one that keys identity on event_row_id (a fresh UUID per insert attempt) instead of event_iri/event_hash can treat a legitimate idempotent replay as a second event. The hash uniqueness is what guarantees one canonical row per logical event.

Raw-DB path must do: Identify a logical event by (tenant_id, event_iri) or (tenant_id, event_hash) -- both are unique and interchangeable for a given event. Do not deduplicate on event_row_id (UUID primary key, not a content identity). For 'distinct events' just count caliper.event rows (the constraints already guarantee one row per logical event per tenant); you do not need a separate distinct-on hash.

7. Envelope status -- only processed envelopes carry live events

Rule the API enforces: caliper.envelope.envelope_status records the lifecycle of a delivery: received, processed, rejected, or duplicate. Persisted caliper.event rows are written under a 'processed' envelope. A rejected envelope is retained for evidence but its payload is not the live roster of events; a duplicate envelope points back to an already-processed one.

Why the API enforces it: Caliper has no per-row soft-delete (no status='tobedeleted' on events the way OneRoster has). The closest analogue is the envelope lifecycle. A raw read that ignores envelope_status and unions every envelope's payload can resurface rejected or duplicate deliveries as if they were live events, inflating counts the API never returns.

Raw-DB path must do: For 'live events': `join caliper.envelope en on (en.tenant_id = ev.tenant_id and en.envelope_id = ev.envelope_id) where en.envelope_status = 'processed'`. To audit deliveries (including rejected/duplicate) query caliper.envelope directly and read envelope_status / rejection_reason explicitly; never silently include non-processed envelopes in a 'live events' count.

8. Changed-since grain -- entities use date_modified/last_seen_at; events are immutable

Rule the API enforces: Events are immutable facts: once written they do not change, so 'what changed since T' over events is really 'what occurred since T' and is answered by event_time (see rule 5), not a modifiedSince column. Entities are mutable last-seen state: caliper.entity carries date_modified (Caliper dateModified, source-supplied) and last_seen_at (platform timestamp of the most recent ingest that touched the row). A 'which entities changed since T' query reads those, not event_time.

Why the API enforces it: Conflating the two gives the wrong answer: comparing event_time to answer 'which learners' records were updated' misses entity re-ingests that carry no new event, and comparing entity last_seen_at to answer 'what activity happened since T' misses the event timeline. The columns are deliberately distinct (immutable event vs upserted entity).

Raw-DB path must do: Entities changed since T: `from caliper.entity where tenant_id = $tenant and (date_modified > '<T>'::timestamptz or last_seen_at > '<T>'::timestamptz)` -- use date_modified for source-asserted change, last_seen_at for ingest recency. Events since T: `from caliper.event where tenant_id = $tenant and event_time > '<T>'::timestamptz`. Use ISO 8601 UTC. Do not expect a modifiedSince column on caliper.event; events do not mutate.

Table

caliper.sensor Sensor

Registers one Caliper Sensor IRI for one platform tenant and controls whether that sender may post Sensor API envelopes.

Platform gap fill Object index

Lifecycle

Created before the first accepted envelope from a sender. Paused sensors reject new writes; retired sensors remain for history but cannot ingest.

Authority

Platform gap fill. Caliper defines Sensor concepts and envelope sensor values, but not multi-tenant registration rows or credential references.

Keys and indexes

  • Primary: sensor_id
  • Unique: (tenant_id, sensor_iri)
  • (tenant_id, status) for auth and administration
Example Sensor row
{
  "sensor_id": "2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "sensor_iri": "https://timeback.example.edu/sensors/caliper",
  "display_name": "TimeBack Caliper Sensor",
  "status": "active",
  "credential_ref": "vercel-env:CALIPER_SENSOR_TIMEBACK",
  "metadata": {
    "owner": "platform-integrations",
    "rotation": "2026-06"
  },
  "created_at": "2026-05-24T13:20:00.000Z",
  "updated_at": "2026-05-24T13:20:00.000Z"
}
FieldType and nullabilityMeaning and rangeConstraintsRelationship and edge casesProvenance and invalid values
sensor_idPrimary key uuidRequired

Stable platform row identifier for a registered Caliper sender.

Range: UUID generated by the platform.

Allowed values: None.

NOT NULL after validation.

Unique primary key. Never derived from the Caliper sensor IRI because a sensor IRI can be rotated or re-registered by tenant.

No direct foreign-key relationship.

Edge case: Use sensor_iri for Caliper payload matching; use sensor_id for database joins.

Platform gap fill

The platform needs a stable row identifier for sensor administration.

Example: 2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001

Invalid when: Blank, duplicated, not a UUID, or reused for a different tenant's sensor.

Privacy: Standard tenant-scoped operational data.

tenant_idForeign key and tenant-scope key uuidRequired

Shared platform tenant that owns this Caliper row. This replaces the prior workspace's local caliper.tenant table.

Range: UUID that exists in platform.tenant(tenant_id).

Allowed values: None.

NOT NULL after validation.

Must equal the required X-Timeback-Tenant header and the authenticated JWT tenant_id/tenantId claim for writes and reads. Every tenant-scoped uniqueness check includes this field.

Belongs to exactly one platform.tenant. One platform tenant has many Caliper sensors, envelopes, events, entities, links, and evidence rows.

Edge case: Tenant must be resolved before any raw Caliper payload is persisted. Do not infer tenancy from actor, group, or Person identifiers.

Platform gap fill

Caliper does not define customer tenancy; platform3 inherits tenant truth from platform.tenant and routes it through X-Timeback-Tenant plus JWT claims.

Example: 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3

Invalid when: Missing, not a UUID, absent from platform.tenant, different from X-Timeback-Tenant, or different from the authenticated token tenant claim.

Privacy: Standard tenant-scoped operational data.

sensor_iriTenant-scoped natural key textRequired

Caliper Sensor IRI expected in the envelope sensor property for this registered sender.

Range: Absolute IRI string; no platform-local aliasing.

Allowed values: None.

NOT NULL after validation.

Unique within tenant. Must match the accepted envelope sensor IRI exactly after JSON-LD parsing.

Referenced by caliper.envelope.sensor_iri and usually resolves to this row through (tenant_id, sensor_iri).

Edge case: If the envelope sensor is an entity object, its id is the sensor IRI used here.

1EdTech pass-through

Sensor IRI comes from the Caliper envelope sensor property.

Example: https://timeback.example.edu/sensors/caliper

Invalid when: Empty, not an IRI, duplicated within tenant, or different from the envelope sensor property.

Privacy: Standard tenant-scoped operational data.

display_nameField textRequired

Operator-facing sender name used in consoles, support, and release evidence.

Range: Human-readable text; not part of the Caliper payload.

Allowed values: None.

NOT NULL after validation.

Required for administration; should not contain secrets or student data.

No direct foreign-key relationship.

Edge case: Changing the display name must not alter sensor_iri or historical envelope ownership.

Platform gap fill

Operational registration metadata is outside the Caliper specification.

Example: TimeBack Caliper Sensor

Invalid when: Blank, contains a credential, or is used as a stable API identifier.

Privacy: Standard tenant-scoped operational data.

statusField textRequiredDefault: active

Lifecycle gate that decides whether this registered sensor can ingest new envelopes.

Range: active, paused, retired.

Allowed values: Sensor lifecycle status

NOT NULL after validation.

Must be one of sensor_status values. Only active sensors may create processed envelopes.

No direct foreign-key relationship.

Edge case: Paused and retired sensors may still be referenced by historical envelopes.

Platform gap fill

Sensor lifecycle state controls platform endpoint acceptance for a registered Caliper sender.

Example: active

Invalid when: Any value outside active/paused/retired, or accepting writes from a non-active sensor.

Privacy: Standard tenant-scoped operational data.

credential_refField textOptional

Reference to credential material used by the platform to administer or rotate sender credentials; the secret itself is not stored here.

Range: Opaque reference string to a secrets system, nullable for demo or externally managed credentials.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Must not contain bearer tokens, shared secrets, private keys, or raw credential values.

No direct foreign-key relationship.

Edge case: The prior workspace used shared_secret_ref; platform3 names this credential_ref to emphasize reference-only storage.

Platform gap fill

Credential reference is a platform security gap fill.

Example: vercel-env:CALIPER_SENSOR_TIMEBACK

Invalid when: Contains a raw secret, token, or password, or points to a credential owned by another tenant.

Privacy: Sensitive operational metadata. Safe to store only as a reference.

metadataField jsonbRequiredDefault: {}

Small operational metadata about the sensor registration, such as owner team, rotation schedule, or external integration label.

Range: JSON object. Use scalar strings, numbers, booleans, and arrays; do not store raw payloads.

Allowed values: None.

NOT NULL after validation.

Defaults to {}. Must not include secrets, raw learner data, bearer tokens, IP addresses, or user agents.

No direct foreign-key relationship.

Edge case: Metadata can support operations but cannot override Caliper sensor_iri or tenant scope.

Platform gap fill

Operational metadata is outside Caliper and must stay secondary to the raw envelope.

Example: {"owner":"platform-integrations","rotation":"2026-06"}

Invalid when: Not a JSON object, contains secrets or PII, or is required to validate Caliper vocabulary.

Privacy: Redacted from public docs, Problems, audit metadata, and conformance evidence when it can identify people or credentials.

created_atField timestamptzRequiredDefault: now()

Timestamp when the sensor registration row was created.

Range: UTC timestamp.

Allowed values: None.

NOT NULL after validation.

Set by the platform. Must not come from sender payload.

No direct foreign-key relationship.

Edge case: Historical envelopes can predate registration only when imported through an explicit migration path.

Platform gap fill

Registration audit timestamp is platform behavior.

Example: 2026-05-24T13:20:00.000Z

Invalid when: Missing, not a timestamp, or earlier than tenant creation in a way that breaks audit order.

Privacy: Standard tenant-scoped operational data.

updated_atField timestamptzRequiredDefault: now()

Timestamp when lifecycle, credential reference, display name, or metadata last changed.

Range: UTC timestamp, monotonically updated per row.

Allowed values: None.

NOT NULL after validation.

Set by the platform on updates. Must be >= created_at.

No direct foreign-key relationship.

Edge case: Envelope ingest does not update this field; it is for registration lifecycle changes.

Platform gap fill

Registration lifecycle evidence is platform behavior.

Example: 2026-05-24T13:20:00.000Z

Invalid when: Missing, not a timestamp, or older than created_at.

Privacy: Standard tenant-scoped operational data.

Table

caliper.envelope Envelope

Stores one Caliper Sensor API envelope as the transport unit, preserving raw JSON-LD while adding tenant, receipt, hashing, and processing evidence.

Mixed: 1EdTech pass-through plus platform gap fill Object index

Lifecycle

Created for each accepted or retained Sensor API delivery. Successful envelopes become processed; rejected and duplicate deliveries remain evidence rows.

Authority

Raw envelope JSON-LD is the interchange authority; canonical JSON and relational columns are derived evidence and query indexes.

Keys and indexes

  • Primary: envelope_id
  • Unique: (tenant_id, envelope_hash)
  • (tenant_id, received_at desc) for envelope history
  • (tenant_id, envelope_hash) for retry detection
Example Envelope row
{
  "envelope_id": "7d68ad22-cbb1-479a-9c27-0941647cc001",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "sensor_id": "2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001",
  "sensor_iri": "https://timeback.example.edu/sensors/caliper",
  "data_version": "http://purl.imsglobal.org/ctx/caliper/v1p2",
  "send_time": "2026-05-24T13:21:00.000Z",
  "received_at": "2026-05-24T13:21:02.125Z",
  "envelope_hash": "7a824d9b6e7e3f6a28a5d5b4a7c1f2714b9f1f3074a6bd0fe997c5f0b5ab0101",
  "envelope_status": "processed",
  "rejection_reason": null
}
FieldType and nullabilityMeaning and rangeConstraintsRelationship and edge casesProvenance and invalid values
envelope_idPrimary key uuidRequired

Stable platform identifier for one received Caliper envelope.

Range: UUID generated by the platform.

Allowed values: None.

NOT NULL after validation.

Unique primary key. Do not expose as the Caliper event id.

No direct foreign-key relationship.

Edge case: The Sensor API success response is 204, so this id is observed through TimeBack read projections, not the Caliper write response.

Platform gap fill

Envelope-first ingest needs a platform identifier for replay and projections.

Example: 7d68ad22-cbb1-479a-9c27-0941647cc001

Invalid when: Blank, duplicated, not a UUID, or reused for a different envelope.

Privacy: Standard tenant-scoped operational data.

tenant_idForeign key and tenant-scope key uuidRequired

Shared platform tenant that owns this Caliper row. This replaces the prior workspace's local caliper.tenant table.

Range: UUID that exists in platform.tenant(tenant_id).

Allowed values: None.

NOT NULL after validation.

Must equal the required X-Timeback-Tenant header and the authenticated JWT tenant_id/tenantId claim for writes and reads. Every tenant-scoped uniqueness check includes this field.

Belongs to exactly one platform.tenant. One platform tenant has many Caliper sensors, envelopes, events, entities, links, and evidence rows.

Edge case: Tenant must be resolved before any raw Caliper payload is persisted. Do not infer tenancy from actor, group, or Person identifiers.

Platform gap fill

Caliper does not define customer tenancy; platform3 inherits tenant truth from platform.tenant and routes it through X-Timeback-Tenant plus JWT claims.

Example: 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3

Invalid when: Missing, not a UUID, absent from platform.tenant, different from X-Timeback-Tenant, or different from the authenticated token tenant claim.

Privacy: Standard tenant-scoped operational data.

sensor_idField uuidOptional

Registered sensor row matched from tenant_id plus the envelope sensor IRI.

Range: UUID from caliper.sensor.sensor_id, nullable only for retained rejected evidence where matching failed.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

References caliper.sensor(sensor_id). If present, the sensor row must belong to the same tenant.

Optional belongs-to-one caliper.sensor. One sensor can own many envelopes.

Edge case: Rejected envelopes can keep sensor_iri even when sensor_id is null because registration failed.

Platform gap fill

Sensor registration is platform authorization around the Caliper envelope.

Example: 2fb3d3d9-a9f0-49ac-9ef7-5d2d1d0b1001

Invalid when: References a sensor from another tenant, a retired/paused sensor for a processed envelope, or a missing row.

Privacy: Standard tenant-scoped operational data.

sensor_iriField textRequired

Caliper envelope sensor property preserved exactly as the sender supplied it or as the id of the supplied Sensor entity.

Range: Absolute IRI string.

Allowed values: None.

NOT NULL after validation.

Required by Caliper envelope shape. Must match a registered active sensor for processed envelopes.

Matches caliper.sensor.sensor_iri within the same tenant when registration succeeds.

Edge case: If sensor is an entity object, persist the entity id here and keep the full object in raw_envelope.

1EdTech pass-through

Caliper envelope sensor property.

Example: https://timeback.example.edu/sensors/caliper

Invalid when: Missing, empty, not an IRI, or not registered for the authenticated tenant.

Privacy: Standard tenant-scoped operational data.

data_versionField textRequiredDefault: http://purl.imsglobal.org/ctx/caliper/v1p2

Caliper dataVersion for the envelope. This 1EdTech surface accepts only Caliper Analytics 1.2.

Range: Exactly http://purl.imsglobal.org/ctx/caliper/v1p2.

Allowed values: Caliper dataVersion

NOT NULL after validation.

Must equal the documented constant. Public Sensor API validation requires the payload value; the database default is only a direct-migration guardrail.

No direct foreign-key relationship.

Edge case: Do not use the SQL default as permission to accept a request body without dataVersion.

1EdTech pass-through

Caliper envelope dataVersion property, narrowed to the approved v1p2 surface.

Example: http://purl.imsglobal.org/ctx/caliper/v1p2

Invalid when: Different Caliper version, missing from the request envelope, or any non-URL synonym.

Privacy: Standard tenant-scoped operational data.

send_timeField timestamptzRequired

Caliper envelope sendTime timestamp supplied by the Sensor.

Range: ISO 8601 timestamp parseable as UTC.

Allowed values: None.

NOT NULL after validation.

Required by envelope validation. Represents sender time, not platform receipt time.

No direct foreign-key relationship.

Edge case: Clock skew is possible; use received_at for platform ordering and send_time for sender evidence.

1EdTech pass-through

Caliper envelope sendTime property.

Example: 2026-05-24T13:21:00.000Z

Invalid when: Missing, malformed, impossible date, or treated as the platform receipt timestamp.

Privacy: Standard tenant-scoped operational data.

received_atField timestamptzRequiredDefault: now()

Platform timestamp when the endpoint received the envelope.

Range: UTC timestamp.

Allowed values: None.

NOT NULL after validation.

Set by the platform before normalization and never taken from the sender payload.

No direct foreign-key relationship.

Edge case: Duplicate deliveries keep their own receipt evidence without creating a second event row.

Platform gap fill

Receipt evidence is a platform gap fill around Sensor API delivery.

Example: 2026-05-24T13:21:02.125Z

Invalid when: Missing, malformed, or overwritten by sendTime.

Privacy: Standard tenant-scoped operational data.

raw_envelopeField jsonbRequired

Original Caliper JSON-LD envelope body accepted by the endpoint.

Range: JSON object with sensor, sendTime, dataVersion, and non-empty data array.

Allowed values: None.

NOT NULL after validation.

Must preserve sender field names, nested objects, and extension data. Must not be mutated to fit relational columns.

No direct foreign-key relationship.

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.

1EdTech pass-through

Original Caliper JSON-LD envelope is the interchange authority.

Example: {"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"}]}

Invalid when: Not JSON, missing required envelope fields, has data that is not an array, or is redacted before persistence after acceptance.

Privacy: Sensitive tenant data. Read only through tenant-scoped authorization.

canonical_envelopeField jsonbRequired

Deterministically ordered JSON representation used to compute envelope_hash and replay evidence.

Range: Canonical JSON object derived from raw_envelope.

Allowed values: None.

NOT NULL after validation.

Must contain semantically identical data to raw_envelope with stable key ordering for hashing.

No direct foreign-key relationship.

Edge case: Canonicalization is for hashing only. raw_envelope remains the evidence payload.

Platform gap fill

Canonical payload hashes are required for retry-safe persistence and replay evidence.

Example: {"data":[{"type":"AssessmentItemEvent"}],"dataVersion":"http://purl.imsglobal.org/ctx/caliper/v1p2","sendTime":"2026-05-24T13:21:00.000Z","sensor":"https://timeback.example.edu/sensors/caliper"}

Invalid when: Differs semantically from raw_envelope or includes platform-only values not present in the canonicalized envelope.

Privacy: Standard tenant-scoped operational data.

envelope_hashTenant-scoped unique hash textRequired

SHA-256 hash of canonical_envelope used to detect duplicate Sensor API deliveries.

Range: 64 lowercase hexadecimal characters.

Allowed values: None.

NOT NULL after validation.

Unique with tenant_id. Same tenant and same hash is duplicate delivery; same Idempotency-Key with different hash is a platform conflict.

No direct foreign-key relationship.

Edge case: Do not treat envelope_hash as an official Caliper identifier.

Platform gap fill

Canonical hashes are a platform idempotency and evidence gap fill.

Example: 7a824d9b6e7e3f6a28a5d5b4a7c1f2714b9f1f3074a6bd0fe997c5f0b5ab0101

Invalid when: Not a SHA-256 hex digest, recomputes to a different value, or used globally without tenant scope.

Privacy: Standard tenant-scoped operational data.

envelope_statusField textRequiredDefault: received

Processing state for this envelope receipt.

Range: received, processed, rejected, duplicate.

Allowed values: Envelope processing status

NOT NULL after validation.

Must be one of envelope_status values. processed requires successful normalization; rejected requires rejection_reason; duplicate must not create second event rows.

No direct foreign-key relationship.

Edge case: The prior workspace used superseded; approved platform3 architecture uses duplicate for replay evidence.

Platform gap fill

Envelope processing state preserves Sensor API receipt evidence.

Example: processed

Invalid when: Outside the enum, processed with no normalized rows for an event envelope, or duplicate with different canonical payload.

Privacy: Standard tenant-scoped operational data.

rejection_reasonField textOptional

Redacted machine-readable reason explaining why an envelope was rejected.

Range: Short code or operator-safe message; nullable for processed and duplicate envelopes.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Required for rejected rows. Must not echo raw learner data, bearer tokens, IP addresses, user agents, or raw payload fragments.

No direct foreign-key relationship.

Edge case: Use Problem.fieldErrors for request diagnostics, but keep values redacted.

Platform gap fill

Rejection evidence is a platform persistence gap fill around Caliper validation.

Example: unsupported_data_version

Invalid when: Missing for a rejected envelope, contains raw PII or token data, or exposes raw field values from learner payloads.

Privacy: Publicly safe only after redaction.

Table

caliper.event Event

Stores normalized Caliper Event query fields while preserving raw_event as the source record.

Mixed: 1EdTech pass-through plus platform gap fill Object index

Lifecycle

Created or updated after envelope validation. Each tenant keeps one current normalized row for each event IRI and a duplicate guard by canonical event hash.

Authority

raw_event is authoritative for interchange. Relational columns are a tenant-scoped analytics index and operational read projection.

Keys and indexes

  • Primary: event_row_id
  • Unique: (tenant_id, event_iri), (tenant_id, event_hash)
  • (tenant_id, event_time desc) for learning timeline reads
  • (profile, action, event_type) for analytics slices
Example Event row
{
  "event_row_id": "b9f6dd89-b024-4d1d-a0c5-c923aab41001",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "envelope_id": "7d68ad22-cbb1-479a-9c27-0941647cc001",
  "event_iri": "urn:uuid:11111111-1111-4111-8111-111111111111",
  "event_type": "AssessmentItemEvent",
  "profile": "AssessmentProfile",
  "action": "Completed",
  "event_time": "2026-05-24T13:20:42.000Z"
}
FieldType and nullabilityMeaning and rangeConstraintsRelationship and edge casesProvenance and invalid values
event_row_idPrimary key uuidRequired

Stable platform row identifier for one normalized event projection.

Range: UUID generated by the platform.

Allowed values: None.

NOT NULL after validation.

Unique primary key. Not a Caliper event id.

No direct foreign-key relationship.

Edge case: Event upserts by event_iri can keep or replace this row depending on implementation, but event_iri is the Caliper identity.

Platform gap fill

Relational event projection needs a platform row identifier.

Example: b9f6dd89-b024-4d1d-a0c5-c923aab41001

Invalid when: Blank, duplicated, not a UUID, or exposed as the Caliper event IRI.

Privacy: Standard tenant-scoped operational data.

tenant_idForeign key and tenant-scope key uuidRequired

Shared platform tenant that owns this Caliper row. This replaces the prior workspace's local caliper.tenant table.

Range: UUID that exists in platform.tenant(tenant_id).

Allowed values: None.

NOT NULL after validation.

Must equal the required X-Timeback-Tenant header and the authenticated JWT tenant_id/tenantId claim for writes and reads. Every tenant-scoped uniqueness check includes this field.

Belongs to exactly one platform.tenant. One platform tenant has many Caliper sensors, envelopes, events, entities, links, and evidence rows.

Edge case: Tenant must be resolved before any raw Caliper payload is persisted. Do not infer tenancy from actor, group, or Person identifiers.

Platform gap fill

Caliper does not define customer tenancy; platform3 inherits tenant truth from platform.tenant and routes it through X-Timeback-Tenant plus JWT claims.

Example: 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3

Invalid when: Missing, not a UUID, absent from platform.tenant, different from X-Timeback-Tenant, or different from the authenticated token tenant claim.

Privacy: Standard tenant-scoped operational data.

envelope_idForeign key uuidRequired

Envelope that carried this event.

Range: UUID from caliper.envelope.envelope_id.

Allowed values: None.

NOT NULL after validation.

Must reference an envelope owned by the same tenant.

Belongs to exactly one caliper.envelope. One envelope can contain many Caliper events and entities.

Edge case: If duplicate delivery is detected, no second event row should be created.

Platform gap fill

Envelope-first ingest keeps the transport unit linked to normalized events.

Example: 7d68ad22-cbb1-479a-9c27-0941647cc001

Invalid when: Missing, references another tenant's envelope, or points at a rejected envelope that did not normalize this event.

Privacy: Standard tenant-scoped operational data.

event_iriTenant-scoped Caliper natural key textRequired

Caliper event id IRI supplied by the sender.

Range: Non-empty IRI or URN string.

Allowed values: None.

NOT NULL after validation.

Required by event validation and unique within tenant.

Referenced by read projection GET /caliper/v1p2/events?eventIri=...

Edge case: Same event_iri in a different tenant is a different tenant-scoped event.

1EdTech pass-through

Caliper event id property.

Example: urn:uuid:11111111-1111-4111-8111-111111111111

Invalid when: Missing, empty, duplicated within tenant with conflicting content, or replaced by a platform row id.

Privacy: Standard tenant-scoped operational data.

event_typeField textRequired

Caliper Event subclass preserved from the event type property.

Range: One Caliper 1.2 event type.

Allowed values: Caliper Event type

NOT NULL after validation.

Must be one of event_type_ck values.

No direct foreign-key relationship.

Edge case: Profile inference uses this field only for normalized projection; raw_event remains unchanged.

1EdTech pass-through

Caliper 1.2 event class vocabulary.

Example: AssessmentItemEvent

Invalid when: Unknown event class, entity class in the event type slot, or misspelled/case-changed term.

Privacy: Standard tenant-scoped operational data.

profileField textRequired

Caliper profile term associated with this event, supplied by the sender or inferred from event_type for projection.

Range: One Caliper 1.2 profile value.

Allowed values: Caliper Profile

NOT NULL after validation.

Must be one of profile_ck values and compatible with event_type.

No direct foreign-key relationship.

Edge case: When omitted in raw_event, this normalized column can be inferred; raw_event still shows omission.

1EdTech pass-through

Caliper profile vocabulary plus architecture-approved inference for normalized projection.

Example: AssessmentProfile

Invalid when: Unknown profile, profile conflicts with event_type, or profile is used to mutate raw_event.

Privacy: Standard tenant-scoped operational data.

actionField textRequired

Caliper controlled action term describing what the actor did.

Range: One Caliper 1.2 action value.

Allowed values: Caliper Action

NOT NULL after validation.

Must be one of action_ck values.

No direct foreign-key relationship.

Edge case: Do not collapse actions into TimeBack-specific verbs on the 1EdTech surface.

1EdTech pass-through

Caliper action vocabulary.

Example: Completed

Invalid when: Product-local verb, lowercase synonym, unknown action, or an action not valid for the event's semantics.

Privacy: Standard tenant-scoped operational data.

actorField jsonbRequired

Caliper actor property. Usually a Person, SoftwareApplication, or Organization entity, or an IRI reference.

Range: JSON string IRI or Caliper entity object.

Allowed values: None.

NOT NULL after validation.

Required by event validation. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation actor when it is an entity object.

Edge case: May contain direct learner PII. Tenant scope and redaction rules apply.

1EdTech pass-through

Caliper actor property.

Example: {"id":"https://timeback.example.edu/users/student-1","type":"Person","name":"Ada Learner"}

Invalid when: Missing, not an IRI or entity object, lacks id/type, or includes unsupported entity type.

Privacy: Sensitive when it names or identifies a learner, parent, teacher, or staff member.

objectField jsonbRequired

Caliper object property. This is the primary thing acted on by the actor.

Range: JSON string IRI or Caliper entity object.

Allowed values: None.

NOT NULL after validation.

Required by event validation. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation object when it is an entity object.

Edge case: Object may be an assessment item, resource, message, query, tool, or another Caliper entity.

1EdTech pass-through

Caliper object property.

Example: {"id":"https://timeback.example.edu/items/fractions-1","type":"AssessmentItem","name":"Fractions check"}

Invalid when: Missing, not an IRI or entity object, lacks id/type, or contains unsupported entity type.

Privacy: Sensitive when resource names or IDs expose learner work or private curriculum context.

event_timeField timestamptzRequired

Caliper eventTime timestamp representing when the learning activity occurred.

Range: ISO 8601 timestamp parseable as UTC.

Allowed values: None.

NOT NULL after validation.

Required by event validation. Use for activity time, not endpoint receipt time.

No direct foreign-key relationship.

Edge case: Clock skew is possible. Timelines should display event_time and retain received_at for debugging.

1EdTech pass-through

Caliper eventTime property.

Example: 2026-05-24T13:20:42.000Z

Invalid when: Missing, malformed, or replaced by received_at.

Privacy: Standard tenant-scoped operational data.

ed_appField jsonbOptional

Caliper edApp property. Educational application associated with the event.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation edApp when it is an entity object.

Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.

1EdTech pass-through

Caliper edApp property.

Example: {"id":"https://timeback.example.edu/apps/timeback","type":"SoftwareApplication"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

group_entityField jsonbOptional

Caliper group property. Group, course section, class, or cohort context for the event.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation group when it is an entity object.

Edge case: Database column is group_entity to avoid SQL ambiguity; the public Caliper property remains group.

1EdTech pass-through

Caliper group property.

Example: {"id":"https://timeback.example.edu/classes/math-3-a","type":"CourseSection"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

membershipField jsonbOptional

Caliper membership property. Membership relationship tying the actor to the group.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation membership when it is an entity object.

Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.

1EdTech pass-through

Caliper membership property.

Example: {"id":"https://timeback.example.edu/memberships/student-1-math-3-a","type":"Membership"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

generatedField jsonbOptional

Caliper generated property. Output generated by the action, such as Attempt, Result, Response, or another entity.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation generated when it is an entity object.

Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.

1EdTech pass-through

Caliper generated property.

Example: {"id":"https://timeback.example.edu/attempts/attempt-1","type":"Attempt"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

targetField jsonbOptional

Caliper target property. Target entity for navigation, launch, move, or similar actions.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation target when it is an entity object.

Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.

1EdTech pass-through

Caliper target property.

Example: {"id":"https://timeback.example.edu/resources/fractions-video","type":"DigitalResource"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

referrerField jsonbOptional

Caliper referrer property. Referring resource for navigation or reading events.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation referrer when it is an entity object.

Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.

1EdTech pass-through

Caliper referrer property.

Example: {"id":"https://timeback.example.edu/pages/unit-3","type":"WebPage"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

federated_sessionField jsonbOptional

Caliper federatedSession property. Federated session entity that correlates activity across tools.

Range: JSON string IRI, Caliper entity object, or array when Caliper permits multiple generated values.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when the event type/profile does not use this property. If object form is supplied, it must include id and type.

Projected to caliper.entity and caliper.event_entity_link with relation federatedSession when it is an entity object.

Edge case: Null does not mean the event is invalid unless the event profile specifically requires this relation.

1EdTech pass-through

Caliper federatedSession property.

Example: {"id":"https://timeback.example.edu/lti/sessions/session-1","type":"LtiSession"}

Invalid when: Malformed entity object, unsupported entity type, or used to satisfy a required actor/object field.

Privacy: Sensitive when nested entity values identify learners, staff, groups, or private resources.

event_extensionsField jsonbRequiredDefault: {}

Sender extension properties preserved outside normalized Caliper properties.

Range: JSON object. Keys must not collide with official Caliper properties in the normalized projection.

Allowed values: None.

NOT NULL after validation.

Defaults to {}. Extensions cannot satisfy required Caliper fields or redefine official terms.

No direct foreign-key relationship.

Edge case: Unknown top-level event keys can be collected here for operational inspection while raw_event remains exact.

Platform gap fill

Extension preservation is a platform gap fill that keeps sender extensions without promoting them to Caliper vocabulary.

Example: {"https://timeback.example.edu/extensions/outcomeScore":1}

Invalid when: Not an object, overrides actor/action/object/type/profile, or is treated as official 1EdTech vocabulary.

Privacy: Sensitive when extensions contain learner, score, or school data. Redact from secondary surfaces.

raw_eventField jsonbRequired

Original Caliper JSON-LD event object accepted from the envelope.

Range: JSON object with id, type, actor, action, object, eventTime, and optional Caliper properties/extensions.

Allowed values: None.

NOT NULL after validation.

Must preserve sender field names and nested data exactly after acceptance.

No direct foreign-key relationship.

Edge case: This is the audit source for exact replay. Do not make relational columns the source of interchange truth.

1EdTech pass-through

Original Caliper JSON-LD event object.

Example: {"id":"urn:uuid:11111111-1111-4111-8111-111111111111","type":"AssessmentItemEvent","action":"Completed","eventTime":"2026-05-24T13:20:42.000Z"}

Invalid when: Missing required event properties, mutated to match relational names, or redacted in-place after acceptance.

Privacy: Sensitive tenant data; may contain learner PII and should not be copied to logs or Problems.

canonical_eventField jsonbRequired

Deterministically ordered event object used for hashing and replay evidence.

Range: Canonical JSON object derived from raw_event.

Allowed values: None.

NOT NULL after validation.

Must preserve semantic equality with raw_event plus normalized inferred profile when architecture permits it.

No direct foreign-key relationship.

Edge case: Profile inference can appear in canonical projection while raw_event remains unchanged.

Platform gap fill

Canonical payload hashing is platform idempotency evidence.

Example: {"action":"Completed","eventTime":"2026-05-24T13:20:42.000Z","id":"urn:uuid:11111111-1111-4111-8111-111111111111","profile":"AssessmentProfile","type":"AssessmentItemEvent"}

Invalid when: Contains platform-only fields, differs from raw_event semantics, or cannot reproduce event_hash.

Privacy: Standard tenant-scoped operational data.

event_hashTenant-scoped unique hash textRequired

SHA-256 hash of canonical_event.

Range: 64 lowercase hexadecimal characters.

Allowed values: None.

NOT NULL after validation.

Unique with tenant_id. Used to detect duplicate event delivery inside a tenant.

No direct foreign-key relationship.

Edge case: event_iri remains the Caliper identity; event_hash is content evidence.

Platform gap fill

Canonical event hash supports idempotency and replay evidence.

Example: 5b87f25d3f82f75e9ff6ef123c9d0f02f33b8c92c3cda7edce5a2a5f0cde1001

Invalid when: Not a SHA-256 hex digest, recomputes differently, or is used outside tenant scope.

Privacy: Standard tenant-scoped operational data.

Table

caliper.entity Entity

Keeps a current tenant-scoped view of Caliper Entity objects observed in events or describe-style payloads.

Mixed: 1EdTech pass-through plus platform gap fill Object index

Lifecycle

Upserted whenever an entity object appears in accepted data. first_seen_at records first observation; last_seen_at records the latest observation.

Authority

raw_entity preserves the latest observed Caliper entity object. Historical entity changes remain in raw events.

Keys and indexes

  • Primary: entity_row_id
  • Unique: (tenant_id, entity_iri)
  • (tenant_id, entity_type) for actor/resource/app queries
Example Entity row
{
  "entity_row_id": "018c8207-7418-47fd-9c1c-3f38a3b41001",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "entity_iri": "https://timeback.example.edu/users/student-1",
  "entity_type": "Person",
  "name": "Ada Learner",
  "entity_hash": "0d8a2f8061e0f8fe4632b26ddc11141e662f15bb0b19e2d3897f5214aee10101",
  "first_seen_at": "2026-05-24T13:21:02.125Z",
  "last_seen_at": "2026-05-24T13:21:02.125Z"
}
FieldType and nullabilityMeaning and rangeConstraintsRelationship and edge casesProvenance and invalid values
entity_row_idPrimary key uuidRequired

Stable platform row identifier for one current entity projection.

Range: UUID generated by the platform.

Allowed values: None.

NOT NULL after validation.

Unique primary key. Do not expose as the Caliper entity id.

No direct foreign-key relationship.

Edge case: Entity row identity can stay stable while raw_entity changes on later observations.

Platform gap fill

Current-view projection needs a platform row identifier.

Example: 018c8207-7418-47fd-9c1c-3f38a3b41001

Invalid when: Blank, duplicated, not a UUID, or used as entity_iri.

Privacy: Standard tenant-scoped operational data.

tenant_idForeign key and tenant-scope key uuidRequired

Shared platform tenant that owns this Caliper row. This replaces the prior workspace's local caliper.tenant table.

Range: UUID that exists in platform.tenant(tenant_id).

Allowed values: None.

NOT NULL after validation.

Must equal the required X-Timeback-Tenant header and the authenticated JWT tenant_id/tenantId claim for writes and reads. Every tenant-scoped uniqueness check includes this field.

Belongs to exactly one platform.tenant. One platform tenant has many Caliper sensors, envelopes, events, entities, links, and evidence rows.

Edge case: Tenant must be resolved before any raw Caliper payload is persisted. Do not infer tenancy from actor, group, or Person identifiers.

Platform gap fill

Caliper does not define customer tenancy; platform3 inherits tenant truth from platform.tenant and routes it through X-Timeback-Tenant plus JWT claims.

Example: 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3

Invalid when: Missing, not a UUID, absent from platform.tenant, different from X-Timeback-Tenant, or different from the authenticated token tenant claim.

Privacy: Standard tenant-scoped operational data.

entity_iriTenant-scoped Caliper natural key textRequired

Caliper entity id IRI supplied by the sender.

Range: Non-empty IRI or URN string.

Allowed values: None.

NOT NULL after validation.

Required for entity objects and unique within tenant.

Referenced by caliper.event_entity_link through entity_row_id after upsert.

Edge case: Same IRI in different tenants remains tenant-scoped. This table is a current view, not a historical entity-version table.

1EdTech pass-through

Caliper entity id property.

Example: https://timeback.example.edu/users/student-1

Invalid when: Missing, blank, duplicated with incompatible entity type, or replaced by a platform row id.

Privacy: Standard tenant-scoped operational data.

entity_typeField textRequired

Caliper Entity class for this entity projection.

Range: One Caliper 1.2 entity class.

Allowed values: Caliper Entity type

NOT NULL after validation.

Must be one of entity_type_ck values.

No direct foreign-key relationship.

Edge case: Extensions can remain in raw_entity; entity_type itself must remain a Caliper term.

1EdTech pass-through

Caliper 1.2 entity class vocabulary.

Example: Person

Invalid when: Unknown class, event class in entity slot, misspelled term, or product-local class.

Privacy: Standard tenant-scoped operational data.

nameField textOptional

Optional Caliper name property when the entity provides a display label.

Range: Text. Nullable when no Caliper name property is supplied.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Preserve sender value; do not synthesize names for entities that lack one.

No direct foreign-key relationship.

Edge case: For Person entities this can be direct learner, parent, or teacher PII.

1EdTech pass-through

Caliper entity name property.

Example: Ada Learner

Invalid when: Invented by the platform, copied to logs/public evidence, or used as a stable identifier.

Privacy: Sensitive when it identifies a person or private learning resource.

date_createdField timestamptzOptional

Optional Caliper dateCreated value from the entity object.

Range: ISO 8601 timestamp parseable as UTC.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when absent. Represents entity creation in sender context, not row creation.

No direct foreign-key relationship.

Edge case: Can predate first_seen_at because the platform may observe an entity long after the sender created it.

1EdTech pass-through

Caliper dateCreated property.

Example: 2026-05-01T10:00:00.000Z

Invalid when: Malformed timestamp or used as first_seen_at.

Privacy: Standard tenant-scoped operational data.

date_modifiedField timestamptzOptional

Optional Caliper dateModified value from the entity object.

Range: ISO 8601 timestamp parseable as UTC.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

Nullable when absent. Represents sender-side modification time.

No direct foreign-key relationship.

Edge case: Can be older than last_seen_at because observation time and sender modification time are different.

1EdTech pass-through

Caliper dateModified property.

Example: 2026-05-20T12:30:00.000Z

Invalid when: Malformed timestamp or earlier than date_created when both are provided and the sender semantics forbid it.

Privacy: Standard tenant-scoped operational data.

raw_entityField jsonbRequired

Most recent raw JSON-LD entity object observed for this tenant and entity IRI.

Range: JSON object with id, type, and optional Caliper properties/extensions.

Allowed values: None.

NOT NULL after validation.

Must preserve sender field names and nested values for the current entity view.

No direct foreign-key relationship.

Edge case: Historical versions are reconstructed from raw_event history, not from this current-view row.

1EdTech pass-through

Original Caliper entity object.

Example: {"id":"https://timeback.example.edu/users/student-1","type":"Person","name":"Ada Learner"}

Invalid when: Missing id/type, mutated to fit relational columns, or stripped of valid Caliper fields after acceptance.

Privacy: Sensitive tenant data; may contain learner or roster PII.

canonical_entityField jsonbRequired

Deterministically ordered entity object used for hashing and change detection.

Range: Canonical JSON object derived from raw_entity.

Allowed values: None.

NOT NULL after validation.

Must be semantically equal to raw_entity and reproduce entity_hash.

No direct foreign-key relationship.

Edge case: Do not use canonical_entity as a redacted public representation.

Platform gap fill

Canonical entity hash supports replay and current-view change detection.

Example: {"id":"https://timeback.example.edu/users/student-1","name":"Ada Learner","type":"Person"}

Invalid when: Contains platform-only fields or differs semantically from raw_entity.

Privacy: Sensitive when raw_entity is sensitive.

entity_hashField textRequired

SHA-256 hash of canonical_entity.

Range: 64 lowercase hexadecimal characters.

Allowed values: None.

NOT NULL after validation.

Must recompute from canonical_entity.

No direct foreign-key relationship.

Edge case: A changed hash means the current-view entity changed; historical source remains in raw events.

Platform gap fill

Canonical entity hash supports replay and change evidence.

Example: 0d8a2f8061e0f8fe4632b26ddc11141e662f15bb0b19e2d3897f5214aee10101

Invalid when: Not a SHA-256 hex digest or does not match canonical_entity.

Privacy: Standard tenant-scoped operational data.

first_seen_atField timestamptzRequiredDefault: now()

First platform receipt timestamp for this tenant and entity IRI.

Range: UTC timestamp.

Allowed values: None.

NOT NULL after validation.

Set by the platform when the entity is first observed and never moved forward on later upserts.

No direct foreign-key relationship.

Edge case: Not the same as Caliper dateCreated.

Platform gap fill

Current-view projection needs first-observed evidence.

Example: 2026-05-24T13:21:02.125Z

Invalid when: Missing, malformed, or later than last_seen_at.

Privacy: Standard tenant-scoped operational data.

last_seen_atField timestamptzRequiredDefault: now()

Most recent platform receipt timestamp for this tenant and entity IRI.

Range: UTC timestamp.

Allowed values: None.

NOT NULL after validation.

Updated on every accepted observation of the entity. Must be >= first_seen_at.

No direct foreign-key relationship.

Edge case: Not the same as Caliper dateModified.

Platform gap fill

Current-view projection needs last-observed evidence.

Example: 2026-05-24T13:21:02.125Z

Invalid when: Missing, malformed, or older than first_seen_at.

Privacy: Standard tenant-scoped operational data.

Table

caliper.conformance_run Conformance Run

Stores local docs, implementation, transport, profile, demo/prod, and surface-QC evidence without claiming official 1EdTech certification.

Platform gap fill Object index

Lifecycle

Created by local gates, reviewer checks, implementation tests, surface QC, or integration proof. Rows are append-only evidence.

Authority

Local platform evidence only. Official 1EdTech certification must be documented separately after the external process actually passes.

Keys and indexes

  • Primary: conformance_run_id
  • Unique: No natural uniqueness; each run is append-only evidence.
  • (finished_at desc) for latest evidence lookup
  • (tenant_id, finished_at desc) for tenant-scoped integration evidence
Example Conformance Run row
{
  "conformance_run_id": "45f8b7c8-d4ec-43ca-912f-61e39f1d1001",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "source_name": "surface-qc-demo-prod-caliper",
  "source_version": "caliper-analytics-1.2-platform3-a1",
  "result": "pass",
  "evidence": {
    "docsUrl": "https://platform3-andymontgomery-9773s-projects.vercel.app/caliper/1edtech/data_dictionary",
    "redacted": true
  },
  "started_at": "2026-05-24T13:30:00.000Z",
  "finished_at": "2026-05-24T13:32:00.000Z"
}
FieldType and nullabilityMeaning and rangeConstraintsRelationship and edge casesProvenance and invalid values
conformance_run_idPrimary key uuidRequired

Stable identifier for one local conformance, documentation, implementation, or integration evidence run.

Range: UUID generated by the platform.

Allowed values: None.

NOT NULL after validation.

Unique primary key.

No direct foreign-key relationship.

Edge case: A pass row is local evidence and not an official certification claim.

Platform gap fill

Release evidence is a platform gap fill.

Example: 45f8b7c8-d4ec-43ca-912f-61e39f1d1001

Invalid when: Blank, duplicated, not a UUID, or reused across runs.

Privacy: Standard tenant-scoped operational data.

tenant_idField uuidOptional

Optional platform tenant associated with this evidence run.

Range: UUID from platform.tenant(tenant_id), nullable for global docs or package checks.

Allowed values: None.

Nullable when the source payload or workflow branch omits it.

When present, must match the tenant whose demo/prod or integration evidence produced the run.

Optionally belongs to one platform.tenant. One tenant can have many evidence runs.

Edge case: Global documentation checks may leave this null.

Platform gap fill

Evidence can be tenant-scoped or global; tenant truth is inherited from platform.tenant.

Example: 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3

Invalid when: References another tenant, is malformed, or is filled with a learner/person identifier.

Privacy: Standard tenant-scoped operational data.

source_nameField textRequired

Name of the local or external gate that produced the evidence.

Range: Stable short text identifier.

Allowed values: None.

NOT NULL after validation.

Must identify a reproducible gate, reviewer pass, or integration app check.

No direct foreign-key relationship.

Edge case: Use source_version and evidence for command/version details.

Platform gap fill

Local evidence must be attributable to a concrete gate.

Example: surface-qc-demo-prod-caliper

Invalid when: Blank, vague, or names an official certification gate that did not actually run.

Privacy: Standard tenant-scoped operational data.

source_versionField textRequired

Version, commit, source bundle, or artifact label used by the evidence run.

Range: Stable text.

Allowed values: None.

NOT NULL after validation.

Must be specific enough to reproduce or compare the evidence.

No direct foreign-key relationship.

Edge case: For hosted docs, include canonical URL in evidence and commit/deploy IDs when available.

Platform gap fill

Evidence needs source/version provenance.

Example: caliper-analytics-1.2-platform3-a1

Invalid when: Blank, points at mutable latest without a date/commit, or claims unrun official certification.

Privacy: Standard tenant-scoped operational data.

resultField textRequired

Outcome of the evidence run.

Range: pass, fail, warning.

Allowed values: Conformance result

NOT NULL after validation.

Must be one of conformance_result values.

No direct foreign-key relationship.

Edge case: Official certification claims require a separate linked process; local pass is not enough.

Platform gap fill

Local conformance result state is a platform release-evidence gap fill.

Example: pass

Invalid when: Outside enum, pass without executed evidence, or warning used to hide a blocking failure.

Privacy: Standard tenant-scoped operational data.

evidenceField jsonbRequired

Structured, redacted evidence payload from the run.

Range: JSON object with hashes, URLs, command names, result counts, or transcript references.

Allowed values: None.

NOT NULL after validation.

Must be an object. Must not contain raw learner data, raw envelopes, bearer tokens, IP addresses, user agents, or secrets.

No direct foreign-key relationship.

Edge case: Store hashes and object-storage references for bulky artifacts rather than copying full transcripts into JSONB.

Platform gap fill

Evidence payload lets local gates evolve without schema churn.

Example: {"docsUrl":"https://platform3-andymontgomery-9773s-projects.vercel.app/caliper/1edtech/data_dictionary","redacted":true}

Invalid when: Not JSON, contains secrets/PII, or is the only place a required contract is documented.

Privacy: Must be redacted before persistence.

started_atField timestamptzRequired

Timestamp when the evidence run started.

Range: UTC timestamp.

Allowed values: None.

NOT NULL after validation.

Must be <= finished_at.

No direct foreign-key relationship.

Edge case: For instantaneous checks, started_at and finished_at can be equal.

Platform gap fill

Evidence needs timing for audit and release history.

Example: 2026-05-24T13:30:00.000Z

Invalid when: Missing, malformed, or after finished_at.

Privacy: Standard tenant-scoped operational data.

finished_atField timestamptzRequired

Timestamp when the evidence run finished.

Range: UTC timestamp.

Allowed values: None.

NOT NULL after validation.

Must be >= started_at and indexed for latest-evidence lookup.

No direct foreign-key relationship.

Edge case: Failed and warning runs still require finished_at when the gate produced a result.

Platform gap fill

Evidence needs timing for audit and release history.

Example: 2026-05-24T13:32:00.000Z

Invalid when: Missing, malformed, or before started_at.

Privacy: Standard tenant-scoped operational data.

Value index

Allowed values

Every enum value below has a behavioral explanation, use condition, invalid condition, source label, and architecture link. Long Caliper vocabulary tables are generated from the vendored term index.

Allowed values

Caliper dataVersion

caliper.envelope.data_version - data_version_ck - 1 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
http://purl.imsglobal.org/ctx/caliper/v1p2 The Caliper Analytics 1.2 JSON-LD context and data version accepted by this 1EdTech surface. Use on every accepted Sensor API envelope. The database default protects direct migrations only; the public Sensor API still requires the payload value. Any other URL, a missing request-body dataVersion, misspelling, or a value from a different Caliper version. 1EdTech pass-through

Caliper 1.2 envelope dataVersion value; the architecture narrows this surface to v1p2.

Allowed values

Sensor lifecycle status

caliper.sensor.status - sensor_status_ck - 3 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. Platform gap fill

Caliper defines Sensors but not tenant-specific sender lifecycle state.

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. Platform gap fill

Caliper defines Sensors but not tenant-specific sender lifecycle state.

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. Platform gap fill

Caliper defines Sensors but not tenant-specific sender lifecycle state.

Allowed values

Envelope processing status

caliper.envelope.envelope_status - envelope_status_ck - 4 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. Platform gap fill

Envelope processing state is a platform persistence gap fill around the Sensor API transport unit.

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. Platform gap fill

Envelope processing state is a platform persistence gap fill around the Sensor API transport unit.

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. Platform gap fill

Envelope processing state is a platform persistence gap fill around the Sensor API transport unit.

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. Platform gap fill

Envelope processing state is a platform persistence gap fill around the Sensor API transport unit.

Allowed values

Caliper Event type

caliper.event.event_type - event_type_ck - 21 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 event-class vocabulary from the generated term index.

Allowed values

Caliper Profile

caliper.event.profile - profile_ck - 15 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 profile vocabulary from the generated term index.

Allowed values

Caliper Action

caliper.event.action - action_ck - 80 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 action vocabulary from the generated term index.

Allowed values

Caliper Entity type

caliper.entity.entity_type - entity_type_ck - 69 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

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. 1EdTech pass-through

Caliper Analytics 1.2 entity-class vocabulary from the generated term index.

Allowed values

Event-to-entity relation

caliper.event_entity_link.relation - event_entity_relation_ck - 11 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
actor The entity is the Caliper actor that performed the action. Use for top-level event.actor entity references. Invalid when the entity came from object, generated, or another relation. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

object The entity is the primary Caliper object acted on by the actor. Use for top-level event.object entity references. Invalid when the entity is only context or generated output. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

generated The entity is output generated by the action. Use for event.generated or members of event.generated arrays. Invalid when the entity is merely the target or actor. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

target The entity is the target of a move, launch, navigation, or similar action. Use for event.target entity references. Invalid when the entity is the primary object. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

edApp The entity is the educational application associated with the event. Use for event.edApp entity references. Invalid when the value is the Sensor itself rather than the Caliper edApp. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

group The entity is the group, class, course section, or cohort context. Use for event.group entity references. Invalid when membership carries the group indirectly and no group object is present. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

membership The entity is a membership relationship tying the actor to a group. Use for event.membership entity references. Invalid when the entity is a Person or Group without membership semantics. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

referrer The entity is the referring resource for navigation or reading activity. Use for event.referrer entity references. Invalid when the entity is the target destination. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

federatedSession The entity is the federated session correlating activity across tools. Use for event.federatedSession entity references. Invalid when a local session should be represented as Session instead. 1EdTech pass-through

Top-level relation names come from Caliper Event properties.

member The entity was found in a nested members collection and is projected for queryability. Use only for nested Caliper member paths found by projection. Invalid for ordinary top-level actor or object references. Platform gap fill

Nested collection paths are projected for queryability without changing raw Caliper JSON-LD.

item The entity was found in a nested items collection and is projected for queryability. Use only for nested Caliper item paths found by projection. Invalid for ordinary top-level object references. Platform gap fill

Nested collection paths are projected for queryability without changing raw Caliper JSON-LD.

Allowed values

Conformance result

caliper.conformance_run.result - conformance_result_ck - 3 values.

Allowed value index
ValueMeaningUse whenInvalid whenProvenance
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. Platform gap fill

Conformance evidence state is local platform release evidence, not an official certification claim.

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. Platform gap fill

Conformance evidence state is local platform release evidence, not an official certification claim.

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. Platform gap fill

Conformance evidence state is local platform release evidence, not an official certification claim.

Source provenance

What was adapted and what was rebuilt

This site adapts the prior Caliper SQL comments, term lists, OpenAPI shape, normalizer behavior, and generated site, then corrects them against the approved platform3 Caliper architecture.

Adapted

Caliper 1.2 event/profile/action/entity values, raw/canonical JSON model, envelope-first ingest, entity projection, extension preservation, and conformance evidence concepts.

Rebuilt

The hosted data dictionary, field-level meanings, invalid-value guidance, nullability, relationship/cardinality text, privacy handling, and CITD links were rebuilt for platform3.

Corrected

Dropped caliper.tenant, changed tenant references to platform.tenant plus X-Timeback-Tenant, used credential_ref, added updated_at, documented required request-body dataVersion, and documented duplicate rather than the prior superseded envelope status.

Files read

  • loop/context/benchmarks/data_dictionary.html
  • loop/caliper/artifacts/1edtech/architecture/site/caliper-architecture-traceability.json
  • loop/caliper/artifacts/1edtech/architecture/site/index.html
  • loop/caliper/artifacts/1edtech/architecture/commitments.json
  • vendor/caliper-prior-workspace/spec_bundle/MANIFEST.md
  • vendor/caliper-prior-workspace/ARCHITECTURE.md
  • vendor/caliper-prior-workspace/docs/1edtech-caliper-package.md
  • vendor/caliper-prior-workspace/docs/caliper-relational-json-architecture.md
  • vendor/caliper-prior-workspace/docs/conformance-and-documentation.md
  • vendor/caliper-prior-workspace/docs/plain-english-guide.md
  • vendor/caliper-prior-workspace/docs/adr/0001-generated-term-index.md
  • vendor/caliper-prior-workspace/docs/adr/0002-postgresql-primary.md
  • vendor/caliper-prior-workspace/docs/adr/0003-jsonld-authority.md
  • vendor/caliper-prior-workspace/docs/adr/0004-canonical-hashes.md
  • vendor/caliper-prior-workspace/docs/adr/0005-data-dictionary-provenance.md
  • vendor/caliper-prior-workspace/docs/adr/0006-tenant-sensor-boundary.md
  • vendor/caliper-prior-workspace/docs/adr/0007-envelope-first-ingest.md
  • vendor/caliper-prior-workspace/docs/adr/0008-entity-event-projection.md
  • vendor/caliper-prior-workspace/docs/adr/0009-extension-preservation.md
  • vendor/caliper-prior-workspace/docs/adr/0010-conformance-evidence.md
  • vendor/caliper-prior-workspace/docs/adr/0011-api-boundary-auth-hosting.md
  • vendor/caliper-prior-workspace/migrations/001_caliper_core.sql
  • vendor/caliper-prior-workspace/supabase/migrations/20260519143000_caliper_core.sql
  • 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/src/repository/caliperRepository.ts
  • vendor/caliper-prior-workspace/src/repository/postgresCaliperRepository.ts
  • vendor/caliper-prior-workspace/tests/fixtures.ts
  • vendor/caliper-prior-workspace/tests/caliperNormalizer.test.ts
  • vendor/caliper-prior-workspace/tests/supabaseRepository.test.ts
  • vendor/caliper-prior-workspace/site/index.html
  • vendor/caliper-prior-workspace/site/search-index.json
  • vendor/caliper-prior-workspace/site/spec-traceability.json