Skip to content

Commit 59f33d9

Browse files
feat: Add support for Enterprise Team Organizations APIs (#3876)
1 parent c392e6f commit 59f33d9

2 files changed

Lines changed: 402 additions & 0 deletions

File tree

github/enterprise_team.go

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,138 @@ func (s *EnterpriseService) RemoveTeamMember(ctx context.Context, enterprise, en
283283

284284
return resp, nil
285285
}
286+
287+
// ListAssignments gets all organizations assigned to an enterprise team.
288+
//
289+
// GitHub API docs: https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#get-organization-assignments
290+
//
291+
//meta:operation GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations
292+
func (s *EnterpriseService) ListAssignments(ctx context.Context, enterprise, enterpriseTeam string, opt *ListOptions) ([]*Organization, *Response, error) {
293+
u := fmt.Sprintf("enterprises/%v/teams/%v/organizations", enterprise, enterpriseTeam)
294+
u, err := addOptions(u, opt)
295+
if err != nil {
296+
return nil, nil, err
297+
}
298+
299+
req, err := s.client.NewRequest("GET", u, nil)
300+
if err != nil {
301+
return nil, nil, err
302+
}
303+
304+
var orgs []*Organization
305+
resp, err := s.client.Do(ctx, req, &orgs)
306+
if err != nil {
307+
return nil, resp, err
308+
}
309+
310+
return orgs, resp, nil
311+
}
312+
313+
// AddMultipleAssignments assigns an enterprise team to multiple organizations.
314+
//
315+
// GitHub API docs: https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#add-organization-assignments
316+
//
317+
//meta:operation POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add
318+
func (s *EnterpriseService) AddMultipleAssignments(ctx context.Context, enterprise, enterpriseTeam string, organizationSlugs []string) ([]*Organization, *Response, error) {
319+
u := fmt.Sprintf("enterprises/%v/teams/%v/organizations/add", enterprise, enterpriseTeam)
320+
321+
req, err := s.client.NewRequest("POST", u, map[string][]string{"organization_slugs": organizationSlugs})
322+
if err != nil {
323+
return nil, nil, err
324+
}
325+
326+
var orgs []*Organization
327+
resp, err := s.client.Do(ctx, req, &orgs)
328+
if err != nil {
329+
return nil, resp, err
330+
}
331+
332+
return orgs, resp, nil
333+
}
334+
335+
// RemoveMultipleAssignments unassigns an enterprise team from multiple organizations.
336+
//
337+
// GitHub API docs: https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#remove-organization-assignments
338+
//
339+
//meta:operation POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove
340+
func (s *EnterpriseService) RemoveMultipleAssignments(ctx context.Context, enterprise, enterpriseTeam string, organizationSlugs []string) ([]*Organization, *Response, error) {
341+
u := fmt.Sprintf("enterprises/%v/teams/%v/organizations/remove", enterprise, enterpriseTeam)
342+
343+
req, err := s.client.NewRequest("POST", u, map[string][]string{"organization_slugs": organizationSlugs})
344+
if err != nil {
345+
return nil, nil, err
346+
}
347+
348+
var orgs []*Organization
349+
resp, err := s.client.Do(ctx, req, &orgs)
350+
if err != nil {
351+
return nil, resp, err
352+
}
353+
354+
return orgs, resp, nil
355+
}
356+
357+
// GetAssignment checks if an enterprise team is assigned to an organization.
358+
//
359+
// GitHub API docs: https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#get-organization-assignment
360+
//
361+
//meta:operation GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}
362+
func (s *EnterpriseService) GetAssignment(ctx context.Context, enterprise, enterpriseTeam, org string) (*Organization, *Response, error) {
363+
u := fmt.Sprintf("enterprises/%v/teams/%v/organizations/%v", enterprise, enterpriseTeam, org)
364+
365+
req, err := s.client.NewRequest("GET", u, nil)
366+
if err != nil {
367+
return nil, nil, err
368+
}
369+
370+
var organization *Organization
371+
resp, err := s.client.Do(ctx, req, &organization)
372+
if err != nil {
373+
return nil, resp, err
374+
}
375+
376+
return organization, resp, nil
377+
}
378+
379+
// AddAssignment assigns an enterprise team to an organizations.
380+
//
381+
// GitHub API docs: https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#add-an-organization-assignment
382+
//
383+
//meta:operation PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}
384+
func (s *EnterpriseService) AddAssignment(ctx context.Context, enterprise, enterpriseTeam, org string) (*Organization, *Response, error) {
385+
u := fmt.Sprintf("enterprises/%v/teams/%v/organizations/%v", enterprise, enterpriseTeam, org)
386+
387+
req, err := s.client.NewRequest("PUT", u, nil)
388+
if err != nil {
389+
return nil, nil, err
390+
}
391+
392+
var organization *Organization
393+
resp, err := s.client.Do(ctx, req, &organization)
394+
if err != nil {
395+
return nil, resp, err
396+
}
397+
398+
return organization, resp, nil
399+
}
400+
401+
// RemoveAssignment unassigns an enterprise team from an organizations.
402+
//
403+
// GitHub API docs: https://docs.github.com/rest/enterprise-teams/enterprise-team-organizations#delete-an-organization-assignment
404+
//
405+
//meta:operation DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}
406+
func (s *EnterpriseService) RemoveAssignment(ctx context.Context, enterprise, enterpriseTeam, org string) (*Response, error) {
407+
u := fmt.Sprintf("enterprises/%v/teams/%v/organizations/%v", enterprise, enterpriseTeam, org)
408+
409+
req, err := s.client.NewRequest("DELETE", u, nil)
410+
if err != nil {
411+
return nil, err
412+
}
413+
414+
resp, err := s.client.Do(ctx, req, nil)
415+
if err != nil {
416+
return resp, err
417+
}
418+
419+
return resp, nil
420+
}

0 commit comments

Comments
 (0)