diff options
Diffstat (limited to 'lib/api/error_tracking/project_settings.rb')
-rw-r--r-- | lib/api/error_tracking/project_settings.rb | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/api/error_tracking/project_settings.rb b/lib/api/error_tracking/project_settings.rb new file mode 100644 index 00000000000..74432d1eaec --- /dev/null +++ b/lib/api/error_tracking/project_settings.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +module API + class ErrorTracking::ProjectSettings < ::API::Base + before { authenticate! } + + feature_category :error_tracking + + helpers do + def project_setting + @project_setting ||= user_project.error_tracking_setting + end + end + + params do + requires :id, type: String, desc: 'The ID of a project' + end + + resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + before do + authorize! :admin_operations, user_project + + not_found!('Error Tracking Setting') unless project_setting + end + + desc 'Get error tracking settings for the project' do + detail 'This feature was introduced in GitLab 12.7.' + success Entities::ErrorTracking::ProjectSetting + end + + get ':id/error_tracking/settings' do + present project_setting, with: Entities::ErrorTracking::ProjectSetting + end + + desc 'Enable or disable error tracking settings for the project' do + detail 'This feature was introduced in GitLab 12.8.' + success Entities::ErrorTracking::ProjectSetting + end + params do + requires :active, type: Boolean, desc: 'Specifying whether to enable or disable error tracking settings', allow_blank: false + optional :integrated, type: Boolean, desc: 'Specifying whether to enable or disable integrated error tracking' + end + + patch ':id/error_tracking/settings/' do + update_params = { + error_tracking_setting_attributes: { enabled: params[:active] } + } + + unless params[:integrated].nil? + update_params[:error_tracking_setting_attributes][:integrated] = params[:integrated] + end + + result = ::Projects::Operations::UpdateService.new(user_project, current_user, update_params).execute + + if result[:status] == :success + present project_setting, with: Entities::ErrorTracking::ProjectSetting + else + result + end + end + end + end +end |