github.com/google/go-github/v69@v69.2.0/github/enterprise_rules.go (about) 1 // Copyright 2025 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 // CreateRepositoryRuleset creates a repository ruleset for the specified enterprise. 14 // 15 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#create-an-enterprise-repository-ruleset 16 // 17 //meta:operation POST /enterprises/{enterprise}/rulesets 18 func (s *EnterpriseService) CreateRepositoryRuleset(ctx context.Context, enterprise string, ruleset RepositoryRuleset) (*RepositoryRuleset, *Response, error) { 19 u := fmt.Sprintf("enterprises/%v/rulesets", enterprise) 20 21 req, err := s.client.NewRequest("POST", u, ruleset) 22 if err != nil { 23 return nil, nil, err 24 } 25 26 var rs *RepositoryRuleset 27 resp, err := s.client.Do(ctx, req, &rs) 28 if err != nil { 29 return nil, resp, err 30 } 31 32 return rs, resp, nil 33 } 34 35 // GetRepositoryRuleset gets a repository ruleset for the specified enterprise. 36 // 37 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#get-an-enterprise-repository-ruleset 38 // 39 //meta:operation GET /enterprises/{enterprise}/rulesets/{ruleset_id} 40 func (s *EnterpriseService) GetRepositoryRuleset(ctx context.Context, enterprise string, rulesetID int64) (*RepositoryRuleset, *Response, error) { 41 u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID) 42 43 req, err := s.client.NewRequest("GET", u, nil) 44 if err != nil { 45 return nil, nil, err 46 } 47 48 var ruleset *RepositoryRuleset 49 resp, err := s.client.Do(ctx, req, &ruleset) 50 if err != nil { 51 return nil, resp, err 52 } 53 54 return ruleset, resp, nil 55 } 56 57 // UpdateRepositoryRuleset updates a repository ruleset for the specified enterprise. 58 // 59 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#update-an-enterprise-repository-ruleset 60 // 61 //meta:operation PUT /enterprises/{enterprise}/rulesets/{ruleset_id} 62 func (s *EnterpriseService) UpdateRepositoryRuleset(ctx context.Context, enterprise string, rulesetID int64, ruleset RepositoryRuleset) (*RepositoryRuleset, *Response, error) { 63 u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID) 64 65 req, err := s.client.NewRequest("PUT", u, ruleset) 66 if err != nil { 67 return nil, nil, err 68 } 69 70 var rs *RepositoryRuleset 71 resp, err := s.client.Do(ctx, req, &rs) 72 if err != nil { 73 return nil, resp, err 74 } 75 76 return rs, resp, nil 77 } 78 79 // UpdateRepositoryRulesetClearBypassActor clears the bypass actors for a repository ruleset for the specified enterprise. 80 // 81 // This function is necessary as the UpdateRepositoryRuleset function does not marshal ByPassActor if passed as an empty array. 82 // 83 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#update-an-enterprise-repository-ruleset 84 // 85 //meta:operation PUT /enterprises/{enterprise}/rulesets/{ruleset_id} 86 func (s *EnterpriseService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, enterprise string, rulesetID int64) (*Response, error) { 87 u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID) 88 89 rsClearBypassActor := rulesetClearBypassActors{} 90 91 req, err := s.client.NewRequest("PUT", u, rsClearBypassActor) 92 if err != nil { 93 return nil, err 94 } 95 96 resp, err := s.client.Do(ctx, req, nil) 97 if err != nil { 98 return resp, err 99 } 100 101 return resp, nil 102 } 103 104 // DeleteRepositoryRuleset deletes a repository ruleset from the specified enterprise. 105 // 106 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/rules#delete-an-enterprise-repository-ruleset 107 // 108 //meta:operation DELETE /enterprises/{enterprise}/rulesets/{ruleset_id} 109 func (s *EnterpriseService) DeleteRepositoryRuleset(ctx context.Context, enterprise string, rulesetID int64) (*Response, error) { 110 u := fmt.Sprintf("enterprises/%v/rulesets/%v", enterprise, rulesetID) 111 112 req, err := s.client.NewRequest("DELETE", u, nil) 113 if err != nil { 114 return nil, err 115 } 116 117 return s.client.Do(ctx, req, nil) 118 }