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 Score
  • Assignment Submission
  • Test Score
  • AnswerSheet Score

Assignment Score

Trigger Timing: When assignment scores 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
└ GradingPlan String GradingPlan, as '100-point scale'
└ StudentScore String Displayed Score, as 'Amazing '
└ ReviewDetails Object Details of the result
  └ Correct int Number of Correct
  └ Wrong int Number of Wrong
  └ Trophy int Number of Trophy
  └ Excellent int 0 Not Excellent,1 Excellent
  └ Comment String comment
└ 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, 
        "StudentScore": "90", 
        "ReviewDetails": {
            "Trophy": 9,
            "Comment": "<section class=\"eeo-editor-wrapper\" style=\"font-size: 15px; color: #38404a;\"><p>good job *2\u00a0</p></section>",
            "Wrong": 6,
            "Correct": 10,
            "Excellent": 1
        },
        "StudentInfo" : {
                "StudentUid" : 1000083,
                "StudentName" : "Amy",
                "StudentAccount" : "13451113311"
        },
        "SubmissionTime" : 1713053774,
        "GradingPlan": "\u5206\u6570\u5236",
        "CorrectionTime" : 1713083674,
        "StudentScoringRate" : 0.9,
        "TeacherInfo" : {
                "TeacherUid" : 1000082,
                "TeacherName" : "Mike",
                "TeacherAccount" : "13466668866"
        }
    }
}

Assignment Submission

Trigger Timing: Each time students submit their assigments.

Key Data Description
Cmd String Message type: HomeworkSubmit
SID Int64 Organization ID
CourseID Int64 Class ID
CourseName String Class name
Data Object Assignment content
└ UnitId Int64 Unit ID
└ UnitName String Unit name
└ ActivityId Int64 Activity (assignment) ID
└ ActivityName String Activity (assignment) title
StudentTotal Int64 Total number of students assigned: 10
SubmitTotal Int64 Number of submissions: 6
SubmissionTime Int64 Assignment submission timestamp
IsSubmitLate Int64 0: No, 1: Yes
IsRevision Int64 0: No, 1: Yes
Content String Assignment text content
Files Object List of assignment attachments
└ Src String File download URL
└ FileName String File name
└ FileExtension String File format
StudentInfo Object Student information
└ StudentUid Int64 Student UID
└ StudentName String Student name: Name displayed in client app
└ StudentAccount String Student account: Push phone number if available, otherwise push email
TeacherInfo Object Activity teacher information
└ TeacherUid Int64 Teacher UID
└ TeacherName String Teacher name: Name displayed in client app
└ TeacherAccount String Teacher account: Push phone number if available, otherwise push email

{
    "ActionTime": 1741334951,
    "CourseID": 26901289,
    "TimeStamp": 1741335551,
    "SafeKey": "d9a20c9bf3ac660766ddbfac4988ca31",
    "Cmd": "HomeworkSubmit",
    "CourseName": "test course",
    "SID": 1068502,
    "_id": "67caa9a7976eb388db162139",
    "Data": {
        "Files": [
            {
                "FileExtension": "png",
                "src": "https://static.eeo.cn/upload/files/file01/20250307/03_03_71cfd3e-a71f-58e7-0cc8-577183e60485_1741334949147.png",
                "fileName": "eeo.png"
            }
        ],
        "TeacherInfo": {
            "TeacherName": "Lucy",
            "TeacherAccount": "001-38102248",
            "TeacherUid": 10602
        },
        "ActivityName": "Magic Key",
        "UnitName": "test unit",
        "IsSubmitLate": 1,
        "StudentTotal": 2,
        "Content": "<section class=\"eeo-editor-wrapper\" style=\"font-size:15px;color:#38404A;\"><p>start\u00a0</p></section>",
        "ActivityId": 54911996,
        "IsRevision": 0,
        "StudentInfo": {
            "StudentName": "GoodGuy",
            "StudentAccount": "23672340105",
            "StudentUid": 102494
        },
        "UnitId": 255618,
        "SubmissionTime": 1741334950,
        "SubmitTotal": 1
    }
}

Test Score

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
    }
}

AnswerSheet Score

Trigger Timing: When an answerSheet 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: AnswerSheetScore
SID Int64 School ID
CourseID Int64 Course ID
CourseName String Course Name
Data Object AnswerSheet Info and Scores
└ UnitId Int64 Unit ID
└ UnitName String Unit Name
└ ActivityId Int64 Activity(AnswerSheet) ID
└ ActivityName String Activity(AnswerSheet) Title
└ClassId Int64 lesson id -- value if the AnswerSheet 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 AnswerSheet Submission Time
└ AnswerDuration Int64 The time student spent on the AnswerSheet(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 Reserved Field Grading Teacher Information Currently empty
 └ TeacherUid Int64 Reserved Field . Teacher UID. Currently, the value of Uid is 0,will be updated in some later verson
 └ TeacherName String Reserved Field. Teacher Name: The teacher's name as displayed in the assignment module of the ClassIn client. Empty now
 └ TeacherAccount String Reserved Field. 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 AnswerSheet 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": "",
            "TeacherAccount": "",
            "TeacherUid": 0
        },
        "ActivityName": "AnswerSheet on 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",
            "TopicResult": [3],
            "TopicMaxScore": 4,
            "TopicScore": 2
        }, 
        {
            "TopicId": 3,
            "TopicType": "4",
            "TopicResult": [2, 2, 2],
            "TopicMaxScore": 6,
            "TopicScore": 0
        }, 
        {
            "TopicId": 4,
            "TopicType": "3",
            "TopicResult": [2],
            "TopicMaxScore": 9,
            "TopicScore": 0
        }],
        "StudentScoringRate": 0.083333,
        "CorrectionTime": 1729576949
    }
}

results matching ""

    No results matching ""