dataVersion does not determine the HTTP path.
The payload version does not make these endpoints interchangeable. In particular,
/caliper/v1p2/events is not the submission path listed above. Use only the endpoint assigned to your integration.
Partner Events API
Send an access token with thehttps://purl.imsglobal.org/spec/caliper/v1p2/scope/events.write scope. Use HTTPS and send events from a trusted backend.
GradeEvent, AssessmentEvent, AssessmentItemEvent, AssignableEvent, ViewEvent, and SessionEvent. These have Timeback-specific schemas. It does not accept ActivityEvent, TimeSpentEvent, MediaEvent, or NavigationEvent as partner event types.
Use the partner event reference for actions, identifiers, metrics, timing, and complete payloads.
Acceptance and processing
202 means the event passed request validation and was queued. It does not prove that XP, assessment results, or reporting have updated.
For grade and assessment events, the referenced course must exist and belong to the application identified in the event. That check can occur after acceptance. A missing or mismatched course can prevent downstream writes even after a
202 response.
An active enrollment is not a universal prerequisite for recording partner activity. An explicit valid course can receive a grade or assessment event before an enrollment exists. Enrollment and progression rules still affect how activity is used elsewhere.
Identity and retries
Assign each event aurn:uuid: identifier and preserve it, the original eventTime, and the attempt or session identity across transport retries. Use a new event ID for a distinct action. Do not change a submitted event’s meaning while retaining its ID.
Deduplication and ordering differ across delivery paths. Do not assume that acceptance means exactly-once processing, or that two HTTP requests finish downstream in event-time order. Keep your own durable send record and make downstream callbacks safe to process more than once.
Direct Caliper integration
The Caliper service requires an envelope withsensor, sendTime, dataVersion, and a nonempty data array. The service’s event-create scope is https://purl.imsglobal.org/spec/caliper/v1p1/scope/event.create. This scope name differs from the Partner Events API scope.
For an integration assigned the Timeback metrics profile, see Timeback activity and time events. A standard Caliper event that validates is not a promise of XP or progression support for that event.
The Caliper service also exposes POST /caliper/event/validate. This validates without storing or sending events. Use synthetic identities in validation examples; schema validation does not confirm the existence of a student, course, or enrollment.
Platform Caliper API
The Platform endpoint/caliper/v1p2 requires the Caliper v1p2/scope/events.write scope. It validates its own native schemas and a compatibility subset for TimebackProfile metrics. It rejects malformed envelopes and event IDs already present in durable storage. A 202 response acknowledges queuing. Derived results may appear later or require additional processing.
Do not substitute the Partner Events API event catalog for the Platform schema. Use the Platform event reference for native payloads. Keep event identity stable across an ambiguous retry and reconcile duplicate responses before creating a new event.
Before launch
- Confirm the event contract, base URL, application ID, and credentials for your integration.
- Use real assigned student and course IDs in your staging test, with synthetic learning content.
- Send one event for each action your app will emit.
- Verify the corresponding activity, score, time, or session result.
- Repeat a delivery with the same event identity and verify the intended retry behavior.
- Confirm which system owns XP and completion decisions. Do not infer those decisions from a Caliper type name.