Summary:The Learning Mastery Gradebook allows drag-and-drop reordering of outcome columns, and this triggers a call to /api/v1/courses/:course_id/assign_outcome_order. The API returns 204 No Content (success), but the column order does not persist after page refresh.
Steps to Reproduce:
- Open Learning Mastery Gradebook for any course with multiple outcomes
- Drag an outcome column to a different position
- Observe the UI updates immediately (column moves)
- Check Network tab - see POST to
/api/v1/courses/:course_id/assign_outcome_order → returns 204 - Refresh the page (Ctrl+Shift+R)
Expected Result:
- Column order should persist after refresh
Actual Result:
- Column order reverts to original state
- The
assign_outcome_order API appears to accept the data but doesn't save it
API Testing:
I've also tested calling the API directly via console:
await fetch('/api/v1/courses/566/assign_outcome_order', {
method: 'POST',
headers: {
'content-type': 'application/json',
'x-csrf-token': getCsrfToken(),
'x-requested-with': 'XMLHttpRequest'
},
body: JSON.stringify([
{outcome_id: 601, position: 1},
{outcome_id: 603, position: 2},
// ... etc
]),
credentials: 'include'
});
// Returns: 204 No Content
// But when fetching fresh data:
await fetch('/api/v1/courses/566/outcome_rollups?include[]=outcomes')
.then(r => r.json());
// Returns outcomes in ORIGINAL order, not the new order, order is also not changed on screen.
Questions:
- Is this a known issue with the
assign_outcome_order API endpoint? - Is there a feature flag or setting required to enable persistent outcome ordering?
- Is there an alternative API or method to programmatically set outcome column order that actually persists?
Context:
According to the API documentation, the endpoint is supposed to "save the ordering of outcomes in LMGB for a user", but this doesn't appear to be working.
Related Discussions: