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[posted_grade]=88' \ -F 'grade_data[posted_grade]=95' \ -H "Authorization: Bearer <token>"
Any suggestions would be greatly appreciated!