Grapify the labels API
Add the Grape-DSL to the labels API. Since the input validation messages are checked, two tests are modified slightly.
## What are the relevant issue numbers?
Related to #22928
See merge request !7070
Grapify builds API
## What does this MR do?
Add the Grape-DSL to the builds API.
## What are the relevant issue numbers?
Related to #22928
The artifacts API directly downloads a file rather then returning a JSON entity.
See merge request !6877
- Pass `developers_and_merge` and `developers_can_push` in `params`
instead of using keyword arguments.
- Refactor a slightly complex boolean check to a simple `nil?` check.
1. Previously, we were not removing existing access levels before
creating new ones. This is not a problem for EE, but _is_ for CE,
since we restrict the number of access levels in CE to 1.
2. The correct approach is:
CE -> delete all access levels before updating a protected branch
EE -> delete developer access levels if "developers_can_{merge,push}" is switched off
3. The dispatch is performed by checking if a "length: 1" validation is
present on the access levels or not.
4. Another source of problems was that we didn't put multiple queries in
a transaction. If the `destroy_all` passes, but the `update` fails,
we should have a rollback.
5. Modifying the API to provide users direct access to CRUD access
levels will make things a lot simpler.
6. Create `create/update` services separately for this API, which
perform the necessary data translation, before calling the regular
`create/update` services. The translation code was getting too large
for the API endpoint itself, so this move makes sense.
Grapify the commit status API
## What does this MR do?
Add the Grape-DSL to the commit status API.
## What are the relevant issue numbers?
Related to #22928
See merge request !6879
Grapify boards API
## What does this MR do?
Add the Grape-DSL to the boards API.
## What are the relevant issue numbers?
Related to #22928
See merge request !6876
Grapify todos API
## What does this MR do?
Add the Grape-DSL to the todos API.
## What are the relevant issue numbers?
Related to #22928
See merge request !6875
Grapify system hooks API
## What does this MR do?
Add the Grape-DSL to the system-hook API.
## What are the relevant issue numbers?
Related to #22928
See merge request !6861
API: Version information
## What does this MR do?
Adds a new endpoint to retrieve the version information.
## Why was this MR needed?
Clients can now use this information to enable/disable certain API features depending on the version.
## What are the relevant issue numbers?
Closes#22608, https://gitlab.com/gitlab-org/gitlab-ce/issues/23148
See merge request !6822
Resolve "Move `/licenses` api endpoint to `/templates/licenses`"
## What does this MR do?
It moves the `/licenses`, `/gitignores` and `/gitlab_ci_ymls` API endpoints under the `/templates` namespace
## Why was this MR needed?
In EE we now have somewhat ambiguous API endpoints. `/license` refers to the EE license while `/licenses` (plural) refers to license templates. @DouweM mentioned that we're adding .gitignore templates in #14106 so it may make sense to add a /templates namespace. Then, move the /license templates endpoint to be underneath, along with .gitignore endpoints.
Closes#17541
See merge request !5717
API: New /users/:id/events endpoint
## What does this MR do?
If add a new `/users/:id/events` endpoint to retrieve a user's contribution events. The events returned are filtered so that only the events for projects that the current user can see are returned (similarly to what we do at the controller level).
## Why was this MR needed?
Because it's a nice feature to calculate leaderboards, for instance for #17815.
## What are the relevant issue numbers?
Closes#20866.
See merge request !6771
The /licenses, /gitignores and /gitlab_ci_ymls endpoints are now also
available under a new /templates namespace. Old endpoints will be
deprecated when GitLab 9.0.0 is released.
API: Share projects only with groups current_user can access
Aims to address the issues here: https://gitlab.com/gitlab-org/gitlab-ce/issues/23004
* Projects can be shared with non-existent groups
* Projects can be shared with groups that the current user does not have access to read
Concerns:
The new implementation of the API endpoint allows projects to be shared with a larger range of groups than can be done via the web UI.
The form for sharing a project with a group uses the following API endpoint to index the available groups: 494269fc92/lib/api/groups.rb (L17). The groups indexed in the web form will only be those groups that the user is currently a member of.
The new implementation allows projects to be shared with any group that the authenticated user has access to view. This widens the range of groups to those that are public and internal.
See merge request !2005
Signed-off-by: Rémy Coutable <remy@rymai.me>
Memoize Github::Shell's secret token
## What does this MR do?
`API::Helpers#secret_token` was reading the secret file on every invocation. This MR reads the file in the `gitlab_shell_secret_token.rb` initializer and saves it as a class variable at `Gitlab::Shell.secret_token`
## Are there points in the code the reviewer needs to double check?
- I'm not sure if the use of `cattr_accessor` is the best approach, or if should be moved into the `class << self` block?
- Should `API::Helpers#secret_token` be removed in favor of using `Gitlab::Shell.secret_token`?
## Why was this MR needed?
Performance optimization.
Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/22510
See merge request !6599
Add visible projects API
## What does this MR do?
Add a new `/projects/visible` API endpoint. Originally created by @ben.boeckel in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5970.
## Are there points in the code the reviewer needs to double check?
Does the API make sense?
## Why was this MR needed?
The `/projects` endpoint only returned projects the user was explicitly a member of.
Closes#19361, #3119.
See merge request !6681