Browse the docs

Reference

xAPI statement reference

Every xAPI statement devlin.ai sends, when it sends it, how each one is organized, and the full default set for one simulation attempt.

Plans: Core, Team, EnterpriseView as Markdown
On this page

devlin.ai builds every xAPI statement on its servers. The LMS's LRS (through an LMS package) and a workspace LRS receive the same statements, with the same statement IDs. The statements follow xAPI 1.0.3. What the workspace can turn on or off is in xAPI reporting settings, and how packages send them is in LMS packages: SCORM and xAPI reporting.

When each statement is sent

When Verb About Setting
The learner sends their first message (a journey: the journey opens) initialized The simulation, coach or journey Always
A simulation's result is ready, or a coach session ends: once for each learner message responded The simulation or coach One statement per learner message (off by default)
A simulation's result is ready, once for each rubric criterion scored The criterion Rubric criteria (on by default)
A simulation's result is ready, when the evaluation has a pass mark passed or failed The simulation Always
A simulation's result is ready, with no pass or fail (feedback-only, evaluation off or not completed) completed The simulation Always
A coach session ends, after the learner practised completed The coach Always
A journey finishes: each knowledge check, then the journey passed, failed or completed The check, then the journey Always
The learner leaves, or has no Try Again left terminated The simulation, coach or journey Always
A reviewer changes a rating after the statements were sent (workspace LRS only) voided, then the corrected set The earlier statements Always

A Try Again in the same launch is a new attempt with its own statements. terminated is sent once per launch.

How a statement is organized

  • id: a statement ID built from the attempt, so sending the same statement twice never duplicates it.
  • actor: the learner as the LMS launched them, when the workspace keeps the LMS learner. Otherwise an account under https://devlin.ai/learners/ followed by the workspace ID, named by the learner identifier or an anonymous ID. See Learner identity from the LMS.
  • verb: a standard ADL verb: http://adlnet.gov/expapi/verbs/initialized, http://adlnet.gov/expapi/verbs/scored, http://adlnet.gov/expapi/verbs/passed, http://adlnet.gov/expapi/verbs/failed, http://adlnet.gov/expapi/verbs/completed, http://adlnet.gov/expapi/verbs/responded, http://adlnet.gov/expapi/verbs/terminated, http://adlnet.gov/expapi/verbs/voided.
  • object: the activity the statement is about, with its type and name.
  • result: on scored, passed, failed, completed and responded. Scores are raw, min, max and scaled. A simulation's score is a percentage. A criterion's score is its points out of the points possible.
  • context.registration: the LMS launch's registration. Every statement of one journey run, including its simulations', shares the journey's.
  • context.contextActivities: parent is the journey for a simulation or coach inside one, and the simulation for a criterion. grouping holds the LMS course, when the LMS names one, and the journey for a criterion inside one. other holds the skills a criterion counts toward.
  • context.extensions and result.extensions: see Extensions.
  • timestamp: when it happened in devlin.ai.

Activity IDs

Activity IDs do not depend on the address the package was downloaded from, so one filter finds a simulation's attempts standalone and inside a journey.

Activity Type ID
Simulation http://adlnet.gov/expapi/activities/simulation https://devlin.ai/xapi/activities/simulation/ + embed key
Rubric criterion https://devlin.ai/xapi/activity-types/rubric-criterion The simulation's ID + /criterion/ + criterion ID
Coach https://devlin.ai/xapi/activity-types/coach https://devlin.ai/xapi/activities/coach/ + embed key
Journey http://adlnet.gov/expapi/activities/course https://devlin.ai/xapi/activities/journey/ + journey key
Knowledge check http://adlnet.gov/expapi/activities/assessment The journey's ID + /check/ + block ID
Skill https://devlin.ai/xapi/activity-types/skill https://devlin.ai/xapi/activities/skill/ + workspace ID + / + skill ID

Extensions

