{-# LANGUAGE DataKinds #-}
-- | The GithubOwner teams API as described on
-- .
module Github.Organizations.Teams (
teamsOf,
teamsOf',
teamsOfR,
teamInfoFor,
teamInfoFor',
teamInfoForR,
createTeamFor',
createTeamForR,
editTeam',
editTeamR,
deleteTeam',
deleteTeamR,
teamMembershipInfoFor,
teamMembershipInfoFor',
teamMembershipInfoForR,
addTeamMembershipFor',
addTeamMembershipForR,
deleteTeamMembershipFor',
deleteTeamMembershipForR,
listTeamsCurrent',
listTeamsCurrentR,
module Github.Data,
) where
import Data.Aeson.Compat (encode)
import Data.Vector (Vector)
import Github.Auth
import Github.Data
import Github.Request
-- | List teams. List the teams of an GithubOwner.
-- When authenticated, lists private teams visible to the authenticated user.
-- When unauthenticated, lists only public teams for an GithubOwner.
--
-- > teamsOf' (Just $ GithubOAuth "token") "thoughtbot"
teamsOf' :: Maybe GithubAuth -> Name Organization -> IO (Either Error (Vector SimpleTeam))
teamsOf' auth org =
executeRequestMaybe auth $ teamsOfR org Nothing
-- | List the public teams of an GithubOwner.
--
-- > teamsOf "thoughtbot"
teamsOf :: Name Organization -> IO (Either Error (Vector SimpleTeam))
teamsOf = teamsOf' Nothing
-- | List teams.
-- See
teamsOfR :: Name Organization -> Maybe Count -> GithubRequest k (Vector SimpleTeam)
teamsOfR org = GithubPagedGet ["orgs", toPathPart org, "teams"] []
-- | The information for a single team, by team id.
-- | With authentication
--
-- > teamInfoFor' (Just $ GithubOAuth "token") 1010101
teamInfoFor' :: Maybe GithubAuth -> Id Team -> IO (Either Error Team)
teamInfoFor' auth tid =
executeRequestMaybe auth $ teamInfoForR tid
-- | The information for a single team, by team id.
--
-- > teamInfoFor' (Just $ GithubOAuth "token") 1010101
teamInfoFor :: Id Team -> IO (Either Error Team)
teamInfoFor = teamInfoFor' Nothing
-- | Get team.
-- See
teamInfoForR :: Id Team -> GithubRequest k Team
teamInfoForR tid =
GithubGet ["teams", toPathPart tid] []
-- | Create a team under an GithubOwner
--
-- > createTeamFor' (GithubOAuth "token") "GithubOwner" (CreateTeam "newteamname" "some description" [] PermssionPull)
createTeamFor' :: GithubAuth
-> Name Organization
-> CreateTeam
-> IO (Either Error Team)
createTeamFor' auth org cteam =
executeRequest auth $ createTeamForR org cteam
-- | Create team.
-- See
createTeamForR :: Name Organization -> CreateTeam -> GithubRequest 'True Team
createTeamForR org cteam =
GithubPost Post ["orgs", toPathPart org, "teams"] (encode cteam)
-- | Edit a team, by id.
--
-- > editTeamFor'
editTeam' :: GithubAuth
-> Id Team
-> EditTeam
-> IO (Either Error Team)
editTeam' auth tid eteam =
executeRequest auth $ editTeamR tid eteam
-- | Edit team.
-- See
editTeamR :: Id Team -> EditTeam -> GithubRequest 'True Team
editTeamR tid eteam =
GithubPost Patch ["teams", toPathPart tid] (encode eteam)
-- | Delete a team, by id.
--
-- > deleteTeam' (GithubOAuth "token") 1010101
deleteTeam' :: GithubAuth -> Id Team -> IO (Either Error ())
deleteTeam' auth tid =
executeRequest auth $ deleteTeamR tid
-- | Delete team.
-- See
deleteTeamR :: Id Team -> GithubRequest 'True ()
deleteTeamR tid =
GithubDelete ["teams", toPathPart tid]
-- | Retrieve team mebership information for a user.
-- | With authentication
--
-- > teamMembershipInfoFor' (Just $ GithubOAuth "token") 1010101 "mburns"
teamMembershipInfoFor' :: Maybe GithubAuth -> Id Team -> Name GithubOwner -> IO (Either Error TeamMembership)
teamMembershipInfoFor' auth tid user =
executeRequestMaybe auth $ teamMembershipInfoForR tid user
-- | Get team membership.
-- See Name GithubOwner -> GithubRequest k TeamMembership
teamMembershipInfoForR tid user =
GithubGet ["teams", toPathPart tid, "memberships", toPathPart user] []
-- | Retrieve team mebership information for a user.
--
-- > teamMembershipInfoFor 1010101 "mburns"
teamMembershipInfoFor :: Id Team -> Name GithubOwner -> IO (Either Error TeamMembership)
teamMembershipInfoFor = teamMembershipInfoFor' Nothing
-- | Add (or invite) a member to a team.
--
-- > addTeamMembershipFor' (GithubOAuth "token") 1010101 "mburns" RoleMember
addTeamMembershipFor' :: GithubAuth -> Id Team -> Name GithubOwner -> Role-> IO (Either Error TeamMembership)
addTeamMembershipFor' auth tid user role =
executeRequest auth $ addTeamMembershipForR tid user role
-- | Add team membership.
-- See
addTeamMembershipForR :: Id Team -> Name GithubOwner -> Role -> GithubRequest 'True TeamMembership
addTeamMembershipForR tid user role =
GithubPost Put ["teams", toPathPart tid, "memberships", toPathPart user] (encode $ CreateTeamMembership role)
-- | Delete a member of a team.
--
-- > deleteTeamMembershipFor' (GithubOAuth "token") 1010101 "mburns"
deleteTeamMembershipFor' :: GithubAuth -> Id Team -> Name GithubOwner -> IO (Either Error ())
deleteTeamMembershipFor' auth tid user =
executeRequest auth $ deleteTeamMembershipForR tid user
-- | Remove team membership.
-- See
deleteTeamMembershipForR :: Id Team -> Name GithubOwner -> GithubRequest 'True ()
deleteTeamMembershipForR tid user =
GithubDelete ["teams", toPathPart tid, "memberships", toPathPart user]
-- | List teams for current authenticated user
--
-- > listTeamsCurrent' (GithubOAuth "token")
listTeamsCurrent' :: GithubAuth -> IO (Either Error (Vector Team))
listTeamsCurrent' auth = executeRequest auth $ listTeamsCurrentR Nothing
-- | List user teams.
-- See
listTeamsCurrentR :: Maybe Count -> GithubRequest 'True (Vector Team)
listTeamsCurrentR = GithubPagedGet ["user", "teams"] []