diff --git a/releasenotes/notes/add-configuration-parameter-list-to-osc-3d1a383999dd2d64.yaml b/releasenotes/notes/add-configuration-parameter-list-to-osc-3d1a383999dd2d64.yaml
new file mode 100644
index 00000000..4b18bbc3
--- /dev/null
+++ b/releasenotes/notes/add-configuration-parameter-list-to-osc-3d1a383999dd2d64.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - The command ``trove configuration-parameter-list`` is now available to
+    use in the python-openstackclient CLI as ``openstack database
+    configuration parameter list``
diff --git a/setup.cfg b/setup.cfg
index 032800a8..04a02c8d 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -35,6 +35,7 @@ openstack.database.v1 =
     database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters
     database_cluster_show = troveclient.osc.v1.database_clusters:ShowDatabaseCluster
     database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations
+    database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
     database_configuration_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfiguration
     database_flavor_list = troveclient.osc.v1.database_flavors:ListDatabaseFlavors
     database_flavor_show = troveclient.osc.v1.database_flavors:ShowDatabaseFlavor
diff --git a/troveclient/osc/v1/database_configurations.py b/troveclient/osc/v1/database_configurations.py
index 59deea60..eb0d5d48 100644
--- a/troveclient/osc/v1/database_configurations.py
+++ b/troveclient/osc/v1/database_configurations.py
@@ -17,7 +17,9 @@ from osc_lib.command import command
 from osc_lib import utils as osc_utils
 import six
 
+from troveclient import exceptions
 from troveclient.i18n import _
+from troveclient import utils
 
 
 def set_attributes_for_print_detail(configuration):
@@ -80,3 +82,51 @@ class ShowDatabaseConfiguration(command.ShowOne):
             db_configurations, parsed_args.configuration_group)
         configuration = set_attributes_for_print_detail(configuration)
         return zip(*sorted(six.iteritems(configuration)))
+
+
+class ListDatabaseConfigurationParameters(command.Lister):
+
+    _description = _("Lists available parameters for a configuration group.")
+    columns = ['Name', 'Type', 'Min Size', 'Max Size', 'Restart Required']
+
+    def get_parser(self, prog_name):
+        parser = super(ListDatabaseConfigurationParameters, self).\
+            get_parser(prog_name)
+        parser.add_argument(
+            'datastore_version',
+            metavar='<datastore_version>',
+            help=_('Datastore version name or ID assigned'
+                   'to the configuration group.')
+        )
+        parser.add_argument(
+            '--datastore',
+            metavar='<datastore>',
+            default=None,
+            help=_('ID or name of the datastore to list configuration'
+                   'parameters for. Optional if the ID of the'
+                   'datastore_version is provided.')
+        )
+        return parser
+
+    def take_action(self, parsed_args):
+        db_configuration_parameters = self.app.client_manager.\
+            database.configuration_parameters
+        if parsed_args.datastore:
+            params = db_configuration_parameters.\
+                parameters(parsed_args.datastore,
+                           parsed_args.datastore_version)
+        elif utils.is_uuid_like(parsed_args.datastore_version):
+            params = db_configuration_parameters.\
+                parameters_by_version(parsed_args.datastore_version)
+        else:
+            raise exceptions.NoUniqueMatch(_('The datastore name or id is'
+                                             ' required to retrieve the'
+                                             ' parameters for the'
+                                             ' configuration group'
+                                             ' by name.'))
+        for param in params:
+            setattr(param, 'min_size', getattr(param, 'min', '-'))
+            setattr(param, 'max_size', getattr(param, 'max', '-'))
+        params = [osc_utils.get_item_properties(p, self.columns)
+                  for p in params]
+        return self.columns, params
diff --git a/troveclient/tests/osc/v1/fakes.py b/troveclient/tests/osc/v1/fakes.py
index 934ad1c7..f650c94f 100644
--- a/troveclient/tests/osc/v1/fakes.py
+++ b/troveclient/tests/osc/v1/fakes.py
@@ -17,6 +17,7 @@ from troveclient.tests import fakes
 from troveclient.tests.osc import utils
 from troveclient.v1 import backups
 from troveclient.v1 import clusters