Extension Where Value
https://devlin.ai/xapi/extensions/scorecard result of a journey's passed, failed or completed The journey's scorecard: pass-threshold, default-weights and each scored item's type, ref, weight-pct and score-pct. default-weights is true when the designer set no scorecard, so every scored item counts equally and the pass mark is 70.
https://devlin.ai/xapi/extensions/attempt-number context Which run of the simulation or coach this is for the learner, counting from one.
https://devlin.ai/xapi/extensions/session-id context The attempt ID. The same ID is in the transcript link.
https://devlin.ai/xapi/extensions/mode context text, voice or avatar.
https://devlin.ai/xapi/extensions/language context The language code the attempt ran in.
https://devlin.ai/xapi/extensions/learner-fields context The start-screen answers for the learner fields the workspace picked, as field key and value. Absent when none are picked.
https://devlin.ai/xapi/extensions/workspace context The workspace ID.
https://devlin.ai/xapi/extensions/profile context The statement profile, default-v2 unless the workspace has an agreed custom profile.
https://devlin.ai/xapi/extensions/simulation-version context The published version of the simulation, when known.
https://devlin.ai/xapi/extensions/turn-index context of responded The message's position in the conversation.
https://devlin.ai/xapi/extensions/in-response-to context of responded The character's line the learner answered.
https://devlin.ai/xapi/extensions/criteria result of passed, failed or completed Every criterion as id, name, rating, points, possible and rationale. Sent when Rubric criteria is on.
https://devlin.ai/xapi/extensions/deductions result of passed, failed or completed Each deduction applied, as id, name, points and rationale. Absent when none applied.
https://devlin.ai/xapi/extensions/transcript-url result The link that opens the attempt in devlin.ai. Sent when Link to the transcript is on.
https://devlin.ai/xapi/extensions/transcript result The whole conversation as Learner: and Character: lines. Sent when Full transcript text is on.
https://devlin.ai/xapi/extensions/turn-count result How many messages the learner sent.
https://devlin.ai/xapi/extensions/feedback result The evaluation's overall written feedback.
https://devlin.ai/xapi/extensions/rating result of scored The rating the criterion was given.
https://devlin.ai/xapi/extensions/rationale result of scored Why the criterion got that rating. It can quote the learner.
https://devlin.ai/xapi/extensions/stop-label result of scored The label of the rating scale level, when the criterion uses one.

The default set for one simulation attempt

Every statement one attempt sends with the workspace's settings at their defaults: a simulation launched on its own from an LMS, with an evaluation that passed and two rubric criteria. initialized is sent at the first message, the three result statements when the evaluation finishes, and terminated when the learner leaves. The values are examples.

