# frozen_string_literal: true module API class MergeTrains < ::Grape::API include PaginationParams before do service_unavailable! unless Feature.enabled?(:merge_trains_api, user_project, default_enabled: true) authorize_read_merge_trains! end params do requires :id, type: String, desc: 'The ID of a project' end resource 'projects/:id', requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do resource :merge_trains do desc 'Get all merge trains of a project' do detail 'This feature was introduced in GitLab 12.9' success EE::API::Entities::MergeTrain end params do optional :scope, type: String, desc: 'The scope of merge trains', values: %w[active complete] optional :sort, type: String, desc: 'Sort by asc (ascending) or desc (descending)', values: %w[asc desc], default: 'desc' use :pagination end get do merge_trains = ::MergeTrainsFinder .new(user_project, current_user, declared_params(include_missing: false)) .execute .preload_api_entities present paginate(merge_trains), with: EE::API::Entities::MergeTrain end end end helpers do def authorize_read_merge_trains! authorize! :read_merge_train, user_project end end end end