diff --git a/pom.xml b/pom.xml
index 93d43dec3..985db8758 100644
--- a/pom.xml
+++ b/pom.xml
@@ -171,6 +171,11 @@
poi-ooxml
3.11
+
+
+ redis.clients
+ jedis
+
diff --git a/sb-cb-ext.iml b/sb-cb-ext.iml
deleted file mode 100644
index 9f592f5e6..000000000
--- a/sb-cb-ext.iml
+++ /dev/null
@@ -1,379 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/org/sunbird/assessment/controller/AssessmentController.java b/src/main/java/org/sunbird/assessment/controller/AssessmentController.java
index ec5b3bb08..c2bd3056c 100644
--- a/src/main/java/org/sunbird/assessment/controller/AssessmentController.java
+++ b/src/main/java/org/sunbird/assessment/controller/AssessmentController.java
@@ -147,6 +147,12 @@ public ResponseEntity> readQuestionList(@Valid @RequestBody Map(response, response.getResponseCode());
}
- // QUML based Assessment APIs
- // =======================
+
+ @GetMapping("/v1/quml/assessment/retake/{assessmentIdentifier}")
+ public ResponseEntity retakeAssessment(
+ @PathVariable("assessmentIdentifier") String assessmentIdentifier,
+ @RequestHeader(Constants.X_AUTH_TOKEN) String token) throws Exception {
+ SBApiResponse readResponse = assessmentServiceV2.retakeAssessment(assessmentIdentifier, token);
+ return new ResponseEntity<>(readResponse, readResponse.getResponseCode());
+ }
}
diff --git a/src/main/java/org/sunbird/assessment/model/Competency.java b/src/main/java/org/sunbird/assessment/model/Competency.java
new file mode 100644
index 000000000..ba505aff3
--- /dev/null
+++ b/src/main/java/org/sunbird/assessment/model/Competency.java
@@ -0,0 +1,196 @@
+package org.sunbird.assessment.model;
+
+import javax.annotation.Generated;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"id",
+"name",
+"description",
+"competencyType",
+"competencyArea",
+"source",
+"selectedLevelId",
+"selectedLevelLevel",
+"selectedLevelName",
+"selectedLevelDescription"
+})
+public class Competency {
+
+@JsonProperty("id")
+private String id;
+@JsonProperty("name")
+private String name;
+@JsonProperty("description")
+private String description;
+@JsonProperty("competencyType")
+private String competencyType;
+@JsonProperty("competencyArea")
+private String competencyArea;
+@JsonProperty("source")
+private String source;
+@JsonProperty("selectedLevelId")
+private String selectedLevelId;
+@JsonProperty("selectedLevelLevel")
+private String selectedLevelLevel;
+@JsonProperty("selectedLevelName")
+private String selectedLevelName;
+@JsonProperty("selectedLevelDescription")
+private String selectedLevelDescription;
+
+@JsonProperty("id")
+public String getId() {
+return id;
+}
+
+@JsonProperty("id")
+public void setId(String id) {
+this.id = id;
+}
+
+@JsonProperty("name")
+public String getName() {
+return name;
+}
+
+@JsonProperty("name")
+public void setName(String name) {
+this.name = name;
+}
+
+@JsonProperty("description")
+public String getDescription() {
+return description;
+}
+
+@JsonProperty("description")
+public void setDescription(String description) {
+this.description = description;
+}
+
+@JsonProperty("competencyType")
+public String getCompetencyType() {
+return competencyType;
+}
+
+@JsonProperty("competencyType")
+public void setCompetencyType(String competencyType) {
+this.competencyType = competencyType;
+}
+
+@JsonProperty("competencyArea")
+public String getCompetencyArea() {
+return competencyArea;
+}
+
+@JsonProperty("competencyArea")
+public void setCompetencyArea(String competencyArea) {
+this.competencyArea = competencyArea;
+}
+
+@JsonProperty("source")
+public String getSource() {
+return source;
+}
+
+@JsonProperty("source")
+public void setSource(String source) {
+this.source = source;
+}
+
+@JsonProperty("selectedLevelId")
+public String getSelectedLevelId() {
+return selectedLevelId;
+}
+
+@JsonProperty("selectedLevelId")
+public void setSelectedLevelId(String selectedLevelId) {
+this.selectedLevelId = selectedLevelId;
+}
+
+@JsonProperty("selectedLevelLevel")
+public String getSelectedLevelLevel() {
+return selectedLevelLevel;
+}
+
+@JsonProperty("selectedLevelLevel")
+public void setSelectedLevelLevel(String selectedLevelLevel) {
+this.selectedLevelLevel = selectedLevelLevel;
+}
+
+@JsonProperty("selectedLevelName")
+public String getSelectedLevelName() {
+return selectedLevelName;
+}
+
+@JsonProperty("selectedLevelName")
+public void setSelectedLevelName(String selectedLevelName) {
+this.selectedLevelName = selectedLevelName;
+}
+
+@JsonProperty("selectedLevelDescription")
+public String getSelectedLevelDescription() {
+return selectedLevelDescription;
+}
+
+@JsonProperty("selectedLevelDescription")
+public void setSelectedLevelDescription(String selectedLevelDescription) {
+this.selectedLevelDescription = selectedLevelDescription;
+}
+
+@Override
+public String toString() {
+StringBuilder sb = new StringBuilder();
+sb.append(Competency.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+sb.append("id");
+sb.append('=');
+sb.append(((this.id == null)?"":this.id));
+sb.append(',');
+sb.append("name");
+sb.append('=');
+sb.append(((this.name == null)?"":this.name));
+sb.append(',');
+sb.append("description");
+sb.append('=');
+sb.append(((this.description == null)?"":this.description));
+sb.append(',');
+sb.append("competencyType");
+sb.append('=');
+sb.append(((this.competencyType == null)?"":this.competencyType));
+sb.append(',');
+sb.append("competencyArea");
+sb.append('=');
+sb.append(((this.competencyArea == null)?"":this.competencyArea));
+sb.append(',');
+sb.append("source");
+sb.append('=');
+sb.append(((this.source == null)?"":this.source));
+sb.append(',');
+sb.append("selectedLevelId");
+sb.append('=');
+sb.append(((this.selectedLevelId == null)?"":this.selectedLevelId));
+sb.append(',');
+sb.append("selectedLevelLevel");
+sb.append('=');
+sb.append(((this.selectedLevelLevel == null)?"":this.selectedLevelLevel));
+sb.append(',');
+sb.append("selectedLevelName");
+sb.append('=');
+sb.append(((this.selectedLevelName == null)?"":this.selectedLevelName));
+sb.append(',');
+sb.append("selectedLevelDescription");
+sb.append('=');
+sb.append(((this.selectedLevelDescription == null)?"":this.selectedLevelDescription));
+sb.append(',');
+if (sb.charAt((sb.length()- 1)) == ',') {
+sb.setCharAt((sb.length()- 1), ']');
+} else {
+sb.append(']');
+}
+return sb.toString();
+}
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/sunbird/assessment/repo/AssessmentRepository.java b/src/main/java/org/sunbird/assessment/repo/AssessmentRepository.java
index 9895962df..62891dc70 100644
--- a/src/main/java/org/sunbird/assessment/repo/AssessmentRepository.java
+++ b/src/main/java/org/sunbird/assessment/repo/AssessmentRepository.java
@@ -11,7 +11,7 @@ public interface AssessmentRepository {
/**
* gets answer key for the assessment given the url
- *
+ *
* @param artifactUrl
* @return
* @throws Exception
@@ -20,7 +20,7 @@ public interface AssessmentRepository {
/**
* gets answerkey for the quiz submission
- *
+ *
* @param quizMap
* @return
* @throws Exception
@@ -29,7 +29,7 @@ public interface AssessmentRepository {
/**
* inserts quiz or assessments for a user
- *
+ *
* @param persist
* @param isAssessment
* @return
@@ -40,7 +40,7 @@ public Map insertQuizOrAssessment(Map persist, B
/**
* gets assessment for a user given a content id
- *
+ *
* @param courseId
* @param userId
* @return
@@ -49,7 +49,12 @@ public Map insertQuizOrAssessment(Map persist, B
public List