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.
  • ​Audit​
  • ​Error - This method is used to capture when users face an error
  • ​Heartbeat -
  • ​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.
  • ​Metrics​
  • ​Summary​
  • ​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
1
​
2
start: function(config, contentId, contentVer, data) { }
Copied!
Request Arguments:
1
​
2
{
3
"config": Object, //Config object
4
"contentId": String, //Required. Id of the content
5
"contentVer": String, //Required. Version of the content. Defaults to "1.0"
6
"data": { // Required. event data
7
​
8
"type": String, //Required. app, session, editor, player, workflow, assessment
9
"mode": "", //Required. mode of preview: preview, edit or play
10
"stageid": "" //Required. stage id where the play has been initiated
11
}
12
}
Copied!

Impression

This API is used to log telemetry when users visit a specific page.
1
​
2
impression: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
​
4
{
5
​
6
"type": String, //Required. Impression type (list, detail, view, edit, workflow, search)
7
​
8
"subtype": String, //Optional. Additional subtype. "Paginate", "Scroll"
9
​
10
"pageid": String, //Required. Unique page id
11
​
12
"itype": "", // type of interaction - SWIPE, SCRUB (fast forward using page thumbnails) or AUTO
13
​
14
"stageto": "" // game level, stage of page id to which the navigation was done
15
​
16
}
Copied!

Interact

This API is used to log telemetry of user interactions on the page. For example, search, click, preview, move, resize, configure
1
​
2
interact: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"type": "", // Required. Type of interaction TOUCH,DRAG,DROP,PINCH,ZOOM,SHAKE,ROTATE,SPEAK,LISTEN,WRITE,DRAW,START,ENDCHOOSE,ACTIVATE,SHOW,HIDE,SCROLL,HEARTBEAT,OTHER
5
"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
6
"id": "", // Required. Resource (button, screen, page, etc) id on which the interaction happened - use systemidentifiers when reporting device events
7
"pageid": "", // Optional. Stage or page id on which the event happened
8
"extra": { // Optional. Extra attributes for an interaction
9
"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
10
"values": [], // Array of values, e.g. for timestamp of audio interactions
11
"tid": "", // When interaction is between multiple resources, (e.g. drag and drop) - target resource id
12
"uri": "" // Unique external resource identifier if any (for recorded voice, image, etc.)
13
}
14
}
Copied!

Assess

This API is used to log telemetry of assessments that have occured when the user is viewing content
1
​
2
assess: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"item": QUESTION, // Required. Question Data
5
"pass": "", // Required. Yes, No. This is case-sensitive. default value: No.
6
"score": , // Required. Evaluated score (Integer or decimal) on answer(between 0 to 1), default is 1 if pass=YES or 0 if pass=NO.
7
"resvalues": [{"id":"value"}], // Required. Array of key-value pairs that represent child answer (result of this assessment)
8
"duration": // Required. time taken (decimal number) for this assessment in seconds
9
}
10
​
11
QUESTION = {
12
"id": "", // unique assessment question id. its an required property.
13
"maxscore", // user defined score to this assessment/question.
14
"exlength": , // expected time (decimal number) in seconds that ideally child should take
15
"params": [ // Array of parameter tuples
16
{"id":"value"} // for ex: if var1 is substituted with 5 apples the parameter is {"var1":"5"}
17
],
18
"uri": "", // Unique external resource identifier if any (for recorded voice, image, etc.)
19
"desc": "short description",
20
"title": "title",
21
"mmc": [], // User defined missing micros concepts
22
"mc": [] // micro concepts list
23
}
Copied!

Response

This API is used to log telemetry of user response. For example; Responded to assessments.
1
​
2
response: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"target": TARGET, // Required. Target of the response
5
"qid": "", // Required. Unique assessment/question id
6
"type": "", // Required. Type of response. CHOOSE, DRAG, SELECT, MATCH, INPUT, SPEAK, WRITE
7
"values": [{"key":"value"}] // Required. Array of response tuples. For ex: if lhs option1 is matched with rhs optionN - [{"lhs":"option1"}, {"rhs":"optionN"}]
8
}
9
​
10
TARGET = {
11
"id": "", // Required. unique id for the target
12
"ver": "", // Required. version of the target
13
"type": "", // Required. Type of the target
14
"parent": {
15
"id": "", // Optional. parent id of the object
16
"type": "" // Optional. parent type of the object. Required if parentid is present.
17
}
18
}
Copied!

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.
1
​
2
interrupt: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"type": "", // Required. Type of interuption
5
"pageid": "", // Optional. Current Stage/Page unique id on which interuption occured
6
"eventid": "" // Optional. unique event ID
7
}
Copied!

Feedback

This API is used to log telemetry of feedback provided by the user.
1
​
2
// To log content start/play event
3
feedback: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"contentId": "", // Required. Id of the content
5
"rating": 3, // Optional. Numeric score (+1 for like, -1 for dislike, or 4.5 stars given in a rating)
6
"comments": "User entered feedback" // Optional. Text feedback (if any)
7
}
Copied!

Share

