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.
{
"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) { }
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
}
Search
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
}