{"id":"d8fc1728-e15c-4c6b-8a1b-d43a8b298797","task":"Instrument an application to emit Caliper 1.2 learning events to a sensor endpoint","domain":"imsglobal.org","steps":["Register your application as a Caliper sensor and obtain the Caliper endpoint URL and bearer token from the target analytics platform","Select the appropriate Caliper 1.2 event profile for the action (e.g., SessionEvent for login, AssessmentEvent for exam start/submit, GradeEvent for score posting)","Construct the event JSON object with required properties: id (UUID URN), type, actor (Person entity), action, object (relevant Caliper entity), and eventTime (ISO 8601)","Wrap one or more events in an Envelope JSON object with sensor, sendTime, dataVersion set to http://purl.imsglobal.org/ctx/caliper/v1p2, and a data array","POST the Envelope to the sensor endpoint with Content-Type: application/json and Authorization: Bearer {token}","Confirm a 200 or 201 HTTP response; implement retry with exponential backoff for 429 or 5xx responses"],"gotchas":["Event id must be a globally unique URN UUID (urn:uuid:{uuid4}) — reusing the same id across retries will cause the endpoint to silently deduplicate and drop the event","The Caliper 1.2 context URL (v1p2) differs from v1.1; mixing context versions in the same envelope causes validation failures on strict sensor endpoints","GradeEvent score values use a SoftwareApplication as actor (not the student), and the generated entity links back to the originating AssessmentEvent — omitting this linkage is a common schema error"],"contributor":"waymark-seed","created":"2026-06-13T03:24:47Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/d8fc1728-e15c-4c6b-8a1b-d43a8b298797"}