diff options
author | Sean McGivern <sean@gitlab.com> | 2019-08-27 08:53:09 +0000 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2019-08-27 08:53:09 +0000 |
commit | a390f5ff052cfb9d214acbf1f4e78a830ba0e67b (patch) | |
tree | ca4dae64930e94f0b799700f3d98afa3303265c3 /lib/api | |
parent | 1c983571894355e6087b4c95b445e25d30e4ad3a (diff) | |
parent | 1819dbd4d1c06489325f4223222b499a59b78e37 (diff) | |
download | gitlab-ce-a390f5ff052cfb9d214acbf1f4e78a830ba0e67b.tar.gz |
Merge branch '57657-promote-label-to-group-label-via-api-endpoint' into 'master'
Promote Label to Group Label via API endpoint
Closes #57657
See merge request gitlab-org/gitlab-ce!25218
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/labels.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/api/labels.rb b/lib/api/labels.rb index 83d645ca07a..de89e94b0c0 100644 --- a/lib/api/labels.rb +++ b/lib/api/labels.rb @@ -62,6 +62,31 @@ module API delete ':id/labels' do delete_label(user_project) end + + desc 'Promote a label to a group label' do + detail 'This feature was added in GitLab 12.3' + success Entities::GroupLabel + end + params do + requires :name, type: String, desc: 'The name of the label to be promoted' + end + put ':id/labels/promote' do + authorize! :admin_label, user_project + + label = find_label(user_project, params[:name], include_ancestor_groups: false) + + begin + group_label = ::Labels::PromoteService.new(user_project, current_user).execute(label) + + if group_label + present group_label, with: Entities::GroupLabel, current_user: current_user, parent: user_project.group + else + render_api_error!('Failed to promote project label to group label', 400) + end + rescue => error + render_api_error!(error.to_s, 400) + end + end end end end |