Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction:

...

  • Authorization and x-authenticated-user-token are mandatory headers in every requestx-requested-by header is mandatory in all state update apis

  • UserId will be captured using the user-token from headers for all api requests

Code Block
languagejson
{
    "id": "api.view", // required. id of the api request
    "ver": "1.0",  // required. Current version of api 
    "ts": "2021-01-01T00:00:00+05:30", //mandatory. Timestamp of the request
    "params": {
        "msgid": "4f04da60-1e24-4d31-aa7b-1daf91c46341" // unique request message id, UUID
    },
    "request": {                  // required
        ....
        ....                            
    }       
    

...

Expand
titlePOST - /v1/view/start

Request Spec:

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    },
    "request": {
        "userIdcontentId": "{{userIdcontentId}}",       // required
        "contentIdcollectionId" : "{{contentIdcollectionId}}"   // requiredoptional
        "collectionIdcontextId" : "{{collectionId}}"  // optional.required 
                                                     only when contextid is present
        "contextId": "{{batchId}}" // optional 
    }
}

Sample Requests:

Sample1: consume organic content

Code Block
languagejson
SampleRequest1
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:50:175+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userIdcontentId" : "usercontent_123",
      "contentId" : "content_123"
    }
Sample2:
}

Sample2: consume content through collection

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userId" : "user_123",
      "contentId" : "content_123",
      "collectionId" : "collection_123"      
    }

Sample3: consume content through context

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userId" : "user_123",
      "contentId" : "content_123",
      "collectionId" : "collection_123",
      "contextId" : "context_123"    
      }

Response:

200 Ok Response:

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "{{contentId}}": "Progress started"
    }
}

4XX or 5XX Error Response:

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440db072440d-916e-da787881b1b9",
        "err": ERR_Error_Code,
        "status": "failed",
        "errmsg": ERR_error_msg
    },
    "responseCode": "BAD_REQUEST"/"SERVER_ERROR",
    "result": {
      // error message
    }
}

Sample Response:

Sample1: Valid Request

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "content_123": "Progress started"
    }
}

Sample2: InValid Request

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
         "err": "CLIENT_ERROR",
        "status": "FAILED",
        "errmsg": ERR_error_msg
    },
    "responseCode": "BAD_REQUEST",
    "result": {
        "request.contentId": "Content Id cannot be empty"
    }
}

Sample3: Invalid ContextId in Request

Code Block
languagejson
{
    "id": "api.view.start",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
         "err": "CLIENT_ERROR",
        "status": "FAILED",
        "errmsg": ERR_error_msg
    },
    "responseCode": "BAD_REQUEST",
    "result": {
        "request.contextId": "Invalid Context Id"
    }
}

...

Expand
titlePOST - /v1/view/update

Request:

Code Block
languagejson
{
    "id": "api.view.update",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
        "userIdcontentId": "{{userIdcontentId}}",              // required   
        "contentIdcollectionId" : "{{contentIdcollectionId}}",        // required   optional
        "collectionIdcontextId" : "{{collectionIdbatchId}}",          // optional.
required only when      "progressDetails": {                 // required. Progress details specific 
         ...                      contextId present in request         "contextId": "{{batchId}}",   for each mimetype 
   // optional     ...    "progressDetails": {}          // required. Progress details specific                           
        },
        "timeSpent" : {{timeSpent}}         for each// mimetyperequired
    }
}

Sample Requests:

Sample1: Without Context

Code Block
languagejson
{
    "id": "api.view.update",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userId" : "user_123",
      "contentId" : "content_123",
      "progressDetails" : {
         "mimetype" : "appliation/pdf",
         "progress" : 20,
       }
       "timespent" : 10
 
     }
}

Sample1: With Context

Code Block
languagejson
{
    "id": "api.view.update",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userId" : "user_123",
      "contentId" : "content_123",
      "collectionId" : "collection_123",
      "contextId" : "context_123",
      "progressDetails" : {
         "mimetype" : "application/pdf",
         "progress" : 20,
       }
      "timespent" : 10
     
 }
}

