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  }