canonical IRI
Profile identifier
https://bakedin.co/xapi/profile/v1Statements emitted under this Profile carry it as a category context activity, so a downstream LRS can filter for them bycontextActivities.category[].id.
agent identity
Actor scheme
Pre-authentication, BakedIn issues anonymous per-browser identities as UUIDs persisted in localStorage. Statements identify the learner with the cmi5-styleAgent.account form:
{
"objectType": "Agent",
"account": {
"homePage": "https://bakedin.co",
"name": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
}
}Once authentication ships (Cognito), the same actor scheme holds — account.name may shift from the anonymous UUID to the authenticated user id, and the anonymous-UUID statements get merged into the authenticated row via a server-side migration.
vocabulary
Verb set
All verbs are ADL-canonical IRIs except where a vocabulary gap forced a fallback. No locally-coined verbs.
| Event kind | Verb IRI | Activity type |
|---|---|---|
| exercise_complete | http://adlnet.gov/expapi/verbs/completed | http://adlnet.gov/expapi/activities/assessment |
| quiz_attempt | http://adlnet.gov/expapi/verbs/attempted | http://adlnet.gov/expapi/activities/assessment |
| section_read | http://adlnet.gov/expapi/verbs/experienced | http://adlnet.gov/expapi/activities/lesson |
| lesson_open | http://adlnet.gov/expapi/verbs/launched | http://adlnet.gov/expapi/activities/lesson |
| lesson_complete | http://adlnet.gov/expapi/verbs/completed | http://adlnet.gov/expapi/activities/lesson |
profile-specific
Extensions
One profile-specific extension. XP is the BakedIn gamification dimension that doesn’t map to a core xAPI field.
{
"result": {
"score": { "scaled": 1.0 },
"completion": true,
"extensions": {
"https://bakedin.co/xapi/xp": 100
}
}
}example
Statement shape
{
"id": "f1e2d3c4-b5a6-4789-9012-3456789abcde",
"actor": {
"objectType": "Agent",
"account": {
"homePage": "https://bakedin.co",
"name": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
}
},
"verb": {
"id": "http://adlnet.gov/expapi/verbs/completed",
"display": { "en-US": "completed" }
},
"object": {
"objectType": "Activity",
"id": "https://bakedin.co/learn/minicourses/nca-genl/1.1",
"definition": {
"name": { "en-US": "nca-genl/1.1" },
"type": "http://adlnet.gov/expapi/activities/assessment"
}
},
"result": {
"completion": true,
"score": { "scaled": 0.9 },
"extensions": {
"https://bakedin.co/xapi/xp": 100
}
},
"context": {
"contextActivities": {
"parent": [{
"objectType": "Activity",
"id": "https://bakedin.co/learn/minicourses/nca-genl"
}],
"category": [{
"objectType": "Activity",
"id": "https://bakedin.co/xapi/profile/v1"
}]
}
},
"timestamp": "2026-05-23T15:42:11.327Z"
}query
LRS endpoint
GET /api/xapi/statements returns BakedIn statements in LRS shape. Filterable by ?agent=<uuid>, ?verb=<iri>, ?activity=<iri>.
Returns up to 500 statements newest-first per request. Not a full xAPI LRS — optimized for “ICICLE Tools-SIG drops in and downloads the BakedIn corpus of statements”.
# Get all completed statements for a specific learner
GET /api/xapi/statements
?agent=a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
&verb=http://adlnet.gov/expapi/verbs/completed
&limit=50scope
What this profile does NOT cover (yet)
- Group statements (cohort/teacher constructs — pre-auth)
- Voided statements (LRS administrative concern)
- Statement signing (cryptographic provenance)
- Attachments (rich-media learner submissions)
- Substatements (nested LE Process events)
Profile expansion follows IEEE ICICLE Toolkit guidance; tracked in project_icicle_le_strategic.md.
dogfood
Inspect your own statements
If you’ve interacted with any BakedIn lesson in this browser, your anonymous UUID has statements in the LRS. See your activity →