Response:

Code Block
languagejson
200 OK:
{
    "id": "api.view.update",
    "ver": "v1",
    "ts": "2021-06-23 contents05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "{{contentId}}": "Progress Updated"
    }
}

4XX or 5XX Error:
{
    "id": "api.view.update",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": ERR_Error_Code,
        "status": "failed",
        "errmsg": ERR_error_msg
    },
    "responseCode": "BAD_REQUEST"/"SERVER_ERROR",
    "result": {
    }
}

...

Expand
titlePOST - /v1/view/end

Request:

Code Block
languagejson
{
    "id": "api.view.end",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {

       "userId": "{{userId}}",              //required
        "contentId": "{{contentId}}"          //required.
        "collectionId" : "{{collectionId}}",  // required.required only when 
                                                   contextId present in request 
        "contextId": "{{batchId}}",           // optional
    }
}

Sample Request:

Sample1: Without Context

Code Block
languagejson
{
    "id": "api.view.end",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userId" : "user_123",
      "contentId" : "content_123"
    }

Sample2: With Context

Code Block
languagejson
{
    "id": "api.view.end",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
      "userIdcontentId" : "usercontent_123",
      "contentId" : "content_123",
      "collectionId" : "collection_123",
      "contextId" : "context_123"   
    }

Response:

Code Block
languagejson
{
    "id": "api.view.end",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "{{contentId}}": "Progress ended"
    }
}

...

Expand
titlePOST - /v1/view/read

Request:

Code Block
languagejson
{
    "id": "api.view.read",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {
        "userIdcontentId": "{{userIdcontentId}}",    // required
        "contentIdcollectionId" : "{{contentIdcollectionId}}", //requiredoptional 
        "collectionIdcontextId" : "{{collectionIdbatchId}}",   // optional.required
only when    }
}

Response:

Code Block
languagejson
{
    "id": "api.view.read",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
          "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
     contextId present in request "err": null,
        "contextIdstatus": "{{batchId}}success",
  // optional      }
}

Response:

Code Block
languagejson
{
"errmsg": null
   "id": "api.view.read" },
    "verresponseCode": "v1OK",
    "tsresult": "2021-06-23 05:37:40:575+0000", {
      "paramsuserId" : "{{userId}}",
      "contentId" : "resmsgid": null{{contentId}}",
        "msgidtype" : "5e763bc2-b072-440d-916e-da787881b1b9",content"
        "err": null,contents:[{
        "status	"collectionId": "success{{collectionId}}",
        "errmsg": null	"contextId": "{{batchId}}",  
   },     "responseCodecontentId": "OK{{contentId}}",
 
  "result": {     	"userIdstatus" : "{{userIdcontent_status}}",  
        	"collectionIdprogressDetails": "{{collectionId}}",
 // optional     	"contextId": "{{batchId}}",}]
 // optional         "contentId": "{contentId}",
        "status" :
"{{content_status}}"
  // 0,1 or 2 
        "progressDetails": "{}"
        }
    }
}

Sample Response:

Sample1: Without context(organic consumption)

Code Block
{
    "id": "api.view.read",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
    	"userId": "user_123"
 
        "contentId": "content_123",
 
        "statustype" : "1content",
 
        "progressDetailscontents": [{
           "contentid" : "progress" :20content_123",
             "timespentcollectionid" :"content_123",
10           }"contenxtid" : "content_123"
      }     }
}

Example2: With context or collection

Code Block
languagejson
{
    "id": "api.view.read","status" : "1",
     "ver": "v1",     "tsprogressDetails": "2021-06-23 05:37:40:575+0000",{
    "params": {         "resmsgidmimeType" : null,"application/video"
             "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
progress" :20
       "err": null,    }
    "status": "success",   }]
     "errmsg": null}
}

Example2: With context or collection

