Public API for Group Level Reordering Issues
Problem to solve
Our REST API currently supports re-ordering issues within a project. This makes all the group users that want to re-order issues across many projects via public APIs very sad.
Provide a public API for re-ordering issues globally across all subgroups and projects.
issue = if board_group_id IssuesFinder.new(current_user, group_id: board_group_id, include_subgroups: true).find_by(id: id) else project.issues.find(id) end
We actually already accept global issue IDs in the API (not
iids). The problem is that when we query, we scope it to the project if a
group_id is not provided.
When ordering issues in an issue board, we pass in a
group_id to the update service. We could do the same if we create a group-level reorder issues API endpoint.
Change project issue reordering API so that it accepts issues from another group.
We already accept an issue ID (not IID) for
move_after_idin this API so the only thing that would change would be how we find the issue and our validations. We just need to validate that the before / after issues are part of the same scope for ordering.
Note that there's a tricky bug here similar to #13254 (closed). We use
Issue#parent_idsfor determining ordering scope and right now we scope it to the project's parent group when a group board is present. But this is not taking into account that there may be ancestor group boards that may also contain this issue.
So I'm not sure if we should limit this to parent group issues, or allow all group hierarchy issues and maybe just fix this other bug too.
- Public API for global issue re-order across all subgroups and projects within a given top level group.
relative_positionattribute in the issue JSON API responses (#21297 (comment 372766565))