[
  {
    "id": "fad34c65-82de-5e57-8411-900175062d05",
    "actor": {
      "objectType": "Agent",
      "name": "Ana Lee",
      "mbox": "mailto:ana.lee@example.com"
    },
    "verb": {
      "id": "http://adlnet.gov/expapi/verbs/initialized",
      "display": {
        "en-US": "initialized"
      }
    },
    "object": {
      "objectType": "Activity",
      "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
      "definition": {
        "type": "http://adlnet.gov/expapi/activities/simulation",
        "name": {
          "en-US": "Late check-in guest"
        }
      }
    },
    "context": {
      "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
      "extensions": {
        "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
        "https://devlin.ai/xapi/extensions/attempt-number": 2,
        "https://devlin.ai/xapi/extensions/mode": "voice",
        "https://devlin.ai/xapi/extensions/language": "en",
        "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
        "https://devlin.ai/xapi/extensions/profile": "default-v2",
        "https://devlin.ai/xapi/extensions/simulation-version": 7
      }
    },
    "timestamp": "2026-11-04T09:12:03.120Z"
  },
  {
    "id": "cdbeba50-2d64-561a-9b67-fbefc2489e68",
    "actor": {
      "objectType": "Agent",
      "name": "Ana Lee",
      "mbox": "mailto:ana.lee@example.com"
    },
    "verb": {
      "id": "http://adlnet.gov/expapi/verbs/scored",
      "display": {
        "en-US": "scored"
      }
    },
    "object": {
      "objectType": "Activity",
      "id": "https://devlin.ai/xapi/activities/simulation/k7q2/criterion/uses-guest-name",
      "definition": {
        "type": "https://devlin.ai/xapi/activity-types/rubric-criterion",
        "name": {
          "en-US": "Uses the guest's name"
        }
      }
    },
    "result": {
      "score": {
        "raw": 2,
        "min": 0,
        "max": 4,
        "scaled": 0.5
      },
      "extensions": {
        "https://devlin.ai/xapi/extensions/rating": "partial",
        "https://devlin.ai/xapi/extensions/rationale": "Used the name once, at the greeting only."
      }
    },
    "context": {
      "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
      "contextActivities": {
        "parent": [
          {
            "objectType": "Activity",
            "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
            "definition": {
              "type": "http://adlnet.gov/expapi/activities/simulation"
            }
          }
        ],
        "other": [
          {
            "objectType": "Activity",
            "id": "https://devlin.ai/xapi/activities/skill/3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13/personalisation",
            "definition": {
              "type": "https://devlin.ai/xapi/activity-types/skill"
            }
          },
          {
            "objectType": "Activity",
            "id": "https://devlin.ai/xapi/activities/skill/3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13/guest-rapport",
            "definition": {
              "type": "https://devlin.ai/xapi/activity-types/skill"
            }
          }
        ]
      },
      "extensions": {
        "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
        "https://devlin.ai/xapi/extensions/attempt-number": 2,
        "https://devlin.ai/xapi/extensions/mode": "voice",
        "https://devlin.ai/xapi/extensions/language": "en",
        "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
        "https://devlin.ai/xapi/extensions/profile": "default-v2",
        "https://devlin.ai/xapi/extensions/simulation-version": 7
      }
    },
    "timestamp": "2026-11-04T09:18:44.120Z"
  },
  {
    "id": "c5195b24-4859-56b3-a6a9-48312e417b22",
    "actor": {
      "objectType": "Agent",
      "name": "Ana Lee",
      "mbox": "mailto:ana.lee@example.com"
    },
    "verb": {
      "id": "http://adlnet.gov/expapi/verbs/scored",
      "display": {
        "en-US": "scored"
      }
    },
    "object": {
      "objectType": "Activity",
      "id": "https://devlin.ai/xapi/activities/simulation/k7q2/criterion/offers-upgrade",
      "definition": {
        "type": "https://devlin.ai/xapi/activity-types/rubric-criterion",
        "name": {
          "en-US": "Offers an upgrade"
        }
      }
    },
    "result": {
      "score": {
        "raw": 4,
        "min": 0,
        "max": 4,
        "scaled": 1
      },
      "extensions": {
        "https://devlin.ai/xapi/extensions/rating": "met",
        "https://devlin.ai/xapi/extensions/rationale": "Offered the suite upgrade before closing.",
        "https://devlin.ai/xapi/extensions/stop-label": "Strong"
      }
    },
    "context": {
      "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
      "contextActivities": {
        "parent": [
          {
            "objectType": "Activity",
            "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
            "definition": {
              "type": "http://adlnet.gov/expapi/activities/simulation"
            }
          }
        ]
      },
      "extensions": {
        "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
        "https://devlin.ai/xapi/extensions/attempt-number": 2,
        "https://devlin.ai/xapi/extensions/mode": "voice",
        "https://devlin.ai/xapi/extensions/language": "en",
        "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
        "https://devlin.ai/xapi/extensions/profile": "default-v2",
        "https://devlin.ai/xapi/extensions/simulation-version": 7
      }
    },
    "timestamp": "2026-11-04T09:18:44.120Z"
  },
  {
    "id": "ea24457c-5a65-5949-a7f9-d6903bd747eb",
    "actor": {
      "objectType": "Agent",
      "name": "Ana Lee",
      "mbox": "mailto:ana.lee@example.com"
    },
    "verb": {
      "id": "http://adlnet.gov/expapi/verbs/passed",
      "display": {
        "en-US": "passed"
      }
    },
    "object": {
      "objectType": "Activity",
      "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
      "definition": {
        "type": "http://adlnet.gov/expapi/activities/simulation",
        "name": {
          "en-US": "Late check-in guest"
        }
      }
    },
    "result": {
      "score": {
        "raw": 78,
        "min": 0,
        "max": 100,
        "scaled": 0.78
      },
      "success": true,
      "completion": true,
      "duration": "PT6M41S",
      "extensions": {
        "https://devlin.ai/xapi/extensions/criteria": [
          {
            "id": "uses-guest-name",
            "name": "Uses the guest's name",
            "rating": "partial",
            "points": 2,
            "possible": 4,
            "rationale": "Used the name once, at the greeting only."
          },
          {
            "id": "offers-upgrade",
            "name": "Offers an upgrade",
            "rating": "met",
            "points": 4,
            "possible": 4,
            "rationale": "Offered the suite upgrade before closing."
          }
        ],
        "https://devlin.ai/xapi/extensions/transcript-url": "https://devlin.ai/dashboard/attempts/c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
        "https://devlin.ai/xapi/extensions/turn-count": 2,
        "https://devlin.ai/xapi/extensions/feedback": "Warm tone throughout; offer the upgrade earlier."
      }
    },
    "context": {
      "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
      "extensions": {
        "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
        "https://devlin.ai/xapi/extensions/attempt-number": 2,
        "https://devlin.ai/xapi/extensions/mode": "voice",
        "https://devlin.ai/xapi/extensions/language": "en",
        "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
        "https://devlin.ai/xapi/extensions/profile": "default-v2",
        "https://devlin.ai/xapi/extensions/simulation-version": 7
      }
    },
    "timestamp": "2026-11-04T09:18:44.120Z"
  },
  {
    "id": "f338a5d9-21ef-52ea-9285-6bb722c9a56c",
    "actor": {
      "objectType": "Agent",
      "name": "Ana Lee",
      "mbox": "mailto:ana.lee@example.com"
    },
    "verb": {
      "id": "http://adlnet.gov/expapi/verbs/terminated",
      "display": {
        "en-US": "terminated"
      }
    },
    "object": {
      "objectType": "Activity",
      "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
      "definition": {
        "type": "http://adlnet.gov/expapi/activities/simulation",
        "name": {
          "en-US": "Late check-in guest"
        }
      }
    },
    "result": {
      "duration": "PT6M41S"
    },
    "context": {
      "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
      "extensions": {
        "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
        "https://devlin.ai/xapi/extensions/attempt-number": 2,
        "https://devlin.ai/xapi/extensions/mode": "voice",
        "https://devlin.ai/xapi/extensions/language": "en",
        "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
        "https://devlin.ai/xapi/extensions/profile": "default-v2",
        "https://devlin.ai/xapi/extensions/simulation-version": 7
      }
    },
    "timestamp": "2026-11-04T09:18:44.120Z"
  }
]

