V3 Event Details

Every API method has an associated event. The following API methods log details of the associated telemetry event.

  • Start - This method initializes capture of telemetric data associated to the start of user action

  • Impression - This method is used to capture telemetry for user visits to a specific page.

  • Interact - This method is used to capture user interactions on a page. For example, search, click, preview, move, resize, configure

  • Assess - This method is used to capture user assessments that happen while playing content.

  • Response - This method is used to capture user responses. For example; response to a poll, calendar event or a question.

  • Interrupt - This method is used to capture interrupts triggered during user activity. For example; mobile app sent to background, call on the mobile, etc.

  • Feedback - This method is used to capture user feedback

  • Share - This method is used to capture everything associated with sharing. For example; Share content, telemetry data, link, file etc.

  • Error - This method is used to capture when users face an error

  • Log - This method is used to capture generic logging of events. For example; capturing logs for API calls, service calls, app updates etc.

  • Search - This method is used to capture the search state i.e. when search is triggered for content, item, assets etc.

  • Exdata - This method is used as a generic wrapper event to capture encrypted or serialized data

  • End - This method is used to capture closure after all the activities are completed

Start

This API is used to log telemetry when users view content or initiate game play


start: function(config, contentId, contentVer, data) { }

Request Arguments:


{
  "config": Object, //Config object
  "contentId": String, //Required. Id of the content
  "contentVer": String, //Required. Version of the content. Defaults to "1.0"
  "data": { // Required. event data

    "type": String, //Required.  app, session, editor, player, workflow, assessment
    "mode": "", //Required. mode of preview: preview, edit or play 
    "stageid": "" //Required. stage id where the play has been initiated
  }
}

Impression

This API is used to log telemetry when users visit a specific page.


impression: function(data) { }

Request Arguments:


data - Object //Required

{

    "type": String, //Required. Impression type (list, detail, view, edit, workflow, search)

    "subtype": String, //Optional. Additional subtype. "Paginate", "Scroll"

    "pageid": String, //Required.  Unique page id

    "itype": "", // type of interaction - SWIPE, SCRUB (fast forward using page thumbnails) or AUTO

    "stageto": "" // game level, stage of page id to which the navigation was done

}

Interact

This API is used to log telemetry of user interactions on the page. For example, search, click, preview, move, resize, configure


interact: function(data) { }

Request Arguments:


data - Object //Required
{
  "type": "", // Required. Type of interaction TOUCH,DRAG,DROP,PINCH,ZOOM,SHAKE,ROTATE,SPEAK,LISTEN,WRITE,DRAW,START,ENDCHOOSE,ACTIVATE,SHOW,HIDE,SCROLL,HEARTBEAT,OTHER
  "subtype": "", // Optional. Additional types for a global type. For ex: for an audio the type is LISTEN and thesubtype can be one of PLAY,PAUSE,STOP,RESUME,END
  "id": "", // Required. Resource (button, screen, page, etc) id on which the interaction happened - use systemidentifiers when reporting device events
  "pageid": "", // Optional. Stage or page id on which the event happened
  "extra": { // Optional. Extra attributes for an interaction
    "pos": [{"x":,"y":,"z":}], // Array of positional attributes. For ex: Drag and Drop has two positional attributes. One where the drag has started and the drop point
    "values": [], // Array of values, e.g. for timestamp of audio interactions
    "tid": "", // When interaction is between multiple resources, (e.g. drag and drop) - target resource id
    "uri": "" // Unique external resource identifier if any (for recorded voice, image, etc.)
  }
}

Assess

This API is used to log telemetry of assessments that have occured when the user is viewing content


assess: function(data) { }

Request Arguments:


data - Object //Required
{
  "item": QUESTION, // Required. Question Data
  "pass": "", // Required. Yes, No. This is case-sensitive. default value: No.
  "score": , // Required. Evaluated score (Integer or decimal) on answer(between 0 to 1), default is 1 if pass=YES or 0 if pass=NO. 
  "resvalues": [{"id":"value"}], // Required. Array of key-value pairs that represent child answer (result of this assessment)
  "duration":  // Required. time taken (decimal number) for this assessment in seconds
}

QUESTION = {
  "id": "", // unique assessment question id. its an required property.
  "maxscore", // user defined score to this assessment/question.
  "exlength": , // expected time (decimal number) in seconds that ideally child should take
  "params": [ // Array of parameter tuples
     {"id":"value"} // for ex: if var1 is substituted with 5 apples the parameter is {"var1":"5"}
  ],
  "uri": "", // Unique external resource identifier if any (for recorded voice, image, etc.)
  "desc": "short description",
  "title": "title",
  "mmc": [], // User defined missing micros concepts
  "mc": []   // micro concepts list
}

Response

This API is used to log telemetry of user response. For example; Responded to assessments.


response: function(data) { }

Request Arguments:


data  - Object //Required
{
  "target": TARGET, // Required. Target of the response
  "qid": "", // Required. Unique assessment/question id
  "type": "", // Required. Type of response. CHOOSE, DRAG, SELECT, MATCH, INPUT, SPEAK, WRITE
  "values": [{"key":"value"}] // Required. Array of response tuples. For ex: if lhs option1 is matched with rhs optionN - [{"lhs":"option1"}, {"rhs":"optionN"}]
}

TARGET = {
  "id": "", // Required. unique id for the target
  "ver": "", // Required. version of the target
  "type": "", // Required. Type of the target
  "parent": {
    "id": "", // Optional. parent id of the object
    "type": "" // Optional. parent type of the object. Required if parentid is present.
  }
}

Interrupt

This API is used to log telemetry for any interruptions that have occurred when a user is viewing content or playing games. For example; screen lock, incoming call, etc.


