diff --git a/Octokit/Clients/ITeamsClient.cs b/Octokit/Clients/ITeamsClient.cs
index 4249acaf..e4699ce9 100644
--- a/Octokit/Clients/ITeamsClient.cs
+++ b/Octokit/Clients/ITeamsClient.cs
@@ -159,6 +159,14 @@ namespace Octokit
///
Task AddRepository(int id, string organization, string repoName);
+ ///
+ /// Add a repository to the team
+ ///
+ /// The permission to grant the team on this repository
+ /// Thrown when a general API error occurs.
+ ///
+ Task AddRepository(int id, string organization, string repoName, PermissionType permission);
+
///
/// Remove a repository from the team
///
diff --git a/Octokit/Clients/TeamsClient.cs b/Octokit/Clients/TeamsClient.cs
index 3ec477ac..cc267bc3 100644
--- a/Octokit/Clients/TeamsClient.cs
+++ b/Octokit/Clients/TeamsClient.cs
@@ -317,6 +317,24 @@ namespace Octokit
}
}
+ public async Task AddRepository(int id, string organization, string repoName, PermissionType permission)
+ {
+ Ensure.ArgumentNotNullOrEmptyString(organization, "organization");
+ Ensure.ArgumentNotNullOrEmptyString(repoName, "repoName");
+
+ var endpoint = ApiUrls.TeamRepository(id, organization, repoName);
+
+ try
+ {
+ var httpStatusCode = await ApiConnection.Connection.Put(endpoint).ConfigureAwait(false);
+ return httpStatusCode == HttpStatusCode.NoContent;
+ }
+ catch (NotFoundException)
+ {
+ return false;
+ }
+ }
+
///
/// Remove a repository from the team
///
diff --git a/Octokit/Models/Request/TeamRepositoryUpdate.cs b/Octokit/Models/Request/TeamRepositoryUpdate.cs
new file mode 100644
index 00000000..1106572f
--- /dev/null
+++ b/Octokit/Models/Request/TeamRepositoryUpdate.cs
@@ -0,0 +1,42 @@
+using Octokit.Internal;
+using System.Diagnostics;
+using System.Globalization;
+
+namespace Octokit
+{
+ public enum PermissionType
+ {
+ [Parameter(Value = "pull")]
+ Pull,
+ [Parameter(Value = "push")]
+ Push,
+ [Parameter(Value = "admin")]
+ Admin
+ }
+
+ [DebuggerDisplay("{DebuggerDisplay,nq}")]
+ public class TeamRepositoryUpdate
+ {
+ ///
+ /// Used to add or update a team repository.
+ ///
+ public TeamRepositoryUpdate(PermissionType permission)
+ {
+ Permission = permission;
+ }
+
+ ///
+ /// The permission to grant the team on this repository.
+ ///
+ [Parameter(Key = "permission")]
+ public PermissionType Permission { get; private set; }
+
+ internal string DebuggerDisplay
+ {
+ get
+ {
+ return string.Format(CultureInfo.InvariantCulture, "Permission: {}", Permission);
+ }
+ }
+ }
+}
diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj
index 2370eca2..a2638bab 100644
--- a/Octokit/Octokit-Mono.csproj
+++ b/Octokit/Octokit-Mono.csproj
@@ -466,6 +466,7 @@
+
\ No newline at end of file
diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj
index f7fadcd7..b4a0a293 100644
--- a/Octokit/Octokit-MonoAndroid.csproj
+++ b/Octokit/Octokit-MonoAndroid.csproj
@@ -477,6 +477,7 @@
+
\ No newline at end of file
diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj
index d99d3979..50fdde6d 100644
--- a/Octokit/Octokit-Monotouch.csproj
+++ b/Octokit/Octokit-Monotouch.csproj
@@ -473,6 +473,7 @@
+
diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj
index 4c2c1574..44aa78eb 100644
--- a/Octokit/Octokit-Portable.csproj
+++ b/Octokit/Octokit-Portable.csproj
@@ -463,6 +463,7 @@
+
diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj
index 841d4088..c459ed44 100644
--- a/Octokit/Octokit-netcore45.csproj
+++ b/Octokit/Octokit-netcore45.csproj
@@ -470,6 +470,7 @@
+
diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj
index 2f5bac29..afd1dc39 100644
--- a/Octokit/Octokit.csproj
+++ b/Octokit/Octokit.csproj
@@ -144,6 +144,7 @@
+