Add optional parameters for pruning build cache.

Signed-off-by: Steve Swor <[email protected]>
diff --git a/docker/api/build.py b/docker/api/build.py
index 365129a..f60aba0 100644
--- a/docker/api/build.py
+++ b/docker/api/build.py
@@ -275,10 +275,16 @@
         return self._stream_helper(response, decode=decode)
 
     @utils.minimum_version('1.31')
-    def prune_builds(self):
+    def prune_builds(self, prune_all=False, keep_storage=None, filters=None):
         """
         Delete the builder cache
 
+        Args:
+            prune_all (bool): Remove all unused build cache, not just dangling
+                ones.
+            keep_storage (int): Amount of disk space to keep for cache.
+            filters (dict): Filters to process on the prune list.
+
         Returns:
             (dict): A dictionary containing information about the operation's
                     result. The ``SpaceReclaimed`` key indicates the amount of
@@ -288,8 +294,13 @@
             :py:class:`docker.errors.APIError`
                 If the server returns an error.
         """
+        params = {'all': prune_all}
+        if keep_storage is not None:
+            params['keep-storage'] = keep_storage
+        if filters is not None:
+            params['filters'] = utils.convert_filters(filters)
         url = self._url("/build/prune")
-        return self._result(self._post(url), True)
+        return self._result(self._post(url, params=params), True)
 
     def _set_auth_headers(self, headers):
         log.debug('Looking for auth config')
diff --git a/tests/integration/api_build_test.py b/tests/integration/api_build_test.py
index b830a10..5275c8f 100644
--- a/tests/integration/api_build_test.py
+++ b/tests/integration/api_build_test.py
@@ -593,3 +593,20 @@
         prune_result = self.client.prune_builds()
         assert 'SpaceReclaimed' in prune_result
         assert isinstance(prune_result['SpaceReclaimed'], int)
+
+    @requires_api_version('1.31')
+    @pytest.mark.xfail(
+        True,
+        reason='Currently fails on 18.09: '
+               'https://github.com/moby/moby/issues/37920'
+    )
+    def test_prune_builds_all(self):
+        prune_result = self.client.prune_builds(prune_all=True)
+        assert 'SpaceReclaimed' in prune_result
+        assert isinstance(prune_result['SpaceReclaimed'], int)
+
+    @requires_api_version('1.31')
+    def test_prune_builds_keep_storage(self):
+        prune_result = self.client.prune_builds(keep_storage=1)
+        assert 'SpaceReclaimed' in prune_result
+        assert isinstance(prune_result['SpaceReclaimed'], int)