github.com/google/go-github/v64@v64.0.0/github/actions_permissions_orgs.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 // ActionsPermissions represents a policy for repositories and allowed actions in an organization. 14 // 15 // GitHub API docs: https://docs.github.com/rest/actions/permissions 16 type ActionsPermissions struct { 17 EnabledRepositories *string `json:"enabled_repositories,omitempty"` 18 AllowedActions *string `json:"allowed_actions,omitempty"` 19 SelectedActionsURL *string `json:"selected_actions_url,omitempty"` 20 } 21 22 func (a ActionsPermissions) String() string { 23 return Stringify(a) 24 } 25 26 // ActionsEnabledOnOrgRepos represents all the repositories in an organization for which Actions is enabled. 27 type ActionsEnabledOnOrgRepos struct { 28 TotalCount int `json:"total_count"` 29 Repositories []*Repository `json:"repositories"` 30 } 31 32 // ActionsAllowed represents selected actions that are allowed. 33 // 34 // GitHub API docs: https://docs.github.com/rest/actions/permissions 35 type ActionsAllowed struct { 36 GithubOwnedAllowed *bool `json:"github_owned_allowed,omitempty"` 37 VerifiedAllowed *bool `json:"verified_allowed,omitempty"` 38 PatternsAllowed []string `json:"patterns_allowed,omitempty"` 39 } 40 41 func (a ActionsAllowed) String() string { 42 return Stringify(a) 43 } 44 45 // DefaultWorkflowPermissionOrganization represents the default permissions for GitHub Actions workflows for an organization. 46 // 47 // GitHub API docs: https://docs.github.com/rest/actions/permissions 48 type DefaultWorkflowPermissionOrganization struct { 49 DefaultWorkflowPermissions *string `json:"default_workflow_permissions,omitempty"` 50 CanApprovePullRequestReviews *bool `json:"can_approve_pull_request_reviews,omitempty"` 51 } 52 53 // GetActionsPermissions gets the GitHub Actions permissions policy for repositories and allowed actions in an organization. 54 // 55 // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-github-actions-permissions-for-an-organization 56 // 57 //meta:operation GET /orgs/{org}/actions/permissions 58 func (s *ActionsService) GetActionsPermissions(ctx context.Context, org string) (*ActionsPermissions, *Response, error) { 59 u := fmt.Sprintf("orgs/%v/actions/permissions", org) 60 61 req, err := s.client.NewRequest("GET", u, nil) 62 if err != nil { 63 return nil, nil, err 64 } 65 66 permissions := new(ActionsPermissions) 67 resp, err := s.client.Do(ctx, req, permissions) 68 if err != nil { 69 return nil, resp, err 70 } 71 72 return permissions, resp, nil 73 } 74 75 // EditActionsPermissions sets the permissions policy for repositories and allowed actions in an organization. 76 // 77 // GitHub API docs: https://docs.github.com/rest/actions/permissions#set-github-actions-permissions-for-an-organization 78 // 79 //meta:operation PUT /orgs/{org}/actions/permissions 80 func (s *ActionsService) EditActionsPermissions(ctx context.Context, org string, actionsPermissions ActionsPermissions) (*ActionsPermissions, *Response, error) { 81 u := fmt.Sprintf("orgs/%v/actions/permissions", org) 82 req, err := s.client.NewRequest("PUT", u, actionsPermissions) 83 if err != nil { 84 return nil, nil, err 85 } 86 87 p := new(ActionsPermissions) 88 resp, err := s.client.Do(ctx, req, p) 89 if err != nil { 90 return nil, resp, err 91 } 92 93 return p, resp, nil 94 } 95 96 // ListEnabledReposInOrg lists the selected repositories that are enabled for GitHub Actions in an organization. 97 // 98 // GitHub API docs: https://docs.github.com/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization 99 // 100 //meta:operation GET /orgs/{org}/actions/permissions/repositories 101 func (s *ActionsService) ListEnabledReposInOrg(ctx context.Context, owner string, opts *ListOptions) (*ActionsEnabledOnOrgRepos, *Response, error) { 102 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner) 103 u, err := addOptions(u, opts) 104 if err != nil { 105 return nil, nil, err 106 } 107 108 req, err := s.client.NewRequest("GET", u, nil) 109 if err != nil { 110 return nil, nil, err 111 } 112 113 repos := &ActionsEnabledOnOrgRepos{} 114 resp, err := s.client.Do(ctx, req, repos) 115 if err != nil { 116 return nil, resp, err 117 } 118 119 return repos, resp, nil 120 } 121 122 // SetEnabledReposInOrg replaces the list of selected repositories that are enabled for GitHub Actions in an organization.. 123 // 124 // GitHub API docs: https://docs.github.com/rest/actions/permissions#set-selected-repositories-enabled-for-github-actions-in-an-organization 125 // 126 //meta:operation PUT /orgs/{org}/actions/permissions/repositories 127 func (s *ActionsService) SetEnabledReposInOrg(ctx context.Context, owner string, repositoryIDs []int64) (*Response, error) { 128 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories", owner) 129 130 req, err := s.client.NewRequest("PUT", u, struct { 131 IDs []int64 `json:"selected_repository_ids"` 132 }{IDs: repositoryIDs}) 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 // AddEnabledReposInOrg adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. 146 // 147 // GitHub API docs: https://docs.github.com/rest/actions/permissions#enable-a-selected-repository-for-github-actions-in-an-organization 148 // 149 //meta:operation PUT /orgs/{org}/actions/permissions/repositories/{repository_id} 150 func (s *ActionsService) AddEnabledReposInOrg(ctx context.Context, owner string, repositoryID int64) (*Response, error) { 151 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories/%v", owner, repositoryID) 152 153 req, err := s.client.NewRequest("PUT", 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 // RemoveEnabledReposInOrg removes a single repository from the list of enabled repos for GitHub Actions in an organization. 167 // 168 // GitHub API docs: https://docs.github.com/rest/actions/permissions#disable-a-selected-repository-for-github-actions-in-an-organization 169 // 170 //meta:operation DELETE /orgs/{org}/actions/permissions/repositories/{repository_id} 171 func (s *ActionsService) RemoveEnabledReposInOrg(ctx context.Context, owner string, repositoryID int64) (*Response, error) { 172 u := fmt.Sprintf("orgs/%v/actions/permissions/repositories/%v", owner, repositoryID) 173 174 req, err := s.client.NewRequest("DELETE", u, nil) 175 if err != nil { 176 return nil, err 177 } 178 179 resp, err := s.client.Do(ctx, req, nil) 180 if err != nil { 181 return resp, err 182 } 183 184 return resp, nil 185 } 186 187 // GetActionsAllowed gets the actions that are allowed in an organization. 188 // 189 // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization 190 // 191 //meta:operation GET /orgs/{org}/actions/permissions/selected-actions 192 func (s *ActionsService) GetActionsAllowed(ctx context.Context, org string) (*ActionsAllowed, *Response, error) { 193 u := fmt.Sprintf("orgs/%v/actions/permissions/selected-actions", org) 194 195 req, err := s.client.NewRequest("GET", u, nil) 196 if err != nil { 197 return nil, nil, err 198 } 199 200 actionsAllowed := new(ActionsAllowed) 201 resp, err := s.client.Do(ctx, req, actionsAllowed) 202 if err != nil { 203 return nil, resp, err 204 } 205 206 return actionsAllowed, resp, nil 207 } 208 209 // EditActionsAllowed sets the actions that are allowed in an organization. 210 // 211 // GitHub API docs: https://docs.github.com/rest/actions/permissions#set-allowed-actions-and-reusable-workflows-for-an-organization 212 // 213 //meta:operation PUT /orgs/{org}/actions/permissions/selected-actions 214 func (s *ActionsService) EditActionsAllowed(ctx context.Context, org string, actionsAllowed ActionsAllowed) (*ActionsAllowed, *Response, error) { 215 u := fmt.Sprintf("orgs/%v/actions/permissions/selected-actions", org) 216 req, err := s.client.NewRequest("PUT", u, actionsAllowed) 217 if err != nil { 218 return nil, nil, err 219 } 220 221 p := new(ActionsAllowed) 222 resp, err := s.client.Do(ctx, req, p) 223 if err != nil { 224 return nil, resp, err 225 } 226 227 return p, resp, nil 228 } 229 230 // GetDefaultWorkflowPermissionsInOrganization gets the GitHub Actions default workflow permissions for an organization. 231 // 232 // GitHub API docs: https://docs.github.com/rest/actions/permissions#get-default-workflow-permissions-for-an-organization 233 // 234 //meta:operation GET /orgs/{org}/actions/permissions/workflow 235 func (s *ActionsService) GetDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string) (*DefaultWorkflowPermissionOrganization, *Response, error) { 236 u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org) 237 238 req, err := s.client.NewRequest("GET", u, nil) 239 if err != nil { 240 return nil, nil, err 241 } 242 243 permissions := new(DefaultWorkflowPermissionOrganization) 244 resp, err := s.client.Do(ctx, req, permissions) 245 if err != nil { 246 return nil, resp, err 247 } 248 249 return permissions, resp, nil 250 } 251 252 // EditDefaultWorkflowPermissionsInOrganization sets the GitHub Actions default workflow permissions for an organization. 253 // 254 // GitHub API docs: https://docs.github.com/rest/actions/permissions#set-default-workflow-permissions-for-an-organization 255 // 256 //meta:operation PUT /orgs/{org}/actions/permissions/workflow 257 func (s *ActionsService) EditDefaultWorkflowPermissionsInOrganization(ctx context.Context, org string, permissions DefaultWorkflowPermissionOrganization) (*DefaultWorkflowPermissionOrganization, *Response, error) { 258 u := fmt.Sprintf("orgs/%v/actions/permissions/workflow", org) 259 req, err := s.client.NewRequest("PUT", u, permissions) 260 if err != nil { 261 return nil, nil, err 262 } 263 264 p := new(DefaultWorkflowPermissionOrganization) 265 resp, err := s.client.Do(ctx, req, p) 266 if err != nil { 267 return nil, resp, err 268 } 269 270 return p, resp, nil 271 }