diff --git a/docker/api/config.py b/docker/api/config.py
index b46b09c7..767bef26 100644
--- a/docker/api/config.py
+++ b/docker/api/config.py
@@ -6,7 +6,7 @@ from .. import utils
 
 
 class ConfigApiMixin(object):
-    @utils.minimum_version('1.25')
+    @utils.minimum_version('1.30')
     def create_config(self, name, data, labels=None):
         """
             Create a config
@@ -35,7 +35,7 @@ class ConfigApiMixin(object):
             self._post_json(url, data=body), True
         )
 
-    @utils.minimum_version('1.25')
+    @utils.minimum_version('1.30')
     @utils.check_resource('id')
     def inspect_config(self, id):
         """
@@ -53,7 +53,7 @@ class ConfigApiMixin(object):
         url = self._url('/configs/{0}', id)
         return self._result(self._get(url), True)
 
-    @utils.minimum_version('1.25')
+    @utils.minimum_version('1.30')
     @utils.check_resource('id')
     def remove_config(self, id):
         """
@@ -73,7 +73,7 @@ class ConfigApiMixin(object):
         self._raise_for_status(res)
         return True
 
-    @utils.minimum_version('1.25')
+    @utils.minimum_version('1.30')
     def configs(self, filters=None):
         """
             List configs
