<- Back to Index

Reactions JSON Spec

Reaction data is internally stored in SQL LRS as JSON objects. The top-level spec for Reactions is as follows, with some properties being autogenerated when the reaction is stored or updated in SQL LRS: | Property | Type | Autogenerated? | — | — | — | id | UUID | True | created | Timestamp | True | modified | Timestamp | True | title | String | False | active | Boolean | False | ruleset | Object | False

The following are properties of ruleset objects: | Property | Type | Description | — | — | — | conditions | Object | Map from condition name strings to condition objects. | template | Object | xAPI Statement object that allows additional $templatePath properties. | identityPaths | Array | Array of path arrays (see below).

A path array is an array of xAPI statement properties pointing to a particular location in the statement object, e.g. ["actor", "mbox"]. A $templatePath array is similar, except its first element is a condition name, e.g. ["condition_alpha", "actor", "mbox"].

The following are properties of condition objects. Condition objects may be a boolean and contain a single and, or, or not property, or they can be statement criteria and contain path, op, and one of val or ref. | Property | Type | Description | — | — | — | path | Array | Path array. | op | String | String denoting the reaction operation. One of the following: gt, lt, gte, lte, eq, noteq, like, contains. | val | Scalar | Comparison value; can be a string, boolean, number, or null. Type may have additional restrictions depending on the particular location in the statement. | ref | Object | Object that references another condition. | and | Array | Array of condition objects. | or | Array | Array of condition objects. | not | Object | Condition object to be negated.

The following are properties of the ref object: | Property | Type | Description | — | — | — | condition | String | Referenced condition name. | path | Path Array | Path array for referenced statement.

Example JSON

The following is the example reaction from the tutorial, in JSON format:

{
    "id": "019257f4-d533-8c0b-8730-28b82f383982",
    "created": "2024-10-04T14:35:16Z",
    "modified": "2024-10-04T14:35:16Z",
    "title": "reaction_example",
    "active": true,
    "ruleset": {
        "conditions": {
            "condition_alpha": {
                "and": [
                    {
                        "path": [ "object", "id" ],
                        "op": "eq",
                        "val": "https://example.com/alpha"
                    },
                    {
                        "path": [ "verb", "id" ],
                        "op": "eq",
                        "val": "https://example.com/completed"
                    },
                    {
                        "path": [ "result", "success" ],
                        "op": "eq",
                        "val": true
                    }
                ]
            },
            "condition_beta": {
                "and": [
                    {
                        "path": [ "object", "id" ],
                        "op": "eq",
                        "val": "https://example.com/beta"
                    },
                    {
                        "path": [ "verb", "id" ],
                        "op": "eq",
                        "val": "https://example.com/completed"
                    },
                    {
                        "path": [ "result", "success" ],
                        "op": "eq",
                        "val": true
                    },
                    {
                        "path": [ "timestamp" ],
                        "op": "gt",
                        "ref": {
                            "condition": "condition_alpha",
                            "path": [ "timestamp" ]
                        }
                    }
                ]
            }
        },
        "template": {
            "actor": {
                "mbox": {
                    "$templatePath": [ "condition_alpha", "actor", "mbox" ]
                }
            },
            "verb": {
                "id": "https://example.com/completed"
            },
            "object": {
                "id": "https://example.com/alpha-and-beta",
                "objectType": "Activity"
            }
        },
        "identityPaths": [
            [ "actor", "mbox" ],
            [ "actor", "mbox_sha1sum" ],
            [ "actor", "openid" ],
            [ "actor", "account", "homePage" ],
            [ "actor", "account", "name" ]
        ]
    }
}

<- Back to Index