Summary

LilxAPI

LilxAPI (or Lil' xAPI) is a simpler, flat version of an xAPI statement. Each statement is required to have only three properties: actor, verb, and object. Each property is limited to a single value. Statements may be represented either as a JSON object with name-value pairs or as an array (using the array keys provided in Table 1).

url required "https://edtechbooks.org/education_research/research" result The outcome of the action. float boolean string null .75 true "success"   context Contextual information about the action, such as the time of the interaction. ISO 8601 format current time " 2023-11-10T12:34:56Z"

You can retrieve all LilxAPI statements associated with your API key at this endpoint: https://edtechbooks.org/api.v2.php?action=lilxapi_get&api_key=YOURAPIKEY. You can find your ETB API key by logging in and going to Account > Settings. You may then access the ETB LRS to access and download stored statements.

You can create dashboards or graphs in Google Sheets to display data and import the data directly from a website using the built-in ImportData function. Sheets does not currently have an import feature for JSON, but you can append &format=csv to a LilxAPI call to receive the results as a csv. You can use an automation script in Excel to retrieve or update data from the LRS.

Here is an example automation script using the ETB LRS. The script is written using the following syntax: apiKey = "YOURAPIKEYHERE"; excelRow { statement_id : number; author_id: number; actor: string; verb: verb; result: string, result: result; context: context; timestamp: timestamp; xapi: string. NewWorksheet: getRangeByIndexes: 0; headingRange: headingRange; getRangeRange: headRange; activate: activate; getActiveWorksheet : activate; fetchData: fetchData. Script is written as an example using the EJB LRS syntax.

NewWorksheet.getRangeByIndexes ( dataRange) { dataRange.setValues ( newWorksheet . getRange byIndexes ( DataRange. setValues ()); }); Data. fetchData ( response) { response. fetch (apiUrl, dataData) ; if ( response.status) { throw new Error ( status; }); } Data. setRange ( row) { row. values ( row); }); data. fetch data ( dataData, dataRange); });Data. getRange (row) {Row.values ( row). values ( rows.values; });DataData (range) { Row.value ( row.value; }); dataRange (