From ee59bba5b15e88e36a581e4950828b814bb3c446 Mon Sep 17 00:00:00 2001 From: Maxime Guyot Date: Thu, 20 Sep 2018 13:39:49 +0200 Subject: [PATCH] Add API for merge request templates --- config/routes/project.rb | 4 ++ ee/lib/api/project_merge_requests_template.rb | 47 +++++++++++++++++++ ee/lib/ee/api/entities.rb | 4 ++ 3 files changed, 55 insertions(+) create mode 100644 ee/lib/api/project_merge_requests_template.rb diff --git a/config/routes/project.rb b/config/routes/project.rb index c0c1775f8d37d5..47e29efdad701d 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -119,6 +119,10 @@ delete :approvals, action: :unapprove post :rebase + + get :merge_requests_template + post :merge_requests_template, action: :approve + ## EE-specific post :remove_wip diff --git a/ee/lib/api/project_merge_requests_template.rb b/ee/lib/api/project_merge_requests_template.rb new file mode 100644 index 00000000000000..341c7d021cdf97 --- /dev/null +++ b/ee/lib/api/project_merge_requests_template.rb @@ -0,0 +1,47 @@ +module API + class ProjectMergeRequestsTemplate < Grape::API + before { authenticate! } + before { authorize_admin_project } + #before { check_project_feature_available!(:merge_requests_templates) } + + params do + requires :id, type: String, desc: 'The ID of a project' + end + resource :projects do + helpers do + params :merge_requests_template_params do + optional :description, type: String, desc: 'Default merge request description' + at_least_one_of :description + end + end + + desc 'Get project merge requests template' do + detail 'This feature was introduced in 11.x' + success EE::API::Entities::ProjectMergeRequestsTemplate + end + get ":id/merge_requests_template" do + merge_requests_template = user_project.merge_requests_template + present merge_requests_template, with: EE::API::Entities::ProjectMergeRequestsTemplate + end + + desc 'Update an existing project merge requests template' do + detail 'This feature was introduced in 11.x' + success EE::API::Entities::ProjectMergeRequestsTemplate + end + params do + use :merge_requests_template_params + end + post ":id/merge_requests_template" do + merge_requests_template = user_project.merge_requests_template + not_found!('merge requests template') unless merge_requests_template + + if merge_requests_template.update(declared_params(include_missing: false)) + present merge_requests_template, with: EE::API::Entities::ProjectMergeRequestsTemplate + else + render_validation_error!(merge_requests_template) + end + end + + end + end +end diff --git a/ee/lib/ee/api/entities.rb b/ee/lib/ee/api/entities.rb index c3a635104c868f..c092e2a470cf00 100644 --- a/ee/lib/ee/api/entities.rb +++ b/ee/lib/ee/api/entities.rb @@ -225,6 +225,10 @@ class MergeRequestApprovals < ::API::Entities::ProjectEntity end end + class ProjectMergeRequestsTemplate < Grape::Entity + expose :description + end + class LdapGroup < Grape::Entity expose :cn end -- GitLab