Other statements

One statement per learner message

With One statement per learner message on, each learner message adds a responded statement:

{
  "id": "b5cdb4cf-2b08-5045-b0a5-9c5b8d02d10f",
  "actor": {
    "objectType": "Agent",
    "name": "Ana Lee",
    "mbox": "mailto:ana.lee@example.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/responded",
    "display": {
      "en-US": "responded"
    }
  },
  "object": {
    "objectType": "Activity",
    "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
    "definition": {
      "type": "http://adlnet.gov/expapi/activities/simulation",
      "name": {
        "en-US": "Late check-in guest"
      }
    }
  },
  "result": {
    "response": "I'm so sorry for the wait, Mr Chen. Let me sort this now."
  },
  "context": {
    "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
    "contextActivities": {
      "parent": [
        {
          "objectType": "Activity",
          "id": "https://devlin.ai/xapi/activities/journey/j9x1",
          "definition": {
            "type": "http://adlnet.gov/expapi/activities/course"
          }
        }
      ],
      "grouping": [
        {
          "objectType": "Activity",
          "id": "https://lms.example.com/course/412"
        }
      ]
    },
    "extensions": {
      "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
      "https://devlin.ai/xapi/extensions/attempt-number": 2,
      "https://devlin.ai/xapi/extensions/mode": "voice",
      "https://devlin.ai/xapi/extensions/language": "en",
      "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
      "https://devlin.ai/xapi/extensions/profile": "default-v2",
      "https://devlin.ai/xapi/extensions/simulation-version": 7,
      "https://devlin.ai/xapi/extensions/turn-index": 3,
      "https://devlin.ai/xapi/extensions/in-response-to": "I've been standing here twenty minutes."
    }
  },
  "timestamp": "2026-11-04T09:13:30.004Z"
}

A simulation inside a journey

Inside a journey, the simulation's statements name the journey as parent and carry the journey run's registration. With an LMS course ID, grouping holds it:

{
  "id": "ea24457c-5a65-5949-a7f9-d6903bd747eb",
  "actor": {
    "objectType": "Agent",
    "name": "Ana Lee",
    "mbox": "mailto:ana.lee@example.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/passed",
    "display": {
      "en-US": "passed"
    }
  },
  "object": {
    "objectType": "Activity",
    "id": "https://devlin.ai/xapi/activities/simulation/k7q2",
    "definition": {
      "type": "http://adlnet.gov/expapi/activities/simulation",
      "name": {
        "en-US": "Late check-in guest"
      }
    }
  },
  "result": {
    "score": {
      "raw": 78,
      "min": 0,
      "max": 100,
      "scaled": 0.78
    },
    "success": true,
    "completion": true,
    "duration": "PT6M41S",
    "extensions": {
      "https://devlin.ai/xapi/extensions/criteria": [
        {
          "id": "uses-guest-name",
          "name": "Uses the guest's name",
          "rating": "partial",
          "points": 2,
          "possible": 4,
          "rationale": "Used the name once, at the greeting only."
        },
        {
          "id": "offers-upgrade",
          "name": "Offers an upgrade",
          "rating": "met",
          "points": 4,
          "possible": 4,
          "rationale": "Offered the suite upgrade before closing."
        }
      ],
      "https://devlin.ai/xapi/extensions/transcript-url": "https://devlin.ai/dashboard/attempts/c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
      "https://devlin.ai/xapi/extensions/turn-count": 2,
      "https://devlin.ai/xapi/extensions/feedback": "Warm tone throughout; offer the upgrade earlier."
    }
  },
  "context": {
    "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
    "contextActivities": {
      "parent": [
        {
          "objectType": "Activity",
          "id": "https://devlin.ai/xapi/activities/journey/j9x1",
          "definition": {
            "type": "http://adlnet.gov/expapi/activities/course"
          }
        }
      ],
      "grouping": [
        {
          "objectType": "Activity",
          "id": "https://lms.example.com/course/412"
        }
      ]
    },
    "extensions": {
      "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
      "https://devlin.ai/xapi/extensions/attempt-number": 2,
      "https://devlin.ai/xapi/extensions/mode": "voice",
      "https://devlin.ai/xapi/extensions/language": "en",
      "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
      "https://devlin.ai/xapi/extensions/profile": "default-v2",
      "https://devlin.ai/xapi/extensions/simulation-version": 7
    }
  },
  "timestamp": "2026-11-04T09:18:44.120Z"
}

