The submissions API (Canvas LMS REST API Documentation) is badly documented as it pertains to group assignments. Moreover the Support Agents do not have accurate information on how it works. Here are some facts about the current implementation:
1. When one students in a group submit a group assignment each member of the group get a unique Submission object with a unique submission_id.
2. Each submission corresponding to the group members has an Attachment object, these are the same for all members in the group.
3. The API call
returns all current submissions. Contrary to what Support Agents might say, old submissions of a student or group that are resubmitted are not included here, only the current submission is in this list. Moreover, for students in a group, there is a separate submission corresponding to each student.
There is a lot of machinery that keeps these consistent if you interact with Canvas via the web interface. I am unsure of whether the API keeps these things consistent. In particular I have no idea about the following:
1. when you assign a grade to a submission using the API
does this automatically assign the same grade to the other students in the group. Those other students have different submission_ids. This propegation of grades does happen in Speedgrader (so I hear), but the API functionality is undocumented.
2. when you assign peer reviews using the API
And the student does the peer review, do all group members see the peer review? Note peer reviews are assigned to submission_ids, and different group members have distinct submission_ids.
It would be great if the details of submissions, peer review, and grading in the API got properly documented. Until then, if anyone has experience with this, I'd love to hear about it. I don't trust the Canvas Support Agents to know what is going on.
Addendum: One of the reasons I'm looking at the API with respect to group projects in the first place is that the Web Interface for 'automatically assigning peer reviews' is badly implemented (you might say broken). As it can assign students their own assignment to peer review. I assume that this 'bad implementation' is a consequence the way group submissions are stored in Canvas, the same thing that causes the API calls above to be highly non straightforward.
Addendum by Jason Hartline.