[ARCHIVED] Setting grades using canvas API
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am working with the Canvas API to populate Canvas courses with data from a different LMS. We have been able to create the course, populate the membership, and pull in assignments.
Where I'm stuck is in pushing over grade data. I am doing this by creating a submissions for a given assignment for a given student, and setting a grade. I add parameter as_user_id=sis_user_id:xxx where xxx is the sis_user_id of a professor in the course. But I am getting an 'unauthorized' error. I also tried using the sis_user_id of the relevant student, but got the same 'unauthorized' error.
My questions are:
1. What permissions do I need to be aware of, or somehow address to be able to set grades/create submissions via the API?
2. To bring grades over, would the appropriate steps be to just create a Submission via a POST and include the grade, or do I need to create a submission via a POST, and then make a PUT call to update it to set the grade?
3. As an alternative, the update_grades call seemed a good way to potentially make a single bulk call. However I was unable to get this working either -- I'm not even entirely clear in what format that data should be passed -- is it simple text rather than json? I was testing in postman, but got an internal server error, so clearly I am not sending data in the correct format (error_report_id": 1052166532)
curl 'https://<canvas>/api/v1/courses/1/assignments/2/submissions/update_grades' \ -X POST \ -F 'grade_data[3][posted_grade]=88' \ -F 'grade_data[4][posted_grade]=95' \ -H "Authorization: Bearer <token>"
Any suggestions would be greatly appreciated!
Robin Colodzin
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.