Skip to content

Commit f686a32

Browse files
ethantkoeniglunny
authored andcommitted
API endpoints for organization teams (#370)
1 parent c463b1b commit f686a32

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

Diff for: routers/api/v1/admin/org_team.go

+25
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,31 @@ func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
3333
ctx.JSON(201, convert.ToTeam(team))
3434
}
3535

36+
// EditTeam api for edit a team
37+
func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
38+
team := &models.Team{
39+
ID: ctx.Org.Team.ID,
40+
OrgID: ctx.Org.Team.OrgID,
41+
Name: form.Name,
42+
Description: form.Description,
43+
Authorize: models.ParseAccessMode(form.Permission),
44+
}
45+
if err := models.UpdateTeam(team, true); err != nil {
46+
ctx.Error(500, "EditTeam", err)
47+
return
48+
}
49+
ctx.JSON(200, convert.ToTeam(team))
50+
}
51+
52+
// DeleteTeam api for delete a team
53+
func DeleteTeam(ctx *context.APIContext) {
54+
if err := models.DeleteTeam(ctx.Org.Team); err != nil {
55+
ctx.Error(500, "DeleteTeam", err)
56+
return
57+
}
58+
ctx.Status(204)
59+
}
60+
3661
// AddTeamMember api for add a member to a team
3762
func AddTeamMember(ctx *context.APIContext) {
3863
u := user.GetUserByParams(ctx)

Diff for: routers/api/v1/api.go

+7
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,11 @@ func RegisterRoutes(m *macaron.Macaron) {
357357
Delete(org.DeleteHook)
358358
})
359359
}, orgAssignment(true))
360+
m.Group("/teams/:teamid", func() {
361+
m.Get("", org.GetTeam)
362+
m.Get("/members", org.GetTeamMembers)
363+
m.Get("/repos", org.GetTeamRepos)
364+
}, orgAssignment(false, true))
360365

361366
m.Any("/*", func(ctx *context.Context) {
362367
ctx.Error(404)
@@ -382,6 +387,8 @@ func RegisterRoutes(m *macaron.Macaron) {
382387
})
383388
m.Group("/teams", func() {
384389
m.Group("/:teamid", func() {
390+
m.Combo("").Patch(bind(api.EditTeamOption{}), admin.EditTeam).
391+
Delete(admin.DeleteTeam)
385392
m.Combo("/members/:username").Put(admin.AddTeamMember).Delete(admin.RemoveTeamMember)
386393
m.Combo("/repos/:reponame").Put(admin.AddTeamRepository).Delete(admin.RemoveTeamRepository)
387394
}, orgAssignment(false, true))

Diff for: routers/api/v1/org/team.go

+38
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package org
77
import (
88
api "code.gitea.io/sdk/gitea"
99

10+
"code.gitea.io/gitea/models"
1011
"code.gitea.io/gitea/modules/context"
1112
"code.gitea.io/gitea/routers/api/v1/convert"
1213
)
@@ -25,3 +26,40 @@ func ListTeams(ctx *context.APIContext) {
2526
}
2627
ctx.JSON(200, apiTeams)
2728
}
29+
30+
// GetTeam api for get a team
31+
func GetTeam(ctx *context.APIContext) {
32+
ctx.JSON(200, convert.ToTeam(ctx.Org.Team))
33+
}
34+
35+
// GetTeamMembers api for get a team's members
36+
func GetTeamMembers(ctx *context.APIContext) {
37+
team := ctx.Org.Team
38+
if err := team.GetMembers(); err != nil {
39+
ctx.Error(500, "GetTeamMembers", err)
40+
return
41+
}
42+
members := make([]*api.User, len(team.Members))
43+
for i, member := range team.Members {
44+
members[i] = member.APIFormat()
45+
}
46+
ctx.JSON(200, members)
47+
}
48+
49+
// GetTeamRepos api for get a team's repos
50+
func GetTeamRepos(ctx *context.APIContext) {
51+
team := ctx.Org.Team
52+
if err := team.GetRepositories(); err != nil {
53+
ctx.Error(500, "GetTeamRepos", err)
54+
}
55+
repos := make([]*api.Repository, len(team.Repos))
56+
for i, repo := range team.Repos {
57+
access, err := models.AccessLevel(ctx.User, repo)
58+
if err != nil {
59+
ctx.Error(500, "GetTeamRepos", err)
60+
return
61+
}
62+
repos[i] = repo.APIFormat(access)
63+
}
64+
ctx.JSON(200, repos)
65+
}

0 commit comments

Comments
 (0)