Code Block
languagejson
{
     }"id": "api.view.read",
    "responseCodever": "OKv1",
    "resultts": { "2021-06-23 05:37:40:575+0000",
    	"userIdparams": "user_123",{
        "collectionId" : "collection_!23resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "contextIderr" : "context_123"null,
        "contentIdstatus": "content_123success",
 
        "progressDetailserrmsg": "{null
    },
    "responseCode": "OK",
    "progressresult": {
:20,    	"userId": "user_123"
        "timespentcontentId" : 10"content_123",
          }"
 "type": "content"
        "statuscontents":[{
 : "1"     }
}    "contentid" : "content_123",
           "collectionid" :"collection_123",
           "contenxtid" : "context_123"
           "status" : "1",
           "progressDetails": {
             "mimeType" : "application/video"
              "progress" :20
            }
        }]
    }
}
Expand
titlePOST - /v1/view/read?context=all

Request:

Code Block
languagejson
{
    "id": "api.view.read.contextall",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
": "5e763bc2-b072-440d-916e-da787881b1b9"
    }
    "request": {                      // either of the three options is mandatory
   }     "requestcontentId": "{{contentId}}" //optional
        "userIdcollectionId" : "{{userIdcollectionId}}",    // requiredoptional
        "contentIdcontextId" : "{{contentIdcontextId}}" //requiredoptional
     }
}

Response:

Code Block
languagejson
{
  "id": "api.view.read.contextall",
  "ver": "v1",
  "ts": "2021-06-23 05:37:40:575+0000",
  "params": {
    "resmsgid": null,
    "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
    "err": null,
    "status": "success",
    "errmsg": null
  },
  "responseCode": "OK",
  "result": [    
    "err": null,
    "status": "success",
    "errmsg": null
  },
  "responseCode": "OK",
 // List of content details with and without context "result": {
    ...
    ... {       "userId" : "{{userId}}",            "contentId": "{contentId}",       "status": "{{content_status}}",
  //requested_data
    "progressDetailstype": "{}"
    },
    {
  "contextall",
    "userIdcontents" : "{{userId}}", [        "contentId": "{{contentId}}",       "collectionId": "{{collectionId}}",   // List of all "contextId": "{{contextId}}",
 contents irresepcitvie of context
    "status": "{{content_status}}", ]
   }   "progressDetails": "{}"     }   ]
}

Sample Response:

Code Block
languagejson
{
  "id": "api.view.read.contextall",
  "ver": "v1",
  "ts": "2021-06-23 05:37:40:575+0000",
  "params": {
    "resmsgid": null,
    "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
    "err": null,
    "status": "success",
    "errmsg": null
  },
  "responseCode": "OK",
  "errmsgresult": {
null   }"userId" : "user_123",
  "responseCodecollectionId" : "OKcollection_123",
  "resultcontents": [
    {
      "userid" :"user_123",
      "contentId": "content_123",
      "status": "1",
      "progressDetails": {
        "progress": 20,
        "timespent": 10
      }
    },
    {
      "userid" : "user_123"
      "collectionId": "collection_!23",
      "contextId": "context_123",
      "contentId": "content_123",
      "progressDetails": {
        "progress": 20,
        "timespent": 10
      },
      "status": "12"
    }
  ]
  }
}

Content Submit Assess

Expand
titlePOST - /v1/assessment/submit

Request:

Code Block
languagejson
{
    "id": "api.assess.submit",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
       "msgid": "5e763bc2-b072-440d-916e-da787881b1b9"
    }     
    "request": {
        "userId": "{{userId}}",               // required  
        "contentId": "{{contentId}}",         // required  
        "collectionId" : "{{collectionId}}",  // required
        "contextId": "{{batchId}}",           // required 
        "attemptId" : "{{attemptId}}",        // required
        "assessments": [{
            {{assess_event}}      // required for self-assess contents
        }]
    }
}

Response:

Code Block
{
    "id": "api.view.assess",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "{{contentId}}": "Score Updated"
    }
}

