PS: This is just to satisfy my curiosity, but are you indicating that you are deleting all enrollments from your courses after 10 days of the course end date?
No. We have a "census date" that is required for reporting to the state, it's generally the 10th day of the semester. If a student drops before that date, it's like they were never there as far as reporting goes. For those students, we delete their enrollment. We conclude enrollments for any students who make it to the census date and drop later.
We don't delete or conclude any enrollments when the course is over. We let Canvas soft-conclude them for us. That means that if I go back to my Fall 2012 course (first one we used Canvas with), my students and all their work is still there.
I am not actually using the List submissions from multiple assignments API, I am using the List assignment submissions. I suppose I could switch and use your suggestion.
Try my suggestion. The list submissions for a single assignment doesn't allow you to specify the students and it doesn't include the inactive ones. The one I'm recommending allows you to list multiple students including those who are inactive. It allows you to get results for more than one assignment at a time, too, although you can specify just a single assignment if you like.
You'll still need to make another call to get the list of inactive students, but it sounds like the only way you're going to get to the information is to use the more flexible multiple assignments version.
What you could do is use yours for the active students (if you use this in the future when they're still active) and then get a list of just the inactive ones and use the multiple assignments version with the inactive list.
Because the quizzes use quiz groups based on assessment question banks, I am now struggling with the next part. There seems to be no endpoint for listing all the question groups in a quiz. (I may ask a separate question in the community about that; I don't want this thread to get into too many different directions.)
Correct. Linking to questions inside banks is problematic as there is no direct API for getting the results out. Getting questions from banks out is problematic in general. You can do is create a quiz that contains all of the questions in the bank by adding them to the quiz rather than linking them. Then export that quiz as a QTI file and parse it. The one part I'm not sure about is whether that will contain the question ID that you need or not.
There may be another way to get to it if you can get the questions that were actually delivered with an exam, possibly using get all quiz submission questions. That call does support an undocumented parameter quiz_submission_attempt. That potentially means a lot of API calls to build a working copy.
I would have to review and test some things before I feel could comment with any certainty. I perceive the problems with linking to question banks to be more than the benefits, so I don't link to them and don't have anything readily available for testing.