interrupt: function(data) { }

Request Arguments:


data - Object //Required
{
  "type": "", // Required. Type of interuption
  "pageid": "", // Optional. Current Stage/Page unique id on which interuption occured
  "eventid": "" // Optional. unique event ID
}

Feedback

This API is used to log telemetry of feedback provided by the user.


// To log content start/play event
feedback: function(data) { }

Request Arguments:


data - Object //Required
{
  "contentId": "", // Required. Id of the content
  "rating": 3, // Optional. Numeric score (+1 for like, -1 for dislike, or 4.5 stars given in a rating)
  "comments": "User entered feedback" // Optional. Text feedback (if any)
}

Share

This API is used to log telemetry when a user shares any content with other users.


// To log content start/play event
share: function(data) { }

Request Arguments:


data - Object //Required
{
  "dir": "", // In/Out
  "type": "", // File/Link/Message
  "items": [{ // Required. array of items shared
    "obj": {
      "id": "",
      "type": "",
      "ver": ""
    },
    "params": [
      {"key": "value"}
    ],
    "origin": { // Origin of the share file/link/content
      "id": "", // Origin id
      "type": "" // Origin type
    },
    "to": {
      "id": "",
      "type": ""
    }
  }]
}

Audit

This API is used to log telemetry when an object is changed. This includes life-cycle changes as well.


audit: function(data) { }

Request Arguments:


data - Object //Required
{
  "edata": {
    "props": [""], // Updated properties
    "state": "", // Optional. Current state
    "prevstate": "" // Optional. Previous state
  }
}

Error

This API is used to log telemetry of any error that has occurred when a user is viewing content or playing games.


error: function(error) { }

Request Arguments:


error - Object //Required
{
  "err": "", // Required. Error code
  "errtype": "", // Required. Error type classification - "SYSTEM", "MOBILEAPP", "CONTENT"
  "stacktrace": "", // Required. Detailed error data/stack trace
}

Heartbeat

This API is used to log telemetry for heartbeat event to denote that the process is running.


heartbeat: function(data) { }

Request Arguments:


data - Object //Required
{
  {
  "edata": {
  }
}

Log

This API is used to log telemetry of generic log events. For example; API calls, service calls, app updates, etc.


log: function(data) { }

Request Arguments:


data - Object //Required
{
  "type": "", // Required. Type of log (system, process, api_access, api_call, job, app_update etc)
  "level": "", // Required. Level of the log. TRACE, DEBUG, INFO, WARN, ERROR, FATAL
  "message": "", // Required. Log message
  "params": [{"key":"value"}] // Optional. Additional params in the log message
}

This API is used to log telemetry when a user triggers a search for any content, item or asset


search: function(data) { }

Request Arguments:


data - Object - Required
{
  "type": "", // Required. content, assessment, asset 
  "query": "", // Required. Search query string 
  "filters": {}, // Optional. Additional filters
  "sort": {}, // Optional. Additional sort parameters
  "correlationid": "", // Optional. Server generated correlation id (for mobile app's telemetry)
  "size": 333, // Required. Number of search results
  "topn": [{}] // Required. top N (configurable) results with their score
}

Metrics

This API is used to log telemetry for service business metrics (also accessible via health API).


metrics: function(data) { }

Request Arguments:


data - Object - Required
{
  "edata": {
    "metric1": Int,
    "metric2": Int
    /// more metrics, each is a key value
  }
}

Summary

This API is used to log telemetry summary event


summary: function(data) { }

Request Arguments:


data - Object - Required
{
  "edata": {
    "type": "", // Required. Type of summary. Free text. "session", "app", "tool" etc
    "mode": "", // Optional.
    "starttime": Long, // Required. Epoch Timestamp of app start. Retrieved from first event.
    "endtime": Long, // Required. Epoch Timestamp of app end. Retrieved from last event.
    "timespent": Double, // Required. Total time spent by visitor on app in seconds excluding idle time.
    "pageviews": Long, // Required. Total page views per session(count of CP_IMPRESSION)
    "interactions": Long, // Required. Count of interact events
    "envsummary": [{ // Optional
        "env": String, // High level env within the app (content, domain, resources, community)
        "timespent": Double, // Time spent per env
        "visits": Long // count of times the environment has been visited
    }],
    "eventssummary": [{ // Optional
        "id": String, // event id such as CE_START, CE_END, CP_INTERACT etc.
        "count": Long // Count of events.
    }],
    "pagesummary": [{ // Optional
        "id": String, // Page id
        "type": String, // type of page - view/edit
        "env": String, // env of page
        "timespent": Double, // Time taken per page
        "visits": Long // Number of times each page was visited
    }],
    "extra": [{ // Optional. Additional summary data specific to mime type or app. For ex: wordsPerMin
       "id": "", // Required. Key for the extra data
       "value": "" // Required. Value for the extra data
    }]
  }
}

Exdata

This API is used to log telemetry for external data, while playing content


exdata: function(data) { }

Request Arguments:


data - Object - Required

{

  type - Free flowing text. For ex: partnerdata, xapi etc

  .... Serialized data (can be either encrypted/encoded/stringified)

}

End

This API is used to log telemetry while the user is closing or exiting the content or game


end: function(data) { }

Request Arguments:


data - Object //Required
{
  "contentId": "", // Required. Id of the content
  "type": , // Required. app, session, editor, player, workflow, assessment
  "duration": , // Required. Total duration from start to end in seconds
  "pageid": "", // Optional. Page/Stage id where the end has happened.
  "summary": [{"key":"value"}] // Optional. Summary of the actions done between start and end. For ex: "progress" for player session, "nodesModified" for collection editor
}

Last updated