[API] Assignment Overrides API: Add endpoints to allow adding and removing students from an override

Problem statement:

The current assignment override API requires posting a complete list of all students for the override.

Our use case involves up to 1000 students in a course, with up to 125 assignments. Students have individual start dates, but to reduce the number of overrides, students who share a start date can also share due dates (assignment overrides). The large number of students necessitates concurrent processing, and with the current API, synchronization is required to keep concurrent requests from modifying the same override simultaneously and overwriting data. Students are also added to the course over time, so not all students can be assigned to an override at the time of override creation.

Proposed solution:

These are the current endpoints for creating and updating overrides:

POST /api/v1/courses/:course_id/assignments/:assignment_id/overrides
PUT /api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id 

 

I propose adding the following endpoints:

GET /api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id/students
POST /api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id/students (a student_id would be included as part of the request body or URL) 
DEL /api/v1/courses/:course_id/assignments/:assignment_id/overrides/:id/students/:student_id 

 

These endpoints would allow you to:

  • List the current students assigned to an override
  • Add a student to the list of students assigned to the override
  • Remove a student from the list of students assigned to the override

This solution would permit safe concurrent updates of the overrides, by giving a way to add and remove a student from the list of students, rather than supplying the entire list of students with each update.

User role(s):

admin

1 Comment
nathanatkinson
Community Team
Community Team
Status changed to: Open