This API is used to log telemetry when a user shares any content with other users.
1
​
2
// To log content start/play event
3
share: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"dir": "", // In/Out
5
"type": "", // File/Link/Message
6
"items": [{ // Required. array of items shared
7
"obj": {
8
"id": "",
9
"type": "",
10
"ver": ""
11
},
12
"params": [
13
{"key": "value"}
14
],
15
"origin": { // Origin of the share file/link/content
16
"id": "", // Origin id
17
"type": "" // Origin type
18
},
19
"to": {
20
"id": "",
21
"type": ""
22
}
23
}]
24
}
Copied!

Audit

This API is used to log telemetry when an object is changed. This includes life-cycle changes as well.
1
​
2
audit: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"edata": {
5
"props": [""], // Updated properties
6
"state": "", // Optional. Current state
7
"prevstate": "" // Optional. Previous state
8
}
9
}
Copied!

Error

This API is used to log telemetry of any error that has occurred when a user is viewing content or playing games.
1
​
2
error: function(error) { }
Copied!
Request Arguments:
1
​
2
error - Object //Required
3
{
4
"err": "", // Required. Error code
5
"errtype": "", // Required. Error type classification - "SYSTEM", "MOBILEAPP", "CONTENT"
6
"stacktrace": "", // Required. Detailed error data/stack trace
7
}
Copied!

Heartbeat

This API is used to log telemetry for heartbeat event to denote that the process is running.
1
​
2
heartbeat: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
{
5
"edata": {
6
}
7
}
Copied!

Log

This API is used to log telemetry of generic log events. For example; API calls, service calls, app updates, etc.
1
​
2
log: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"type": "", // Required. Type of log (system, process, api_access, api_call, job, app_update etc)
5
"level": "", // Required. Level of the log. TRACE, DEBUG, INFO, WARN, ERROR, FATAL
6
"message": "", // Required. Log message
7
"params": [{"key":"value"}] // Optional. Additional params in the log message
8
}
Copied!

Search

This API is used to log telemetry when a user triggers a search for any content, item or asset
1
​
2
search: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object - Required
3
{
4
"type": "", // Required. content, assessment, asset
5
"query": "", // Required. Search query string
6
"filters": {}, // Optional. Additional filters
7
"sort": {}, // Optional. Additional sort parameters
8
"correlationid": "", // Optional. Server generated correlation id (for mobile app's telemetry)
9
"size": 333, // Required. Number of search results
10
"topn": [{}] // Required. top N (configurable) results with their score
11
}
Copied!

Metrics

This API is used to log telemetry for service business metrics (also accessible via health API).
1
​
2
metrics: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object - Required
3
{
4
"edata": {
5
"metric1": Int,
6
"metric2": Int
7
/// more metrics, each is a key value
8
}
9
}
Copied!

Summary

This API is used to log telemetry summary event
1
​
2
summary: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object - Required
3
{
4
"edata": {
5
"type": "", // Required. Type of summary. Free text. "session", "app", "tool" etc
6
"mode": "", // Optional.
7
"starttime": Long, // Required. Epoch Timestamp of app start. Retrieved from first event.
8
"endtime": Long, // Required. Epoch Timestamp of app end. Retrieved from last event.
9
"timespent": Double, // Required. Total time spent by visitor on app in seconds excluding idle time.
10
"pageviews": Long, // Required. Total page views per session(count of CP_IMPRESSION)
11
"interactions": Long, // Required. Count of interact events
12
"envsummary": [{ // Optional
13
"env": String, // High level env within the app (content, domain, resources, community)
14
"timespent": Double, // Time spent per env
15
"visits": Long // count of times the environment has been visited
16
}],
17
"eventssummary": [{ // Optional
18
"id": String, // event id such as CE_START, CE_END, CP_INTERACT etc.
19
"count": Long // Count of events.
20
}],
21
"pagesummary": [{ // Optional
22
"id": String, // Page id
23
"type": String, // type of page - view/edit
24
"env": String, // env of page
25
"timespent": Double, // Time taken per page
26
"visits": Long // Number of times each page was visited
27
}],
28
"extra": [{ // Optional. Additional summary data specific to mime type or app. For ex: wordsPerMin
29
"id": "", // Required. Key for the extra data
30
"value": "" // Required. Value for the extra data
31
}]
32
}
33
}
Copied!

Exdata

This API is used to log telemetry for external data, while playing content
1
​
2
exdata: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object - Required
3
​
4
{
5
​
6
type - Free flowing text. For ex: partnerdata, xapi etc
7
​
8
.... Serialized data (can be either encrypted/encoded/stringified)
9
​
10
}
Copied!

End

This API is used to log telemetry while the user is closing or exiting the content or game
1
​
2
end: function(data) { }
Copied!
Request Arguments:
1
​
2
data - Object //Required
3
{
4
"contentId": "", // Required. Id of the content
5
"type": , // Required. app, session, editor, player, workflow, assessment
6
"duration": , // Required. Total duration from start to end in seconds
7
"pageid": "", // Optional. Page/Stage id where the end has happened.
8
"summary": [{"key":"value"}] // Optional. Summary of the actions done between start and end. For ex: "progress" for player session, "nodesModified" for collection editor
9
}
Copied!