A coach

A coach has no score. When the session ends, completed carries the session time, the number of learner messages and, when Link to the transcript is on, the transcript link:

{
  "id": "37c8b05f-88b6-55cb-9c22-3348e6561762",
  "actor": {
    "objectType": "Agent",
    "name": "Ana Lee",
    "mbox": "mailto:ana.lee@example.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/completed",
    "display": {
      "en-US": "completed"
    }
  },
  "object": {
    "objectType": "Activity",
    "id": "https://devlin.ai/xapi/activities/coach/c3m8",
    "definition": {
      "type": "https://devlin.ai/xapi/activity-types/coach",
      "name": {
        "en-US": "Difficult guest coach"
      }
    }
  },
  "result": {
    "completion": true,
    "duration": "PT6M41S",
    "extensions": {
      "https://devlin.ai/xapi/extensions/transcript-url": "https://devlin.ai/dashboard/attempts/c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
      "https://devlin.ai/xapi/extensions/turn-count": 2
    }
  },
  "context": {
    "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
    "contextActivities": {
      "grouping": [
        {
          "objectType": "Activity",
          "id": "https://lms.example.com/course/412"
        }
      ]
    },
    "extensions": {
      "https://devlin.ai/xapi/extensions/session-id": "c41f8d2e-1a3b-4c5d-8e9f-0a1b2c3d4e5f",
      "https://devlin.ai/xapi/extensions/attempt-number": 2,
      "https://devlin.ai/xapi/extensions/mode": "text",
      "https://devlin.ai/xapi/extensions/language": "en",
      "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
      "https://devlin.ai/xapi/extensions/profile": "default-v2"
    }
  },
  "timestamp": "2026-11-04T09:18:44.120Z"
}

A journey's result

{
  "id": "0169bb0d-8c07-5795-896f-45505ce9b55d",
  "actor": {
    "objectType": "Agent",
    "name": "Ana Lee",
    "mbox": "mailto:ana.lee@example.com"
  },
  "verb": {
    "id": "http://adlnet.gov/expapi/verbs/passed",
    "display": {
      "en-US": "passed"
    }
  },
  "object": {
    "objectType": "Activity",
    "id": "https://devlin.ai/xapi/activities/journey/j9x1",
    "definition": {
      "type": "http://adlnet.gov/expapi/activities/course",
      "name": {
        "en-US": "Front office essentials"
      }
    }
  },
  "result": {
    "score": {
      "raw": 82,
      "min": 0,
      "max": 100,
      "scaled": 0.82
    },
    "success": true,
    "completion": true,
    "duration": "PT25M",
    "extensions": {
      "https://devlin.ai/xapi/extensions/scorecard": {
        "pass-threshold": 70,
        "default-weights": false,
        "components": [
          {
            "type": "sim",
            "ref": "k7q2",
            "weight-pct": 50,
            "score-pct": 78
          },
          {
            "type": "check",
            "ref": "b12",
            "weight-pct": 50,
            "score-pct": 86
          }
        ]
      }
    }
  },
  "context": {
    "registration": "0b6c2f4a-9d8e-4f1b-a3c5-7e6d5c4b3a21",
    "contextActivities": {
      "grouping": [
        {
          "objectType": "Activity",
          "id": "https://lms.example.com/course/412"
        }
      ]
    },
    "extensions": {
      "https://devlin.ai/xapi/extensions/workspace": "3e2a9c1d-5b7f-4e8a-9d21-6f0c4b8e7a13",
      "https://devlin.ai/xapi/extensions/profile": "default-v2"
    }
  },
  "timestamp": "2026-11-04T09:25:00.000Z"
}