Filter/Search Dependency List (Project / Group / JSON API / GraphQL API)
When we initially built the dependency list we were able to build out filtering and searching at the **group** level in a short time frame as the backend functionality was readily available (already reading from the SBOM tables). At that time, the **project** level was still reading from pipeline artifacts. This meant that filtering and searching would need to be done client side. We decided not to do this as it would introduce tech debt. Both the **group** and **project** dependency lists now run from SBOM data, so feature parity between **group** and **project** is now available. ### Feature comparison <table> <tr> <th>Functionality</th> <th>Dimension</th> <th>Group</th> <th>Project</th> <th>JSON API</th> <th>GraphQL API</th> </tr> <tr> <td rowspan="4">Sorting</td> <td>Licence</td> <td> :large_green_circle: </td> <td> :large_green_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493788 </td> <td> :large_orange_diamond: (/licenses not available at project level) https://gitlab.com/gitlab-org/gitlab/-/issues/493771 </td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493777 </td> </tr> <tr> <td>Packager</td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> </tr> <tr> <td>Severity</td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> </tr> <tr> <td>Component Name</td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> <td> :large_green_circle: </td> </tr> <tr> <td>Filtering</td> <td>License</td> <td> :large_green_circle: </td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493773 </td> <td> :large_orange_diamond: (/licenses not available at project level) https://gitlab.com/gitlab-org/gitlab/-/issues/493771 </td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493777 </td> </tr> <tr> <td></td> <td>Packager</td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493774 </td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493774 </td> <td> :red_circle: </td> <td> :large_green_circle: </td> </tr> <tr> <td></td> <td>Project</td> <td> :large_green_circle: </td> <td>N/A</td> <td> :large_green_circle: </td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/493789 </td> </tr> <tr> <td></td> <td>Component Name</td> <td> :large_green_circle: </td> <td> :large_green_circle: https://gitlab.com/groups/gitlab-org/-/epics/16490 </td> <td> :large_orange_diamond: (Not available at project level) https://gitlab.com/gitlab-org/gitlab/-/issues/493775 </td> <td> :large_orange_diamond: (Not available at project level) https://gitlab.com/gitlab-org/gitlab/-/issues/493775 </td> </tr> <tr> <td></td> <td>Severity</td> <td> :red_circle: https://gitlab.com/groups/gitlab-org/-/epics/12653 </td> <td> :red_circle: https://gitlab.com/groups/gitlab-org/-/epics/12653 </td> <td> :red_circle: https://gitlab.com/groups/gitlab-org/-/epics/12653 </td> <td> :red_circle: https://gitlab.com/groups/gitlab-org/-/epics/12653 </td> </tr> <tr> <td></td> <td>Version</td> <td> :red_circle:https://gitlab.com/groups/gitlab-org/-/epics/16431 </td> <td> :red_circle:https://gitlab.com/groups/gitlab-org/-/epics/16431 </td> <td> :red_circle: </td> <td> :red_circle: </td> </tr> <tr> <td>Filtering</td> <td>Query string support</td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/523906 </td> <td> :red_circle: https://gitlab.com/gitlab-org/gitlab/-/issues/523906 </td> <td></td> <td></td> </tr> </table> ### Technical Debt 1. :white_check_mark: https://gitlab.com/groups/gitlab-org/-/epics/17253+ 2. https://gitlab.com/groups/gitlab-org/-/epics/17254+ 3. https://gitlab.com/gitlab-org/gitlab/-/issues/514535+
epic