+from troveclient.v1 import configurations
 from troveclient.v1 import databases
 from troveclient.v1 import datastores
 from troveclient.v1 import flavors
@@ -57,7 +58,17 @@ class FakeConfigurations(object):
                    [2]['configurations'])
 
     def get_configurations_c_123(self):
-        return flavors.Flavor(None, self.fake_config[0])
+        return configurations.Configuration(None, self.fake_config[0])
+
+
+class FakeConfigurationParameters(object):
+    fake_config_param = (fakes.FakeHTTPClient().
+                         get_datastores_d_123_versions_v_156_parameters()
+                         [2]['configuration-parameters'])
+
+    def get_params_connect_timeout(self):
+        return configurations.\
+            ConfigurationParameter(None, self.fake_config_param[1])
 
 
 class FakeLimits(object):
diff --git a/troveclient/tests/osc/v1/test_database_configurations.py b/troveclient/tests/osc/v1/test_database_configurations.py
index 81769711..2f76c1c3 100644
--- a/troveclient/tests/osc/v1/test_database_configurations.py
+++ b/troveclient/tests/osc/v1/test_database_configurations.py
@@ -11,18 +11,22 @@
 #   under the License.
 
 from troveclient import common
+from troveclient import exceptions
 from troveclient.osc.v1 import database_configurations
 from troveclient.tests.osc.v1 import fakes
 
 
 class TestConfigurations(fakes.TestDatabasev1):
     fake_configurations = fakes.FakeConfigurations()
+    fake_configuration_params = fakes.FakeConfigurationParameters()
 
     def setUp(self):
         super(TestConfigurations, self).setUp()
         self.mock_client = self.app.client_manager.database
         self.configuration_client = (self.app.client_manager.database.
                                      configurations)
+        self.configuration_params_client = (self.app.client_manager.
+                                            database.configuration_parameters)
 
 
 class TestConfigurationList(TestConfigurations):
@@ -77,3 +81,43 @@ class TestConfigurationShow(TestConfigurations):
         columns, data = self.cmd.take_action(parsed_args)
         self.assertEqual(self.columns, columns)
         self.assertEqual(self.values, data)
+
+
+class TestConfigurationParameterList(TestConfigurations):
+
+    columns = database_configurations.\
+        ListDatabaseConfigurationParameters.columns
+    values = ('connect_timeout', 'integer', 2, 31536000, 'false')
+
+    def setUp(self):
+        super(TestConfigurationParameterList, self).setUp()
+        self.cmd = database_configurations.\
+            ListDatabaseConfigurationParameters(self.app, None)
+        data = [self.fake_configuration_params.get_params_connect_timeout()]
+        self.configuration_params_client.parameters.return_value =\
+            common.Paginated(data)
+        self.configuration_params_client.parameters_by_version.return_value =\
+            common.Paginated(data)
+
+    def test_configuration_parameters_list_defaults(self):
+        args = ['d-123', '--datastore', 'mysql']
+        verifylist = [
+            ('datastore_version', 'd-123'),
+            ('datastore', 'mysql'),
+        ]
+        parsed_args = self.check_parser(self.cmd, args, verifylist)
+        columns, data = self.cmd.take_action(parsed_args)
+        self.assertEqual(self.columns, columns)
+        self.assertEqual([tuple(self.values)], data)
+
+    def test_configuration_parameters_list_with_version_id_exception(self):
+        args = [
+            'd-123',
+        ]
+        verifylist = [
+            ('datastore_version', 'd-123'),
+        ]
+        parsed_args = self.check_parser(self.cmd, args, verifylist)
+        self.assertRaises(exceptions.NoUniqueMatch,
+                          self.cmd.take_action,
+                          parsed_args)