Add active parameter to the Groups REST API
What does this MR do and why?
Adds active parameter for the Groups REST API which filters the following:
- When
nil, no filter is applied. - When
true, only return groups that are not archived nor marked for deletion. - When
false, only return groups that are archived or marked for deletion.
Query Plans
GET /groups (baseline, not affected by changes)
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118535
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118536
GET /groups?active=true
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118486
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118487
GET /groups?active=false
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118526
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118527
GET /groups/:id/subgroups?active=true
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118498
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118499
GET /groups/:id/subgroups?active=false
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118520
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118521
GET /groups/:id/descendant_groups?active=true
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118511
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118512
GET /groups/:id/descendant_groups?active=false
- Cold: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118532
- Warm: https://console.postgres.ai/gitlab/gitlab-production-main/sessions/38538/commands/118533
References
- Closes #525632 (closed)
- Closes #526206 (closed)
Screenshots or screen recordings
N/A
How to set up and validate locally
- Enable EE license in your instance.
- Mark a group for adjourned deletion in
Group>Settings>General>Advanced - Mark a group for archive with
Group.find(...).archive! - Call the following HTTP requests to the REST API
curl -X GET "http://localhost:3000/api/v4/groups?active=<param>" -H "Authorization: Bearer YOUR_ACCESS_TOKEN"curl -X GET "http://localhost:3000/api/v4/groups/:id/subgroups?active=<param>" -H "Authorization: Bearer YOUR_ACCESS_TOKEN"curl -X GET "http://localhost:3000/api/v4/groups/:id/descendant_groups?active=<param>" -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Shane Maglangit