Container image virtual registry: manage APIs (registries and upstreams)
## :notepad_spiral: Problem statement In virtual registries, we usually have two set of APIs: 1. APIs to manage the virtual registry objects. This issue deals with this part. 1. APIs for the clients, `$ docker`, so that they can pull files through the virtual registry. **NOTE**: - Cache entries API endpoints are in https://gitlab.com/gitlab-org/gitlab/-/issues/569403 - Registry upstreams API endpoints are in https://gitlab.com/gitlab-org/gitlab/-/issues/573284 ## :one: Registries | Route | Notes | | ------ | ------ | | GET /groups/:id/-/virtual_registries/containers/registries | List virtual registries for the given top level group | | POST /groups/:id/-/virtual_registries/containers/registries | Create a new virtual registry | | GET /virtual_registries/containers/registries/:id | Get the details of the virtual registry | | PATCH /virtual_registries/containers/registries/:id | Update a virtual registry | | DELETE /virtual_registries/containers/registries/:id | Delete a virtual registry | ## :two: Upstreams | Route | Notes | | ------ | ------ | | GET /virtual_registries/containers/registries/:id/upstreams | Get the upstreams of a given registry | | POST /virtual_registries/containers/registries/:id/upstreams | Create an upstream for a given registry | | GET /virtual_registries/containers/upstreams/:id | Get the upstream details | | PATCH /virtual_registries/containers/upstreams/:id | Update the upstream details | | DELETE /virtual_registries/containers/upstreams/:id | Delete an upstream | ## :crystal_ball: Other considerations Use a ~"feature flag" ## :tools: Implementation plan * https://gitlab.com/gitlab-org/gitlab/-/issues/548783+s * https://gitlab.com/gitlab-org/gitlab/-/issues/549103+s * https://gitlab.com/gitlab-org/gitlab/-/issues/549104+s * https://gitlab.com/gitlab-org/gitlab/-/issues/549134+s * https://gitlab.com/gitlab-org/gitlab/-/issues/548794+s :point_left: * https://gitlab.com/gitlab-org/gitlab/-/issues/549131+s * https://gitlab.com/gitlab-org/gitlab/-/issues/549136+s * https://gitlab.com/gitlab-org/gitlab/-/issues/549138+s * https://gitlab.com/gitlab-org/gitlab/-/issues/549470+s
issue