...

Expand
titlePOST - /v1/assessment/read

Request:

Code Block
languagejson
{
    "request": {
        "userId": "{{userId}}",            //required
        "contentId" : "{{contentId}}",    //required
        "collectionId" : "{{collectionId}}", //required
        "contextId": "{{batchId}}"   // required
   }
}

Response:

Code Block
languagejson
{
    "id": "api.assessment.read",
    "ver": "v1",
    "ts": "2021-06-23 05:37:40:575+0000",
    "params": {
        "resmsgid": null,
        "msgid": "5e763bc2-b072-440d-916e-da787881b1b9",
        "err": null,
        "status": "success",
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
    	"userId": "{{userId}}",
        "contentId" : "{{contentId}}"
    	"collectionId": "{{collectionId}}",
    	"contextId": "{{batchId}}",
        "assessments": [{
          "attemptId" : "{{attemptId}}",
    	  "score": {{score}},
    	  "max_score": {{max_score}}
        },{
          "attemptId" : "{{attemptId}}",
    	  "score": {{score}},
    	  "max_score": {{max_score}}
        }
        ]
    }
}

...

Expand
titleGET - /v1/summary/list/:userId

Response:

Code Block
languagejson
{
  "id": "api.summary.list",
  "ver": "v1",
  "ts": "2021-06-23 05:59:54:984+0000",
  "params": {
    "resmsgid": null,
    "msgid": "95e4942d-cbe8-477d-aebd-ad8e6de4bfc8",
    "err": null,
    "status": "success",
    "errmsg": null
  },
  "responseCode": "OK",
  "result": {
    "summary": [
      {
        "userId": "{{userId}}",
        "collectionId": "{{collectionId}}",
        "contextId": "{{batchId}}",
        "enrolledDate": 1624275377301,
        "active": true,
        "contentStatus": {
          "{{contentId}}": {{status}}
        },
        "assessmentStatus": {
          "assessmentId": {
            "score": {{best_score}},
            "max_score": {{max_score}}
          }
        },
        "collection": {
          "identifier": "{{collectionId}}",
          "name": "{{collectionName}}",
          "logo": "{{logo Url}}",
          "leafNodesCount": {{leafNodeCount}},
          "description": "{{description}}"
        },
        "issuedCertificates": [{
          "name": "{{certName}}",
          "id": "certificateId",
          "token": "{{certToken}}",
          "lastIssuedOn": "{{lastIssuedOn}}"
        }],
        "completedOn": {{completion_date}},
        "progress": {{progress}},
        "status": {{status}}
      }
    ]
  }
}

Sample Response:

Sample1:

Code Block
languagejson
{
  "id": "api.summary.list",
  "ver": "v1",
  "ts": "2021-06-23 05:59:54:984+0000",
  "params": {
    "resmsgid": null,
    "msgid": "95e4942d-cbe8-477d-aebd-ad8e6de4bfc8",
    "err": null,
    "status": "success",
    "errmsg": null
  },
  "responseCode": "OK",
  "result": {
    "summary": [
      {
        "userId": "user_123",
        "collectionId": "collection_123",
        "contextId": "context_123",
        "enrolledDate": 1624275377301,
        "active": true,
        "contentStatus": {
          "content_123": 2,
          "content_456": 1
        },
        "assessmentStatus": {
          "content_123": {
            "score": {{best_score}},
            "max_score": {{max_score}}
          }
        },
        "collection": {
          "identifier": "collection_123",
          "name": "Mathematics",
          "logo": "http://logoimage",
          "leafNodesCount": 4,
          "description": "Dummy Collection"
        },
        "issuedCertificates": [{
          "name": "Certificate-1",
          "id": "cert_123",
          "token": "sdfjkldjk23j2kj2k3jk2",
          "lastIssuedOn": "1624275377301"
        }],
        "completedOn": "2021-09-10",
        "progress": 70,
        "status": 1
      }
    ]
  }
}

...