...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
METHOD: PATCH
URI: /v1/content/state/update // End point
REQUEST: {
"request": {
"contents": [ ],
"assessments": [
{
"assessmentTs": 1567591211000, //Assessment time in epoch
"batchId":"", // Batch Identifier - required
"courseId":"", // Course Identifier - required
"userId":"", // User Identifier - required
"attemptId":"", // Attempt Identifier - required
"contentId": "", // Content Identifier - required
"events": [ ] //ONLY ASSESS Events - required
}
]
}
} |
...
attemptId: Should be generated from Hashing HASH(courseId, userId, contentId, batchId, ets)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "id": "api.coursecontent.assessmentstate.update", "ver": "1.0v1","ets":1566974765224, "ts": "2019-09-04 12:47:08:954+0000", "params": { "resmsgid": null, "msgid": "bec2defc-ddca-7b37-6a24-1dcbdfb23d48", "err": null, "status": "success", "errmsg": null }, "responseCode": "OK", "result": { "<contentId>": "SUCCESS" } } |
Disadvantages:
- Need to
validate
andde-dup
the the events.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
CREATE TABLE assessment_aggregator ( batch_id text, user_id text, course_id text, content_id text, attempt_id text, updated_on timestamp, created_on timestamp, last_attempted_on timestamp, total_score int, total_max_score int, question list<frozen<question>>, PRIMARY KEY (content_id, attempt_id, user_id, course_id, batch_id ) ) CREATE INDEX ON assessment_aggregator (last_attempted_on); CREATE TYPE question( id text, max_score int, score int, type text, title text, resvalues frozen<list<map<textlist<map<text,text>>>text>>, params frozen<list<map<textlist<map<text,text>>>text>>, description text, duration decimal ); |
...