Celebrate Excellence in Education: Nominate Outstanding Educators by April 15!
Found this content helpful? Log in or sign up to leave a like!
Using the REST API we have integrated with Canvas from a website and successfully created canvas students based on the user data from the website and enrolled them on a course.
The website currently integrates with another LMS course provider and as part of that integration we report on the students progress within the website back-end so the website admins do not have to switch between both systems. I am able to retrieve some data for each student such as the total study time and the last study date but I am struggling to find out how to get the following data from the Canvas REST API to hopefully match the data we could get from the other LMS provider:
1. Is there such a thing as the first study date i.e. the date a student first started the course. We can use the enrollment create date but that may not be the exact date / time that a person actually started the course.
2. We would also like to report on the status of a students progression through the course ideally having the following statuses:
Not Started: Enrolled but not started the course
In Progress: Once the student starts the course
Failed: Failed the course
Passed: Passed the course
For these status I wondered if there was an overall status indicator recorded against the enrollment record but I could not see anything obvious in the API docs or could anybody recommend a way we could derive the status from the data in the API.
I am pretty new to the API and Canvas so if I can provide any other information please do let me know.
Thanks.
Solved! Go to Solution.
Thank you @James that is most helpful.
Yes our courses are grouped into modules within which some have quizzes and then a final quiz/exam with retakes so I think a good starting point will be to look at the list modules that you mentioned and the quizzes.
I had seen the page views mentioned in another thread as we were trying to determine if the student was using the app or the website but that seemed a bit hit or miss for that information. However I will look at that data to try and get the first study date based on the information you have shared.
I'll post back our findings once we have had a look. Thanks again.
You may be able to obtain the first date of study from the Get user-in-a-course-level participation data endpoint of the analytics API. It returns page_views (roughly corresponding to GETs) blocked into 1 hour increments and participations (roughly corresponding to POSTs). You could decide whether to use the time they went into the course and started clicking on things or the time they actually submitted something. The page_views are keyed by the timestamp and the participations have a created_at timestamp. Look through those and find the earliest timestamp.
For the second question, there are several ways to get this information, depending on how you have your course organized. None of them will give you a flag like "not started", "in progress", "passed", or "failed." You will need to assign those yourself based on logic you create.
We have an orientation course that students must complete before they get into their real courses. Towards the beginning of the semester, we have an on-demand report that lists all of the students taking courses that haven't completed the orientation and how far they are into the orientation. The orientation is grouped into modules and each module has a prerequisite of the previous module. To tell their progress, we use the List modules endpoint of the modules API and specify the student_id. Then we iterate through the modules, looking for "started" or "unlocked" and keep the last one (it's an array in module order). I report the module number (1 through n) and the name in the report.
If you want to base your progress off of submissions, then you could use the analytics API as mentioned before. The other part of the participations is the URL of the participation. You would need to parse that to figure out what it was referring to.
You could also use the List submissions for multiple assignments endpoint of the submissions API and see what the student has grades for.
If you want the grade information for the students to determine whether they passed or failed, you can obtain that from the List enrollments endpoint of the enrollments API.
Thank you @James that is most helpful.
Yes our courses are grouped into modules within which some have quizzes and then a final quiz/exam with retakes so I think a good starting point will be to look at the list modules that you mentioned and the quizzes.
I had seen the page views mentioned in another thread as we were trying to determine if the student was using the app or the website but that seemed a bit hit or miss for that information. However I will look at that data to try and get the first study date based on the information you have shared.
I'll post back our findings once we have had a look. Thanks again.
Also note that Canvas uses the same term to refer to two very different things. The analytics has a page_views properties and the are page views that the admin can see from the individual users page.
The analytics version is similar to information returned by the Access Report for a user. It's relatively quick.
The second one is more like web page requests and contains a lot more than just page views. The second is also extremely slow and no way to make parallel requests to go all the way back to the beginning of the course.
If mobile shows up or doesn't show up, it doesn't affect what you're wanting to do because there's not a good way to get that information. The user page views (page requests) is not feasible for this task via the API. That means that the best you'll get will be through analytics or by looking at submissions. Submissions are present independent of the device used, but they don't measure the first activity in the course.
Another way to find activity is to do what I do, but I wouldn't necessarily recommend it. We fetch and record the total time in the course every day of the semester. Since we do it from the start, we can tell when people started, but it would be impossible to go back this way and recover the date if I hadn't been collecting it already.
Hi Jason,
1. How do you track enrollment in your institution? I prefer acquiring any information directly from its origin where possible. In our case, we can find this on HR or SIS. Is this viable for you?
2. The Canvas Enrollment API has a status field which can be handy and can classify an enrollment as active, invited, creation_pending, deleted, rejected, completed, inactive.
We have internal processes to translate user status in a course
The results (pass / fail or grade) determined by data on gradebook
Interpretation of data would largely depend on your workflow and business logic.
Cheers,
Raj
Thanks for sharing. These can be helpful, but they don't give the status codes that Jason was asking about. Sometimes, it is helpful to look at what is available and perhaps we're asking the wrong question. We all hate when technology drives the discussion, but sometimes it does. The codes that Jason asked about can be obtained but it may take multiple requests for each student, so it may turn out to be that settling for what's available with a single call is sufficient.
Other people may not use the enrollment states the same way that you do, so I'll share what we do or how the state might relate to Jason's question.
I completely agree about the SIS being authoritative. I have found that some people don't have access to the SIS, but they do have access to Canvas, so they have to get the information out of that. However, the SIS cannot answer the question of whether the student is actively involved in the course, so even if you can get some of the information from the SIS, you'll still have to get some of it from Canvas. Being able to get it all in one place was I think what Jason was after. Better yet if it can be with one API call rather than several.
To participate in the Instructure Community, you need to sign up or log in:
Sign In