cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
sheads
Community Participant

undocumented API for gradebook_settings?

When I check my Canvas Data Portal request tables, I find a POST call to /api/v1/courses/xxxx/gradebook_settings for any time a user changes a gradebook setting, such as "Show Concluded Enrollments."

I'd love to be able to use a script to update all instructors' gradebook settings to show concluded enrollments at the end of semesters (or better yet, if Canvas had an account setting that made it "on" by default, but that's not a discussion for this group).

I'm by no means an API expert, but it seems to me that, if I knew the right call to make with the user_id of the instructor(s) and the course_id, I could edit the gradebook_settings via API (and potentially write a script that updates all of the settings around the end of the semester when I get floods of emails about "where did my students go in the gradebook?").

Can anyone offer any insights?

Labels (2)
0 Kudos
5 Replies
agschmid
Community Contributor

Hi David,

Would the enrollments API work for this? Enrollments - Canvas LMS REST API Documentation You can request state[] when making the call.

Looking at List Enrollments: Enrollments - Canvas LMS REST API Documentation 

sheads
Community Participant

Unfortunately, no - the enrollment state would work for changing the student enrollments back to active so they appear in the gradebook, but we do want the enrollments to conclude at the end of the semester, not be active. I'd just like to be able to change the gradebook setting for the instructor(s) of every course so that the "Show Concluded Enrollments" option is on by default, so instructors don't go to their gradebook and see the gradebook empty of active enrollments until they figure out the "Show Concluded" option in the settings.

nschutz
Community Participant

I have the same question and couldn't find the REST API documentation on gradebook settings object.

JamesSekcienski
Community Participant

Since this is undocumented, there is no guarantee that this API call will remain available and could disappear without warning at any time per the API Policy:  Instructure Canvas API Policy | Instructure

As long as you are willing to accept that Instructure could remove this API call at any point, you could try using it for this purpose.  If you look at the Network tab in the Dev Tools of your browser and look at the details of the API call, you can determine the necessary settings for the request under Headers and Payload.  It looks like it is sending the request using the JSON format using the content-type: application/json  Canvas LMS REST API Documentation (instructure.com).

Once you have a working request format, you could write a script or use something like Postman Runner to perform this.

nschutz
Community Participant

Yes, that was what I ended up doing and meant to post the solution here. This is the URL for the PUT request.

"https://" . $domain . "/api/v1/courses/" . $course_id . "/gradebook_settings?gradebook_settings[show_concluded_enrollments]=true"