github.com/google/go-github/v49@v49.1.0/github/enterprise_code_security_and_analysis.go (about) 1 // Copyright 2022 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 package github 7 8 import ( 9 "context" 10 "fmt" 11 ) 12 13 // EnterpriseSecurityAnalysisSettings represents security analysis settings for an enterprise. 14 type EnterpriseSecurityAnalysisSettings struct { 15 AdvancedSecurityEnabledForNewRepositories *bool `json:"advanced_security_enabled_for_new_repositories,omitempty"` 16 SecretScanningEnabledForNewRepositories *bool `json:"secret_scanning_enabled_for_new_repositories,omitempty"` 17 SecretScanningPushProtectionEnabledForNewRepositories *bool `json:"secret_scanning_push_protection_enabled_for_new_repositories,omitempty"` 18 SecretScanningPushProtectionCustomLink *string `json:"secret_scanning_push_protection_custom_link,omitempty"` 19 } 20 21 // GetCodeSecurityAndAnalysis gets code security and analysis features for an enterprise. 22 // 23 // GitHub API docs: https://docs.github.com/en/rest/enterprise-admin/code-security-and-analysis?apiVersion=2022-11-28#get-code-security-and-analysis-features-for-an-enterprise 24 func (s *EnterpriseService) GetCodeSecurityAndAnalysis(ctx context.Context, enterprise string) (*EnterpriseSecurityAnalysisSettings, *Response, error) { 25 u := fmt.Sprintf("enterprises/%v/code_security_and_analysis", enterprise) 26 27 req, err := s.client.NewRequest("GET", u, nil) 28 if err != nil { 29 return nil, nil, err 30 } 31 32 settings := new(EnterpriseSecurityAnalysisSettings) 33 resp, err := s.client.Do(ctx, req, settings) 34 if err != nil { 35 return nil, resp, err 36 } 37 38 return settings, resp, nil 39 } 40 41 // UpdateCodeSecurityAndAnalysis updates code security and analysis features for new repositories in an enterprise. 42 // 43 // GitHub API docs: https://docs.github.com/en/rest/enterprise-admin/code-security-and-analysis?apiVersion=2022-11-28#update-code-security-and-analysis-features-for-an-enterprise 44 func (s *EnterpriseService) UpdateCodeSecurityAndAnalysis(ctx context.Context, enterprise string, settings *EnterpriseSecurityAnalysisSettings) (*Response, error) { 45 u := fmt.Sprintf("enterprises/%v/code_security_and_analysis", enterprise) 46 req, err := s.client.NewRequest("PATCH", u, settings) 47 if err != nil { 48 return nil, err 49 } 50 51 resp, err := s.client.Do(ctx, req, nil) 52 if err != nil { 53 return resp, err 54 } 55 56 return resp, nil 57 } 58 59 // EnableDisableSecurityFeature enables or disables a security feature for all repositories in an enterprise. 60 // 61 // Valid values for securityProduct: "advanced_security", "secret_scanning", "secret_scanning_push_protection". 62 // Valid values for enablement: "enable_all", "disable_all". 63 // 64 // GitHub API docs: https://docs.github.com/en/enterprise-cloud@latest/rest/enterprise-admin/code-security-and-analysis?apiVersion=2022-11-28#enable-or-disable-a-security-feature 65 func (s *EnterpriseService) EnableDisableSecurityFeature(ctx context.Context, enterprise, securityProduct, enablement string) (*Response, error) { 66 u := fmt.Sprintf("enterprises/%v/%v/%v", enterprise, securityProduct, enablement) 67 req, err := s.client.NewRequest("POST", u, nil) 68 if err != nil { 69 return nil, err 70 } 71 72 resp, err := s.client.Do(ctx, req, nil) 73 if err != nil { 74 return resp, err 75 } 76 77 return resp, nil 78 }