github.com/google/go-github/v57@v57.0.0/github/actions_permissions_enterprise.go (about) 1 // Copyright 2023 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 // ActionsEnabledOnEnterpriseRepos represents all the repositories in an enterprise for which Actions is enabled. 14 type ActionsEnabledOnEnterpriseRepos struct { 15 TotalCount int `json:"total_count"` 16 Organizations []*Organization `json:"organizations"` 17 } 18 19 // ActionsPermissionsEnterprise represents a policy for allowed actions in an enterprise. 20 // 21 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions 22 type ActionsPermissionsEnterprise struct { 23 EnabledOrganizations *string `json:"enabled_organizations,omitempty"` 24 AllowedActions *string `json:"allowed_actions,omitempty"` 25 SelectedActionsURL *string `json:"selected_actions_url,omitempty"` 26 } 27 28 func (a ActionsPermissionsEnterprise) String() string { 29 return Stringify(a) 30 } 31 32 // GetActionsPermissionsInEnterprise gets the GitHub Actions permissions policy for an enterprise. 33 // 34 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-github-actions-permissions-for-an-enterprise 35 // 36 //meta:operation GET /enterprises/{enterprise}/actions/permissions 37 func (s *ActionsService) GetActionsPermissionsInEnterprise(ctx context.Context, enterprise string) (*ActionsPermissionsEnterprise, *Response, error) { 38 u := fmt.Sprintf("enterprises/%v/actions/permissions", enterprise) 39 40 req, err := s.client.NewRequest("GET", u, nil) 41 if err != nil { 42 return nil, nil, err 43 } 44 45 permissions := new(ActionsPermissionsEnterprise) 46 resp, err := s.client.Do(ctx, req, permissions) 47 if err != nil { 48 return nil, resp, err 49 } 50 51 return permissions, resp, nil 52 } 53 54 // EditActionsPermissionsInEnterprise sets the permissions policy in an enterprise. 55 // 56 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-github-actions-permissions-for-an-enterprise 57 // 58 //meta:operation PUT /enterprises/{enterprise}/actions/permissions 59 func (s *ActionsService) EditActionsPermissionsInEnterprise(ctx context.Context, enterprise string, actionsPermissionsEnterprise ActionsPermissionsEnterprise) (*ActionsPermissionsEnterprise, *Response, error) { 60 u := fmt.Sprintf("enterprises/%v/actions/permissions", enterprise) 61 req, err := s.client.NewRequest("PUT", u, actionsPermissionsEnterprise) 62 if err != nil { 63 return nil, nil, err 64 } 65 66 p := new(ActionsPermissionsEnterprise) 67 resp, err := s.client.Do(ctx, req, p) 68 if err != nil { 69 return nil, resp, err 70 } 71 72 return p, resp, nil 73 } 74 75 // ListEnabledOrgsInEnterprise lists the selected organizations that are enabled for GitHub Actions in an enterprise. 76 // 77 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#list-selected-organizations-enabled-for-github-actions-in-an-enterprise 78 // 79 //meta:operation GET /enterprises/{enterprise}/actions/permissions/organizations 80 func (s *ActionsService) ListEnabledOrgsInEnterprise(ctx context.Context, owner string, opts *ListOptions) (*ActionsEnabledOnEnterpriseRepos, *Response, error) { 81 u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations", owner) 82 u, err := addOptions(u, opts) 83 if err != nil { 84 return nil, nil, err 85 } 86 87 req, err := s.client.NewRequest("GET", u, nil) 88 if err != nil { 89 return nil, nil, err 90 } 91 92 orgs := &ActionsEnabledOnEnterpriseRepos{} 93 resp, err := s.client.Do(ctx, req, orgs) 94 if err != nil { 95 return nil, resp, err 96 } 97 98 return orgs, resp, nil 99 } 100 101 // SetEnabledOrgsInEnterprise replaces the list of selected organizations that are enabled for GitHub Actions in an enterprise. 102 // 103 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-selected-organizations-enabled-for-github-actions-in-an-enterprise 104 // 105 //meta:operation PUT /enterprises/{enterprise}/actions/permissions/organizations 106 func (s *ActionsService) SetEnabledOrgsInEnterprise(ctx context.Context, owner string, organizationIDs []int64) (*Response, error) { 107 u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations", owner) 108 109 req, err := s.client.NewRequest("PUT", u, struct { 110 IDs []int64 `json:"selected_organization_ids"` 111 }{IDs: organizationIDs}) 112 if err != nil { 113 return nil, err 114 } 115 116 resp, err := s.client.Do(ctx, req, nil) 117 if err != nil { 118 return resp, err 119 } 120 121 return resp, nil 122 } 123 124 // AddEnabledOrgInEnterprise adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. 125 // 126 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#enable-a-selected-organization-for-github-actions-in-an-enterprise 127 // 128 //meta:operation PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id} 129 func (s *ActionsService) AddEnabledOrgInEnterprise(ctx context.Context, owner string, organizationID int64) (*Response, error) { 130 u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations/%v", owner, organizationID) 131 132 req, err := s.client.NewRequest("PUT", u, nil) 133 if err != nil { 134 return nil, err 135 } 136 137 resp, err := s.client.Do(ctx, req, nil) 138 if err != nil { 139 return resp, err 140 } 141 142 return resp, nil 143 } 144 145 // RemoveEnabledOrgInEnterprise removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. 146 // 147 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#disable-a-selected-organization-for-github-actions-in-an-enterprise 148 // 149 //meta:operation DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id} 150 func (s *ActionsService) RemoveEnabledOrgInEnterprise(ctx context.Context, owner string, organizationID int64) (*Response, error) { 151 u := fmt.Sprintf("enterprises/%v/actions/permissions/organizations/%v", owner, organizationID) 152 153 req, err := s.client.NewRequest("DELETE", u, nil) 154 if err != nil { 155 return nil, err 156 } 157 158 resp, err := s.client.Do(ctx, req, nil) 159 if err != nil { 160 return resp, err 161 } 162 163 return resp, nil 164 } 165 166 // GetActionsAllowedInEnterprise gets the actions that are allowed in an enterprise. 167 // 168 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-enterprise 169 // 170 //meta:operation GET /enterprises/{enterprise}/actions/permissions/selected-actions 171 func (s *ActionsService) GetActionsAllowedInEnterprise(ctx context.Context, enterprise string) (*ActionsAllowed, *Response, error) { 172 u := fmt.Sprintf("enterprises/%v/actions/permissions/selected-actions", enterprise) 173 174 req, err := s.client.NewRequest("GET", u, nil) 175 if err != nil { 176 return nil, nil, err 177 } 178 179 actionsAllowed := new(ActionsAllowed) 180 resp, err := s.client.Do(ctx, req, actionsAllowed) 181 if err != nil { 182 return nil, resp, err 183 } 184 185 return actionsAllowed, resp, nil 186 } 187 188 // EditActionsAllowedInEnterprise sets the actions that are allowed in an enterprise. 189 // 190 // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-an-enterprise 191 // 192 //meta:operation PUT /enterprises/{enterprise}/actions/permissions/selected-actions 193 func (s *ActionsService) EditActionsAllowedInEnterprise(ctx context.Context, enterprise string, actionsAllowed ActionsAllowed) (*ActionsAllowed, *Response, error) { 194 u := fmt.Sprintf("enterprises/%v/actions/permissions/selected-actions", enterprise) 195 req, err := s.client.NewRequest("PUT", u, actionsAllowed) 196 if err != nil { 197 return nil, nil, err 198 } 199 200 p := new(ActionsAllowed) 201 resp, err := s.client.Do(ctx, req, p) 202 if err != nil { 203 return nil, resp, err 204 } 205 206 return p, resp, nil 207 }