Real-time Data of LMS Courses
The course consists of various learning activities on the ClassIn LMS. Currently, the learning activities that are available with real-time webhooks are:
- Assignment
- Test
Assignment
Trigger Timing: When assignment grades are generated or updated, typically after the teacher has graded the assignment.
Key | Data | Description |
---|---|---|
Cmd | String | Data Type:HomeworkScore |
SID | Int64 | School ID |
CourseID | Int64 | Course ID |
CourseName | String | Course Name |
Data | Object | Assignment Info and Scores |
└ UnitId | Int64 | Unit ID |
└ UnitName | String | Unit Name |
└ ActivityId | Int64 | Activity(Assignment) ID |
└ ActivityName | String | Activity(Assignment) Title |
└ Score | float | Full Score |
└ StudentInfo | Object | Student Info |
└ StudentUid | Int64 | Student's UID |
└ StudentName | String | Student Name: The student's name as displayed in the assignment module of the ClassIn client. |
└ StudentAccount | String | Student Account: If the student has a registered mobile phone number, the mobile number will be used for the data push. If no mobile number is available, the email address will be used instead. |
└ SubmissionTime | Int64 | Assignment Submission Time |
└ CorrectionTime | Int64 | Grading Time |
└ StudentScoringRate | float | Student Score Rate: A decimal value, for example 0.8. Calculation logic: StudentScoringRate = The score students received in the assignment/Full score |
└ TeacherInfo | Object | Grading Teacher Information |
└ TeacherUid | Int64 | Teacher UID |
└ TeacherName | String | Teacher Name: The teacher's name as displayed in the assignment module of the ClassIn client. |
└ TeacherAccount | String | Teacher Account: If the teacher has a registered mobile phone number, the mobile number will be used for the data push. If no mobile number is available, the email address will be used instead. |
Instance
{
"Cmd" : "HomeworkScore",
"SID" : 2803666,
"CourseID" : 2279909,
"CourseName" : "Test",
"Data" : {
"UnitId" : 256,
"UnitName" : "Unit One",
"ActivityId" : 185647,
"ActivityName" : "Test Homework",
"Score" : 100,
"StudentInfo" : {
"StudentUid" : 1000083,
"StudentName" : "Amy",
"StudentAccount" : "13451113311"
},
"SubmissionTime" : 1713053774,
"CorrectionTime" : 1713083674,
"StudentScoringRate" : 0.9,
"TeacherInfo" : {
"TeacherUid" : 1000082,
"TeacherName" : "Mike",
"TeacherAccount" : "13466668866"
}
}
}
Test
Trigger Timing: When a test score is generated, either through automatic grading or teacher grading, the score will be pushed. However, if only partial scores are generated, the data will not be pushed. If the answers are modified, resulting in a score change, the updated score will be pushed.
Key | Data | Description | |
---|---|---|---|
Cmd | String | Data Type:ExamScore | |
SID | Int64 | School ID | |
CourseID | Int64 | Course ID | |
CourseName | String | Course Name | |
Data | Object | Test Info and Scores | |
└ UnitId | Int64 | Unit ID | |
└ UnitName | String | Unit Name | |
└ ActivityId | Int64 | Activity(Test) ID | |
└ ActivityName | String | Activity(Test) Title | |
└ClassId | Int64 | lesson id -- value if the test is published on the lesson | |
└ Score | float | Full Score | |
└ StudentInfo | Object | Student Info | |
└ StudentUid | Int64 | Student's UID | |
└ StudentName | String | Student Name: The student's name as displayed in the assignment module of the ClassIn client. | |
└ StudentAccount | String | Student Account: If the student has a registered mobile phone number, the mobile number will be used for the data push. If no mobile number is available, the email address will be used instead. | |
└ SubmissionTime | Int64 | Test Submission Time | |
└ AnswerDuration | Int64 | The time student spent on the test(second) | |
└ CorrectionTime | Int64 | Grading Time | |
└ StudentScoringRate | float | Student Score Rate: A decimal value, for example 0.8. Calculation logic: StudentScoringRate = The score students received in the assignment/Full score | |
└ TeacherInfo | Object | Grading Teacher Information | |
└ TeacherUid | Int64 | Teacher UID. If the test is auto grading, the value of Uid is 0 | |
└ TeacherName | String | Teacher Name: The teacher's name as displayed in the assignment module of the ClassIn client. Empty if the test is auto grading | |
└ TeacherAccount | String | Teacher Account: If the teacher has a registered mobile phone number, the mobile number will be used for the data push. If no mobile number is available, the email address will be used instead. Empty if the test is auto grading | |
└TopicDetails | array[object] | array | |
└TopicId | int | id of the topic as 1 | |
└TopicType | String | type of the topic, (string as "1") 1: Single choice,2: Multiple choice,3:True or False,4:Fills-up,5:essay question , 6: Comprehensive; | |
└ TopicResult | int | 0 = waiting for grading,1=correct,3=half correct,2=incorrect,4=no answer | |
└TopicScore | float | the student's score of the topic | |
└TopicMaxScore | float | max score of the topic | |
└SubTopicDetails | array[object] | if there's no subtopic, it's an empty array [] | |
└SubTopicId | int | id of the subtopic | |
└SubTopicType | String | type of the subtopic (string as "1") 1: Single choice, 2: Multiple choice, 3: True or False, 4: Fills-up, 5: essay question , 5: Comprehensive; | |
└SubTopicResult | int[] | 0 = waiting for grading,1=correct,3=half correct,2=incorrect,4=no answer | |
└SubTopicScore | float | score of the subtopic | |
└SubTopicMaxScore | int | max score of the subtopic |
Instance
{
"CourseID": 429724,
"Cmd": "ExamScore",
"CourseName": "Test Class",
"SID": 187286,
"Data": {
"ClassId": 34928113,
"TeacherInfo": {
"TeacherName": "Lucy",
"TeacherAccount": "12114444011",
"TeacherUid": 187286
},
"ActivityName": "test Monday",
"UnitName": "Unit 1",
"AnswerDuration": 57,
"ActivityId": 32044258,
"Score": 24,
"StudentInfo": {
"StudentName": "Tom",
"StudentAccount": "12133333301",
"StudentUid": 187268
},
"UnitId": 32014550,
"SubmissionTime": 1729576858,
"TopicDetails": [{
"TopicId": 1,
"TopicType": "1",
"SubTopicDetails": [],
"TopicResult": [2],
"TopicMaxScore": 5,
"TopicScore": 0
},
{
"TopicId": 2,
"TopicType": "5",
"SubTopicDetails": [],
"TopicResult": [3],
"TopicMaxScore": 4,
"TopicScore": 2
},
{
"TopicId": 3,
"TopicType": "4",
"SubTopicDetails": [],
"TopicResult": [2, 2, 2],
"TopicMaxScore": 6,
"TopicScore": 0
},
{
"TopicId": 4,
"TopicType": "6",
"SubTopicDetails": [{
"SubTopicId": 1,
"SubTopicType": "1",
"SubTopicResult": [2],
"SubTopicScore": 0,
"SubTopicMaxScore": 5
},
{
"SubTopicId": 2,
"SubTopicType": "2",
"SubTopicResult": [2],
"SubTopicScore": 0,
"SubTopicMaxScore": 4
}],
"TopicResult": [2],
"TopicMaxScore": 9,
"TopicScore": 0
}],
"StudentScoringRate": 0.083333,
"CorrectionTime": 1729576949
}
}