diff --git a/docker/api/container.py b/docker/api/container.py
index cb97b794..05676f11 100644
--- a/docker/api/container.py
+++ b/docker/api/container.py
@@ -1018,7 +1018,10 @@ class ContainerApiMixin(object):
         """
         params = {'t': timeout}
         url = self._url("/containers/{0}/restart", container)
-        res = self._post(url, params=params)
+        conn_timeout = self.timeout
+        if conn_timeout is not None:
+            conn_timeout += timeout
+        res = self._post(url, params=params, timeout=conn_timeout)
         self._raise_for_status(res)
 
     @utils.check_resource('container')
@@ -1107,9 +1110,10 @@ class ContainerApiMixin(object):
         else:
             params = {'t': timeout}
         url = self._url("/containers/{0}/stop", container)
-
-        res = self._post(url, params=params,
-                         timeout=(timeout + (self.timeout or 0)))
+        conn_timeout = self.timeout
+        if conn_timeout is not None:
+            conn_timeout += timeout
+        res = self._post(url, params=params, timeout=conn_timeout)
         self._raise_for_status(res)
 
     @utils.check_resource('container')

diff --git a/tests/integration/api_container_test.py b/tests/integration/api_container_test.py
index e2125186..afd439f9 100644
--- a/tests/integration/api_container_test.py
+++ b/tests/integration/api_container_test.py
@@ -1165,6 +1165,15 @@ class RestartContainerTest(BaseAPIIntegrationTest):
         assert info2['State']['Running'] is True
         self.client.kill(id)
 
+    def test_restart_with_low_timeout(self):
+        container = self.client.create_container(BUSYBOX, ['sleep', '9999'])
+        self.client.start(container)
+        self.client.timeout = 1
+        self.client.restart(container, timeout=3)
+        self.client.timeout = None
+        self.client.restart(container, timeout=3)
+        self.client.kill(container)
+
     def test_restart_with_dict_instead_of_id(self):
         container = self.client.create_container(BUSYBOX, ['sleep', '9999'])
         assert 'Id' in container
diff --git a/tests/unit/api_container_test.py b/tests/unit/api_container_test.py
index c33f129e..a7e183c8 100644
--- a/tests/unit/api_container_test.py
+++ b/tests/unit/api_container_test.py
@@ -1335,7 +1335,7 @@ class ContainerTest(BaseAPIClientTest):
             'POST',
             url_prefix + 'containers/3cc2351ab11b/restart',
             params={'t': 2},
-            timeout=DEFAULT_TIMEOUT_SECONDS
+            timeout=(DEFAULT_TIMEOUT_SECONDS + 2)
         )
 
     def test_restart_container_with_dict_instead_of_id(self):
@@ -1345,7 +1345,7 @@ class ContainerTest(BaseAPIClientTest):
             'POST',
             url_prefix + 'containers/3cc2351ab11b/restart',
             params={'t': 2},
-            timeout=DEFAULT_TIMEOUT_SECONDS
+            timeout=(DEFAULT_TIMEOUT_SECONDS + 2)
         )
 
     def test_remove_container(self):

ContainerApiMixin::restart(timeout=...) uses default read timeout which results in ReadTimeout exception
ReadTimeout is thrown when you restart or stop a container with a high timeout (e.g. 120sec) in case when the container needs over 60 seconds to stop. This requires users to write code like this:
```
try:
    my_container.client.api.timeout = 130
    my_container.restart(timeout=110)
finally:
    my_container.client.api.timeout = docker.constants.DEFAULT_TIMEOUT_SECONDS
```
or write their own `restart` method.

IMO better solution would be to use read timeout that is `max(docker.constants.DEFAULT_TIMEOUT_SECONDS, user_timeout + SOME_CONSTANT)`, because when someone stops a container with specified timeout (`user_timeout`) it's expected that there might be no data to read from the socket for at least `user_timeout`
tests/unit/api_container_test.py::ContainerTest::test_restart_container tests/unit/api_container_test.py::ContainerTest::test_restart_container_with_dict_instead_of_id
tests/unit/api_container_test.py::StartContainerTest::test_start_container tests/unit/api_container_test.py::StartContainerTest::test_start_container_none tests/unit/api_container_test.py::StartContainerTest::test_start_container_privileged tests/unit/api_container_test.py::StartContainerTest::test_start_container_regression_573 tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_binds_ro tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_binds_rw tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_dict_instead_of_id tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_links tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_links_as_list_of_tuples tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_lxc_conf tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_lxc_conf_compat tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_multiple_links tests/unit/api_container_test.py::StartContainerTest::test_start_container_with_port_binds tests/unit/api_container_test.py::CreateContainerTest::test_create_container tests/unit/api_container_test.py::CreateContainerTest::test_create_container_privileged tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_added_capabilities tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_aliases tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_binds tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_binds_list tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_binds_mode tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_binds_mode_and_ro_error tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_binds_ro tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_binds_rw tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_cgroup_parent tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_devices tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_dropped_capabilities tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_entrypoint tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_host_config_cpu_shares tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_host_config_cpus tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_host_config_cpuset tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_host_config_cpuset_mems tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_labels_dict tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_labels_list tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_links tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_links_as_list_of_tuples tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_lxc_conf tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_lxc_conf_compat tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mac_address tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_int tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_g_unit tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_k_unit tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_m_unit tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_mem_limit_as_string_with_wrong_value tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_multiple_links tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_named_volume tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_port_binds tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_ports tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_restart_policy tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_stdin_open tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_stop_signal tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_sysctl tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_tmpfs_dict tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_tmpfs_list tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_unicode_envvars tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_volume_string tests/unit/api_container_test.py::CreateContainerTest::test_create_container_with_working_dir tests/unit/api_container_test.py::CreateContainerTest::test_create_named_container tests/unit/api_container_test.py::ContainerTest::test_container_stats tests/unit/api_container_test.py::ContainerTest::test_container_top tests/unit/api_container_test.py::ContainerTest::test_container_top_with_psargs tests/unit/api_container_test.py::ContainerTest::test_container_update tests/unit/api_container_test.py::ContainerTest::test_diff tests/unit/api_container_test.py::ContainerTest::test_diff_with_dict_instead_of_id tests/unit/api_container_test.py::ContainerTest::test_export tests/unit/api_container_test.py::ContainerTest::test_export_with_dict_instead_of_id tests/unit/api_container_test.py::ContainerTest::test_inspect_container tests/unit/api_container_test.py::ContainerTest::test_inspect_container_undefined_id tests/unit/api_container_test.py::ContainerTest::test_kill_container tests/unit/api_container_test.py::ContainerTest::test_kill_container_with_dict_instead_of_id tests/unit/api_container_test.py::ContainerTest::test_kill_container_with_signal tests/unit/api_container_test.py::ContainerTest::test_list_containers tests/unit/api_container_test.py::ContainerTest::test_log_following tests/unit/api_container_test.py::ContainerTest::test_log_following_backwards tests/unit/api_container_test.py::ContainerTest::test_log_since tests/unit/api_container_test.py::ContainerTest::test_log_since_with_datetime tests/unit/api_container_test.py::ContainerTest::test_log_since_with_invalid_value_raises_error tests/unit/api_container_test.py::ContainerTest::test_log_streaming tests/unit/api_container_test.py::ContainerTest::test_log_streaming_and_following tests/unit/api_container_test.py::ContainerTest::test_log_tail tests/unit/api_container_test.py::ContainerTest::test_log_tty tests/unit/api_container_test.py::ContainerTest::test_logs tests/unit/api_container_test.py::ContainerTest::test_logs_with_dict_instead_of_id tests/unit/api_container_test.py::ContainerTest::test_pause_container tests/unit/api_container_test.py::ContainerTest::test_port tests/unit/api_container_test.py::ContainerTest::test_remove_container tests/unit/api_container_test.py::ContainerTest::test_remove_container_with_dict_instead_of_id tests/unit/api_container_test.py::ContainerTest::test_rename_container tests/unit/api_container_test.py::ContainerTest::test_resize_container tests/unit/api_container_test.py::ContainerTest::test_stop_container tests/unit/api_container_test.py::ContainerTest::test_stop_container_with_dict_instead_of_id tests/unit/api_container_test.py::ContainerTest::test_unpause_container tests/unit/api_container_test.py::ContainerTest::test_wait tests/unit/api_container_test.py::ContainerTest::test_wait_with_dict_instead_of_id