diff --git a/Octokit.Reactive/Clients/IObservableTeamsClient.cs b/Octokit.Reactive/Clients/IObservableTeamsClient.cs
index 67db723d..d11df786 100644
--- a/Octokit.Reactive/Clients/IObservableTeamsClient.cs
+++ b/Octokit.Reactive/Clients/IObservableTeamsClient.cs
@@ -31,6 +31,17 @@ namespace Octokit.Reactive
/// A list of the orgs's teams s.
IObservable GetAll(string org);
+ ///
+ /// Returns all members of the given team.
+ ///
+ /// The team identifier
+ ///
+ /// https://developer.github.com/v3/orgs/teams/#list-team-members
+ ///
+ /// Thrown when a general API error occurs.
+ /// A list of the team's member s.
+ IObservable GetMembers(int id);
+
///
/// Returns newly created for the current org.
///
diff --git a/Octokit.Reactive/Clients/ObservableTeamsClient.cs b/Octokit.Reactive/Clients/ObservableTeamsClient.cs
index b295ac1a..bdbdff8c 100644
--- a/Octokit.Reactive/Clients/ObservableTeamsClient.cs
+++ b/Octokit.Reactive/Clients/ObservableTeamsClient.cs
@@ -51,6 +51,20 @@ namespace Octokit.Reactive
return _connection.GetAndFlattenAllPages(ApiUrls.OrganizationTeams(org));
}
+ ///
+ /// Returns all members of the given team.
+ ///
+ /// The team identifier
+ ///
+ /// https://developer.github.com/v3/orgs/teams/#list-team-members
+ ///
+ /// Thrown when a general API error occurs.
+ /// A list of the team's member s.
+ public IObservable GetMembers(int id)
+ {
+ return _connection.GetAndFlattenAllPages(ApiUrls.TeamMembers(id));
+ }
+
///
/// Returns newly created for the current org.
///
diff --git a/Octokit.Tests.Integration/Clients/TeamsClientTests.cs b/Octokit.Tests.Integration/Clients/TeamsClientTests.cs
index 8e2f8d24..82acd4e3 100644
--- a/Octokit.Tests.Integration/Clients/TeamsClientTests.cs
+++ b/Octokit.Tests.Integration/Clients/TeamsClientTests.cs
@@ -120,4 +120,29 @@ public class TeamsClientTests
Assert.False(isMember);
}
}
+
+ public class TheGetMembersMethod
+ {
+ readonly Team team;
+
+ public TheGetMembersMethod()
+ {
+ var github = new GitHubClient(new ProductHeaderValue("OctokitTests")) { Credentials = Helper.Credentials };
+
+ team = github.Organization.Team.GetAll(Helper.Organization).Result.First();
+ }
+
+ [OrganizationTest]
+ public async Task GetsAllMembersWhenAuthenticated()
+ {
+ var github = new GitHubClient(new ProductHeaderValue("OctokitTests"))
+ {
+ Credentials = Helper.Credentials
+ };
+
+ var members = await github.Organization.Team.GetMembers(team.Id);
+
+ Assert.Contains(Helper.UserName, members.Select(u => u.Login));
+ }
+ }
}
diff --git a/Octokit.Tests/Clients/TeamsClientTests.cs b/Octokit.Tests/Clients/TeamsClientTests.cs
index 377dd2a6..d49e6a5f 100644
--- a/Octokit.Tests/Clients/TeamsClientTests.cs
+++ b/Octokit.Tests/Clients/TeamsClientTests.cs
@@ -43,6 +43,20 @@ namespace Octokit.Tests.Clients
}
}
+ public class TheGetMembersMethod
+ {
+ [Fact]
+ public void RequestsTheCorrectUrl()
+ {
+ var connection = Substitute.For();
+ var client = new TeamsClient(connection);
+
+ client.GetMembers(1);
+
+ connection.Received().GetAll(Arg.Is(u => u.ToString() == "teams/1/members"));
+ }
+ }
+
public class TheCreateTeamMethod
{
[Fact]
diff --git a/Octokit/Clients/ITeamsClient.cs b/Octokit/Clients/ITeamsClient.cs
index be759a8e..91b44aea 100644
--- a/Octokit/Clients/ITeamsClient.cs
+++ b/Octokit/Clients/ITeamsClient.cs
@@ -33,6 +33,16 @@ namespace Octokit
/// A list of the orgs's teams s.
Task> GetAll(string org);
+ ///
+ /// Returns all members of the given team.
+ ///
+ /// The team identifier
+ ///
+ /// https://developer.github.com/v3/orgs/teams/#list-team-members
+ ///
+ /// A list of the team's member s.
+ Task> GetMembers(int id);
+
///
/// Returns newly created for the current org.
///
diff --git a/Octokit/Clients/TeamsClient.cs b/Octokit/Clients/TeamsClient.cs
index 48310ff5..a2dcceab 100644
--- a/Octokit/Clients/TeamsClient.cs
+++ b/Octokit/Clients/TeamsClient.cs
@@ -52,6 +52,20 @@ namespace Octokit
return ApiConnection.GetAll(endpoint);
}
+ ///
+ /// Returns all members of the given team.
+ ///
+ /// The team identifier
+ ///
+ /// https://developer.github.com/v3/orgs/teams/#list-team-members
+ ///
+ /// A list of the team's member s.
+ public Task> GetMembers(int id)
+ {
+ var endpoint = ApiUrls.TeamMembers(id);
+
+ return ApiConnection.GetAll(endpoint);
+ }
///
/// Returns newly created for the current org.
diff --git a/Octokit/Helpers/ApiUrls.cs b/Octokit/Helpers/ApiUrls.cs
index 5f872867..3d863ef9 100644
--- a/Octokit/Helpers/ApiUrls.cs
+++ b/Octokit/Helpers/ApiUrls.cs
@@ -946,7 +946,7 @@ namespace Octokit
}
///
- /// returns the for team members
+ /// returns the for team member
///
/// The team id
/// The user login.
@@ -955,6 +955,15 @@ namespace Octokit
return "teams/{0}/members/{1}".FormatUri(id, login);
}
+ ///
+ /// returns the for team members list
+ ///
+ /// The team id
+ public static Uri TeamMembers(int id)
+ {
+ return "teams/{0}/members".FormatUri(id);
+ }
+
///
/// returns the for teams
/// use for update or deleting a team