summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2019-08-27 08:53:09 +0000
committerSean McGivern <sean@gitlab.com>2019-08-27 08:53:09 +0000
commita390f5ff052cfb9d214acbf1f4e78a830ba0e67b (patch)
treeca4dae64930e94f0b799700f3d98afa3303265c3 /lib/api
parent1c983571894355e6087b4c95b445e25d30e4ad3a (diff)
parent1819dbd4d1c06489325f4223222b499a59b78e37 (diff)
downloadgitlab-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.rb25
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