Recipes: How it Works

In practice, a Recipe builds on existing structure, it is an Activity, one with a specific Activity Type and place in a statement. In version 1.0.0 of the specification a ‘category’ property was added to the Context Activities, it is described as:

“Category: an Activity used to categorize the Statement. “Tags” would be a synonym. Category SHOULD be used to indicate a “profile” of xAPI behaviors, as well as other categorizations. For example: Anna attempts a biology exam, and the Statement is tracked using the CMI-5 profile. The Statement’s Activity refers to the exam, and the category is the CMI-5 profile.”

When creating a new Recipe in the Registry, an Activity will be automatically created under a specific namespace of the profile. That Activity ID then should be used in all statements for that Recipe. Systems doing reporting on the Statement stream can easily detect Statements with the specific Activity or can choose to query the learning record store’s Statement stream using the Activity ID directly. An example Recipe Activity will look like:

    “id”: “”,
    “definition”: {
        "type": "",
        "name": {
            "en-US": "Recipe: Checklist Performance Observation (v1)"
        "description": {
            "en-US": "A recipe for recording the observation of someone's performance as a check list including a pass/fail indication for individual items and overall pass/fail. (v1)"

This is the Activity for a Recipe that we’ve populated in the Registry as a first example. Note that in the Definition we’ve assigned its ‘type’ as a special Activity Type that we coined in the Registry, namely “”. Statements contributing to a Recipe can be easily identified based on this special type.