Add submission_type: “api-upload” to allow safe integration where exams are performed offline


When exams are taken offline, but you want them included as submissions on a Canvas course for grading etc., you currently need to set the assignment submission_type to "online_upload" when uploading assets. This could allow students to side load a file.

By adding submission_type: “api-upload” and restrict uploading to API-clients this issue is solved.

We have just performed such an integration and we are really happy with the feature, which saves tens of thousands of paper copies for each exam round that is graded. But having to open the door with submission_type: "online_upload" is a major drawback.

Yours sincerely,

Sebastian Ware

Community Team
Community Team
Status changed to: Open
Community Champion

api_upload doesn't won't necessarily keep students from submitting files as they have access to the API as well. In fact, things done through the mobile app are done using the API. It's going to be confusing to students as well, who look at it and wonder what an API Upload is and how they're supposed to do that. Setting aside what to call it, it is an interesting idea.

Although probably harder to implement, I would rather leave it as a paper submission, modify that type to support submissions, but make it a role permission to submit that students don't have by default.

I still don't like that idea, though, because I had assignments while I was teaching online for COVID that were delivered to the students, they printed, then scanned and submitted. At it's heart, I feel it was a paper assignment, but I'm willing to accept that it really is an online upload. Allowing paper submissions to handle online submissions is going to involve substantial changes, so looking for alternative methods is probably best.

Setting my personal preferences aside, I've seen requests from people to have a paper submission, but then allow for students who couldn't be in class to upload files. This sort of hybrid solution sounds similar to what you want, you just want to restrict the ability to do the upload. That comes back to a permission on the roles.

Although not exactly what you're wanting, I suspect this can be handled with the current system.

I would make it a paper submission to start with until the students took their offline exam. Then, as part of my code that uploaded the scanned papers, I would modify the assignment type to online submission and set the available until date to some date in the past so that students could not submit. Alternatively, you could set it to a maximum of one submission, but that could allow students to submit who didn't take the paper copy.

The issue with changing the submission type after the fact is that it then breaks copying the course for future semesters. Break may be too strong, but it would require the instructor or course designer go back and remove the online submission type before using it again.

A simpler alternative is to go ahead and make it file upload but be clear in the instructions that this is a paper exam and the reason it says online is so that a scanned copy of their exam can be made available to them. If a student does submit a file, what real harm does it do? It will be overwritten when you upload the scanned version. I would still enforce an available until date so that the students can't upload their copy after you submit the file for them.

A third possibility is to create a separate assignment for the online submission. If you want to use SpeedGrader for scoring the paper submission, then make sure it doesn't count as the final. You could use your code to scan for grading changes and transfer the grade to the assignment. Set the availability to some point in the past so students cannot submit to it. Then, when you're ready to upload the scanned documents, you modify the availability, upload the file, and set it back when done. Don't change the due date to keep students from getting notifications about changes to the due date.

Community Member

Currently we have a solution where we open and close the submission during import, but a student could be polling the site and attempt to upload. What we would like is a bullet proof solution that is simple to understand with minimal setup dependencies.

Status changed to: Archived
Comments from Instructure

As part of the new Ideas & Themes process, all ideas in Idea Conversations were reviewed by the Product Team. Any Idea that was associated with an identified theme was moved to the new Idea & Themes space. Any Idea that was not part of the move is being marked as Archived. This will preserve the history of the conversations while also letting Community members know that Instructure will not explore the request at this time.