diff --git a/Gemfile.lock b/Gemfile.lock
index 86931215..2d004666 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -23,7 +23,7 @@ GIT
 
 GIT
   remote: git://github.com/travis-ci/travis-core.git
-  revision: bcc14ad2fafff932f1b681a332b6435b50ddb099
+  revision: 9db978cabd740dddbc94d105cc4242b56afe2e9f
   specs:
     travis-core (0.0.1)
       actionmailer (~> 3.2.12)
@@ -39,6 +39,7 @@ GIT
       rake
       redis (~> 3.0)
       rollout (~> 1.1.0)
+      s3 (~> 0.3)
       simple_states (~> 1.0.0)
       thor (~> 0.14.6)
 
@@ -177,6 +178,7 @@ GEM
     newrelic_rpm (3.6.7.152)
     pg (0.13.2)
     polyglot (0.3.3)
+    proxies (0.2.1)
     pry (0.9.12.2)
       coderay (~> 1.0.5)
       method_source (~> 0.8)
@@ -226,6 +228,8 @@ GEM
     rspec-expectations (2.14.0)
       diff-lcs (>= 1.1.3, < 2.0)
     rspec-mocks (2.14.1)
+    s3 (0.3.17)
+      proxies (~> 0.2.0)
     sidekiq (2.5.4)
       celluloid (~> 0.12.0)
       connection_pool (~> 0.9.2)
diff --git a/lib/travis/api/app/endpoint/repos.rb b/lib/travis/api/app/endpoint/repos.rb
index d6cf9f16..fd4a36a5 100644
--- a/lib/travis/api/app/endpoint/repos.rb
+++ b/lib/travis/api/app/endpoint/repos.rb
@@ -68,6 +68,16 @@ class Travis::Api::App
         respond_with service(:find_branch, params), type: :branch, version: :v2
       end
 
+      # List caches for a given repo. Can be filtered with `branch` and `match` query parameter.
+      get '/:repository_id/caches', scope: :private do
+        respond_with service(:find_caches, params), type: :caches, version: :v2
+      end
+
+      # Delete caches for a given repo. Can be filtered with `branch` and `match` query parameter.
+      delete '/:repository_id/caches', scope: :private do
+        respond_with service(:delete_caches, params), type: :caches, version: :v2
+      end
+
       # Gets the repository with the given name.
       #
       # ### Response
@@ -129,6 +139,16 @@ class Travis::Api::App
       get '/:owner_name/:name/branches/:branch' do
         respond_with service(:find_branch, params), type: :branch, version: :v2
       end
+
+      # List caches for a given repo. Can be filtered with `branch` and `match` query parameter.
+      get '/:owner_name/:name/caches', scope: :private do
+        respond_with service(:find_caches, params), type: :caches, version: :v2
+      end
+
+      # Delete caches for a given repo. Can be filtered with `branch` and `match` query parameter.
+      delete '/:owner_name/:name/caches', scope: :private do
+        respond_with service(:delete_caches, params), type: :caches, version: :v2
+      end
     end
   end
 end
diff --git a/travis-api.gemspec b/travis-api.gemspec
index 810b381e..b6596011 100644
--- a/travis-api.gemspec
+++ b/travis-api.gemspec
@@ -9,9 +9,9 @@ Gem::Specification.new do |s|
   s.require_path = 'lib'
 
   s.authors = [
-    "Sven Fuchs",
-    "Konstantin Haase",
     "Piotr Sarnacki",
+    "Konstantin Haase",
+    "Sven Fuchs",
     "Josh Kalderimis",
     "Mathias Meyer",
     "Henrik Hodne",
@@ -20,24 +20,29 @@ Gem::Specification.new do |s|
     "Steve Richert",
     "Brian Ford",
     "Nick Schonning",
-    "James Dennes"
+    "Patrick Williams",
+    "James Dennes",
+    "Tim Carey-Smith"
   ]
 
   s.email = [
+    "drogus@gmail.com",
     "konstantin.mailinglists@googlemail.com",
     "me@svenfuchs.com",
-    "drogus@gmail.com",
     "josh.kalderimis@gmail.com",
     "meyer@paperplanes.de",
     "me@henrikhodne.com",
-    "svenfuchs@artweb-design.de",
+    "henrik@hodne.io",
+    "konstantin.haase@gmail.com",
     "andre@arko.net",
+    "svenfuchs@artweb-design.de",
     "sferik@gmail.com",
     "steve.richert@gmail.com",
     "bford@engineyard.com",
-    "jdennes@gmail.com",
     "nschonni@gmail.com",
-    "konstantin.haase@gmail.com"
+    "jdennes@gmail.com",
+    "tim@spork.in",
+    "patrick@bittorrent.com"
   ]
 
   s.files = [
@@ -48,6 +53,8 @@ Gem::Specification.new do |s|
     "config.ru",
     "config/database.yml",
     "config/newrelic.yml",
+    "config/nginx.conf.erb",
+    "config/puma-config.rb",
     "config/unicorn.rb",
     "docs/00_overview.md",
     "docs/01_cross_origin.md",
@@ -107,6 +114,7 @@ Gem::Specification.new do |s|
     "lib/travis/api/app/endpoint/repos.rb",
     "lib/travis/api/app/endpoint/requests.rb",
     "lib/travis/api/app/endpoint/stats.rb",
+    "lib/travis/api/app/endpoint/uptime.rb",
     "lib/travis/api/app/endpoint/users.rb",
     "lib/travis/api/app/endpoint/workers.rb",
     "lib/travis/api/app/extensions.rb",
@@ -145,6 +153,7 @@ Gem::Specification.new do |s|
     "spec/integration/responders_spec.rb",
     "spec/integration/routes.backup.rb",
     "spec/integration/scopes_spec.rb",
+    "spec/integration/uptime_spec.rb",
     "spec/integration/v1/branches_spec.rb",
     "spec/integration/v1/builds_spec.rb",
     "spec/integration/v1/hooks_spec.rb",