diff --git a/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs
new file mode 100644
index 00000000..bee75601
--- /dev/null
+++ b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Reactive;
+
+namespace Octokit.Reactive
+{
+ ///
+ /// A client for GitHub's Enterprise Admin Stats API
+ ///
+ ///
+ /// See the Enterprise Admin Stats API documentation for more information.
+ ///
+ public interface IObservableEnterpriseAdminStatsClient
+ {
+ ///
+ /// Gets GitHub Enterprise statistics (must be Site Admin user).
+ ///
+ ///
+ ///https://developer.github.com/v3/enterprise/admin_stats/#get-statistics
+ ///
+ /// The collection for the requested type.
+ [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
+ IObservable GetStatistics(AdminStatsType type);
+ }
+}
diff --git a/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseClient.cs b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseClient.cs
new file mode 100644
index 00000000..25bf89a8
--- /dev/null
+++ b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseClient.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Octokit.Reactive
+{
+ ///
+ /// A client for GitHub's Enterprise API.
+ ///
+ ///
+ /// See the Enterprise API documentation for more information.
+ ///
+ public interface IObservableEnterpriseClient
+ {
+ ///
+ /// A client for GitHub's Enterprise Admin Stats API
+ ///
+ ///
+ /// See the Enterprise Admin Stats API documentation for more information.
+ ///
+ IObservableEnterpriseAdminStatsClient AdminStats { get; }
+ }
+}
diff --git a/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs
new file mode 100644
index 00000000..59c13f03
--- /dev/null
+++ b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.Reactive;
+using System.Reactive.Threading.Tasks;
+
+namespace Octokit.Reactive
+{
+ ///
+ /// A client for GitHub's Enterprise Admin Stats API
+ ///
+ ///
+ /// See the Enterprise Admin Stats API documentation for more information.
+ ///
+ public class ObservableEnterpriseAdminStatsClient : IObservableEnterpriseAdminStatsClient
+ {
+ readonly IEnterpriseAdminStatsClient _client;
+
+ public ObservableEnterpriseAdminStatsClient(IGitHubClient client)
+ {
+ Ensure.ArgumentNotNull(client, "client");
+
+ _client = client.Enterprise.AdminStats;
+ }
+
+ ///
+ /// Gets GitHub Enterprise statistics (must be Site Admin user).
+ ///
+ ///
+ ///https://developer.github.com/v3/enterprise/admin_stats/#get-statistics
+ ///
+ /// The collection for the requested type.
+ public IObservable GetStatistics(AdminStatsType type)
+ {
+ return _client.GetStatistics(type).ToObservable();
+ }
+ }
+}
diff --git a/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseClient.cs b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseClient.cs
new file mode 100644
index 00000000..5f9067f4
--- /dev/null
+++ b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseClient.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Octokit.Reactive
+{
+ ///
+ /// A client for GitHub's Enterprise API.
+ ///
+ ///
+ /// See the Enterprise API documentation for more information.
+ ///
+ public class ObservableEnterpriseClient : IObservableEnterpriseClient
+ {
+ public ObservableEnterpriseClient(IGitHubClient client)
+ {
+ Ensure.ArgumentNotNull(client, "client");
+
+ AdminStats = new ObservableEnterpriseAdminStatsClient(client);
+ }
+
+ ///
+ /// A client for GitHub's Enterprise Admin Stats API
+ ///
+ ///
+ /// See the Enterprise Admin Stats API documentation for more information.
+ ///
+ public IObservableEnterpriseAdminStatsClient AdminStats { get; private set; }
+ }
+}
diff --git a/Octokit.Reactive/Octokit.Reactive.csproj b/Octokit.Reactive/Octokit.Reactive.csproj
index d25d860a..cf5dca1e 100644
--- a/Octokit.Reactive/Octokit.Reactive.csproj
+++ b/Octokit.Reactive/Octokit.Reactive.csproj
@@ -75,6 +75,10 @@
Properties\SolutionInfo.cs
+
+
+
+
diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj
index aacc1e36..1a475c6c 100644
--- a/Octokit.Tests/Octokit.Tests.csproj
+++ b/Octokit.Tests/Octokit.Tests.csproj
@@ -206,6 +206,7 @@
+
diff --git a/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs b/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs
new file mode 100644
index 00000000..4786faa0
--- /dev/null
+++ b/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs
@@ -0,0 +1,39 @@
+using NSubstitute;
+using Octokit.Reactive;
+using System;
+using System.Collections.Generic;
+using Xunit;
+
+namespace Octokit.Tests
+{
+ public class ObservableEnterpriseAdminStatsClientTests
+ {
+ public class TheGetStatisticsMethod
+ {
+ [Fact]
+ public void CallsIntoClient()
+ {
+ var github = Substitute.For();
+ var client = new ObservableEnterpriseAdminStatsClient(github);
+
+ foreach (AdminStatsType type in Enum.GetValues(typeof(AdminStatsType)))
+ {
+ var expectedUri = "enterprise/stats/{0}".FormatUri(type.ToString().ToLowerInvariant());
+ client.GetStatistics(type);
+
+ github.Enterprise.AdminStats.Received(1).GetStatistics(type);
+ }
+ }
+ }
+
+ public class TheCtor
+ {
+ [Fact]
+ public void EnsuresNonNullArguments()
+ {
+ Assert.Throws(
+ () => new ObservableEnterpriseAdminStatsClient(null));
+ }
+ }
+ }
+}