...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
METHOD: PATCH URI: /v1/content/state/update // End point REQUEST: { "request": { "contents": [ ], "assessments": [ { "assessTsassessmentTs": 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", "etsts":1566974765224, "2019-09-04 12:47:08:954+0000", "params": {}, "responseCode":"SUCCESS" } "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 ); |
...