debian-mirror-gitlab/lib/api/project_milestones.rb

119 lines
3.4 KiB
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2017-09-10 17:25:29 +05:30
module API
class ProjectMilestones < Grape::API
include PaginationParams
include MilestoneResponses
before do
authenticate!
end
params do
requires :id, type: String, desc: 'The ID of a project'
end
2019-02-15 15:39:39 +05:30
resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
2017-09-10 17:25:29 +05:30
desc 'Get a list of project milestones' do
success Entities::Milestone
end
params do
use :list_params
end
get ":id/milestones" do
authorize! :read_milestone, user_project
list_milestones_for(user_project)
end
desc 'Get a single project milestone' do
success Entities::Milestone
end
params do
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
end
get ":id/milestones/:milestone_id" do
authorize! :read_milestone, user_project
get_milestone_for(user_project)
end
desc 'Create a new project milestone' do
success Entities::Milestone
end
params do
requires :title, type: String, desc: 'The title of the milestone'
use :optional_params
end
post ":id/milestones" do
authorize! :admin_milestone, user_project
create_milestone_for(user_project)
end
desc 'Update an existing project milestone' do
success Entities::Milestone
end
params do
use :update_params
end
put ":id/milestones/:milestone_id" do
authorize! :admin_milestone, user_project
update_milestone_for(user_project)
end
2018-03-17 18:26:18 +05:30
desc 'Remove a project milestone'
delete ":id/milestones/:milestone_id" do
authorize! :admin_milestone, user_project
2018-11-20 20:47:30 +05:30
milestone = user_project.milestones.find(params[:milestone_id])
Milestones::DestroyService.new(user_project, current_user).execute(milestone)
2018-03-17 18:26:18 +05:30
status(204)
end
2017-09-10 17:25:29 +05:30
desc 'Get all issues for a single project milestone' do
success Entities::IssueBasic
end
params do
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
use :pagination
end
get ":id/milestones/:milestone_id/issues" do
authorize! :read_milestone, user_project
milestone_issuables_for(user_project, :issue)
end
desc 'Get all merge requests for a single project milestone' do
detail 'This feature was introduced in GitLab 9.'
success Entities::MergeRequestBasic
end
params do
requires :milestone_id, type: Integer, desc: 'The ID of a project milestone'
use :pagination
end
get ':id/milestones/:milestone_id/merge_requests' do
authorize! :read_milestone, user_project
milestone_issuables_for(user_project, :merge_request)
end
2019-05-18 00:54:41 +05:30
desc 'Promote a milestone to group milestone' do
detail 'This feature was introduced in GitLab 11.9'
end
post ':id/milestones/:milestone_id/promote' do
authorize! :admin_milestone, user_project
authorize! :admin_milestone, user_project.group
milestone = user_project.milestones.find(params[:milestone_id])
Milestones::PromoteService.new(user_project, current_user).execute(milestone)
status(200)
rescue Milestones::PromoteService::PromoteMilestoneError => error
render_api_error!(error.message, 400)
end
2017-09-10 17:25:29 +05:30
end
end
end