diff --git a/doc/source/cli/command-objects/volume-backend.rst b/doc/source/cli/command-objects/volume-backend.rst
index 4766ecabb2..f47efd1976 100644
--- a/doc/source/cli/command-objects/volume-backend.rst
+++ b/doc/source/cli/command-objects/volume-backend.rst
@@ -2,7 +2,7 @@
 volume backend
 ==============
 
-Block Storage v2
+Block Storage v2, v3
 
-.. autoprogram-cliff:: openstack.volume.v2
+.. autoprogram-cliff:: openstack.volume.v3
    :command: volume backend *
diff --git a/doc/source/cli/command-objects/volume-backup.rst b/doc/source/cli/command-objects/volume-backup.rst
index 1c26921197..63e5f3655b 100644
--- a/doc/source/cli/command-objects/volume-backup.rst
+++ b/doc/source/cli/command-objects/volume-backup.rst
@@ -2,8 +2,8 @@
 volume backup
 =============
 
-Block Storage v1, v2
+Block Storage v1, v2, v3
 
-.. autoprogram-cliff:: openstack.volume.v2
+.. autoprogram-cliff:: openstack.volume.v3
    :command: volume backup *
 
diff --git a/doc/source/cli/command-objects/volume-host.rst b/doc/source/cli/command-objects/volume-host.rst
index 350d6dec7c..acd0866356 100644
--- a/doc/source/cli/command-objects/volume-host.rst
+++ b/doc/source/cli/command-objects/volume-host.rst
@@ -2,51 +2,7 @@
 volume host
 ===========
 
-Block Storage v2
+Block Storage v2, v3
 
-volume host failover
---------------------
-
-Failover volume host to different backend
-
-.. program:: volume host failover
-.. code:: bash
-
-    openstack volume host failover
-        --volume-backend <backend-id>
-        <host-name>
-
-.. option:: --volume-backend <backend-id>
-
-    The ID of the volume backend replication
-    target where the host will failover to (required)
-
-.. _volume_host_failover-host-name:
-.. describe:: <host-name>
-
-    Name of volume host
-
-volume host set
----------------
-
-Set volume host properties
-
-.. program:: volume host set
-.. code:: bash
-
-    openstack volume host set
-        [--enable | --disable]
-        <host-name>
-
-.. option:: --enable
-
-    Thaw and enable the specified volume host.
-
-.. option:: --disable
-
-    Freeze and disable the specified volume host
-
-.. _volume_host_set-host-name:
-.. describe:: <host-name>
-
-    Name of volume host
+.. autoprogram-cliff:: openstack.volume.v3
+   :command: volume host *
diff --git a/doc/source/cli/command-objects/volume-qos.rst b/doc/source/cli/command-objects/volume-qos.rst
index 52c1f2d484..3475b93860 100644
--- a/doc/source/cli/command-objects/volume-qos.rst
+++ b/doc/source/cli/command-objects/volume-qos.rst
@@ -2,172 +2,7 @@
 volume qos
 ==========
 
-Block Storage v1, v2
+Block Storage v1, v2, v3
 
-volume qos associate
---------------------
-
-Associate a QoS specification to a volume type
-
-.. program:: volume qos associate
-.. code:: bash
-
-    openstack volume qos associate
-        <qos-spec>
-        <volume-type>
-
-.. _volume_qos_associate:
-.. describe:: <qos-spec>
-
-    QoS specification to modify (name or ID)
-
-.. describe:: <volume-type>
-
-    Volume type to associate the QoS (name or ID)
-
-volume qos create
------------------
-
-Create new QoS Specification
-
-.. program:: volume qos create
-.. code:: bash
-
-    openstack volume qos create
-        [--consumer <consumer>]
-        [--property <key=value> [...] ]
-        <name>
-
-.. option:: --consumer <consumer>
-
-    Consumer of the QoS. Valid consumers: 'front-end', 'back-end', 'both' (defaults to 'both')
-
-.. option:: --property <key=value>
-
-    Set a property on this QoS specification (repeat option to set multiple properties)
-
-.. _volume_qos_create-name:
-.. describe:: <name>
-
-    New QoS specification name
-
-volume qos delete
------------------
-
-Delete QoS specification
-
-.. program:: volume qos delete
-.. code:: bash
-
-    openstack volume qos delete
-         [--force]
-         <qos-spec> [<qos-spec> ...]
-
-.. option:: --force
-
-    Allow to delete in-use QoS specification(s)
-
-.. _volume_qos_delete-qos-spec:
-.. describe:: <qos-spec>
-
-    QoS specification(s) to delete (name or ID)
-
-volume qos disassociate
------------------------
-
-Disassociate a QoS specification from a volume type
-
-.. program:: volume qos disassociate
-.. code:: bash
-
-    openstack volume qos disassociate
-        --volume-type <volume-type> | --all
-        <qos-spec>
-
-.. option:: --volume-type <volume-type>
-
-    Volume type to disassociate the QoS from (name or ID)
-
-.. option:: --all
-
-    Disassociate the QoS from every volume type
-
-.. _volume_qos_disassociate-qos-spec:
-.. describe:: <qos-spec>
-
-    QoS specification to modify (name or ID)
-
-volume qos list
----------------
-
-List QoS specifications
-
-.. program:: volume qos list
-.. code:: bash
-
-    openstack volume qos list
-
-volume qos set
---------------
-
-Set QoS specification properties
-
-.. program:: volume qos set
-.. code:: bash
-
-    openstack volume qos set
-        [--no-property]
-        [--property <key=value> [...] ]
-        <qos-spec>
-
-.. option:: --no-property
-
-    Remove all properties from :ref:`\<snapshot\> <volume_qos_set-qos-spec>`
-    (specify both :option:`--no-property` and :option:`--property` to
-    remove the current properties before setting new properties.)
-
-.. option:: --property <key=value>
-
-    Property to add or modify for this QoS specification (repeat option to set multiple properties)
-
-.. _volume_qos_set-qos-spec:
-.. describe:: <qos-spec>
-
-    QoS specification to modify (name or ID)
-
-volume qos show
----------------
-
-Display QoS specification details
-
-.. program:: volume qos show
-.. code:: bash
-
-    openstack volume qos show
-        <qos-spec>
-
-.. _volume_qos_show-qos-spec:
-.. describe:: <qos-spec>
-
-   QoS specification to display (name or ID)
-
-volume qos unset
-----------------
-
-Unset QoS specification properties
-
-.. program:: volume qos unset
-.. code:: bash
-
-    openstack volume qos unset
-        [--property <key> [...] ]
-        <qos-spec>
-
-.. option:: --property <key>
-
-    Property to remove from QoS specification (repeat option to remove multiple properties)
-
-.. _volume_qos_unset-qos-spec:
-.. describe:: <qos-spec>
-
-    QoS specification to modify (name or ID)
+.. autoprogram-cliff:: openstack.volume.v3
+   :command: volume qos *
diff --git a/doc/source/cli/command-objects/volume-service.rst b/doc/source/cli/command-objects/volume-service.rst
index 0499fb9062..3283b29e29 100644
--- a/doc/source/cli/command-objects/volume-service.rst
+++ b/doc/source/cli/command-objects/volume-service.rst
@@ -2,65 +2,7 @@
 volume service
 ==============
 
-Block Storage v1, v2
+Block Storage v1, v2, v3
 
-volume service list
--------------------
-
-List volume service
-
-.. program:: volume service list
-.. code:: bash
-
-    openstack volume service list
-        [--host <host>]
-        [--service <service>]
-        [--long]
-
-.. option:: --host <host>
-
-    List services on specified host (name only)
-
-.. option:: --service <service>
-
-    List only specified service (name only)
-
-.. option:: --long
-
-    List additional fields in output
-
-volume service set
-------------------
-
-Set volume service properties
-
-.. program:: volume service set
-.. code:: bash
-
-    openstack volume service set
-        [--enable | --disable]
-        [--disable-reason <reason>]
-        <host>
-        <service>
-
-.. option:: --enable
-
-    Enable volume service
-
-.. option:: --disable
-
-    Disable volume service
-
-.. option:: --disable-reason <reason>
-
-    Reason for disabling the service
-    (should be used with :option:`--disable` option)
-
-.. _volume_service_set-host:
-.. describe:: <host>
-
-    Name of host
-
-.. describe:: <service>
-
-    Name of service (Binary name)
+.. autoprogram-cliff:: openstack.volume.v3
+   :command: volume service *
diff --git a/doc/source/cli/command-objects/volume-snapshot.rst b/doc/source/cli/command-objects/volume-snapshot.rst
index 21a8937018..be3ad303b9 100644
--- a/doc/source/cli/command-objects/volume-snapshot.rst
+++ b/doc/source/cli/command-objects/volume-snapshot.rst
@@ -2,222 +2,7 @@
 volume snapshot
 ===============
 
-Block Storage v1, v2
+Block Storage v1, v2, v3
 
-volume snapshot create
-----------------------
-
-Create new volume snapshot
-
-.. program:: volume snapshot create
-.. code:: bash
-
-    openstack volume snapshot create
-        [--volume <volume>]
-        [--description <description>]
-        [--force]
-        [--property <key=value> [...] ]
-        [--remote-source <key=value> [...]]
-        <snapshot-name>
-
-.. option:: --volume <volume>
-
-    Volume to snapshot (name or ID) (default is <snapshot-name>)
-
-.. option:: --description <description>
-
-    Description of the snapshot
-
-.. option:: --force
-
-    Create a snapshot attached to an instance. Default is False
-
-.. option:: --property <key=value>
-
-    Set a property to this snapshot (repeat option to set multiple properties)
-
-    *Volume version 2 only*
-
-.. option:: --remote-source <key=value>
-
-    The attribute(s) of the exsiting remote volume snapshot
-    (admin required) (repeat option to specify multiple attributes)
-    e.g.: '--remote-source source-name=test_name --remote-source source-id=test_id'
-
-    *Volume version 2 only*
-
-.. _volume_snapshot_create-snapshot-name:
-.. describe:: <snapshot-name>
-
-    Name of the new snapshot
-
-volume snapshot delete
-----------------------
-
-Delete volume snapshot(s)
-
-.. program:: volume snapshot delete
-.. code:: bash
-
-    openstack volume snapshot delete
-        [--force]
-        <snapshot> [<snapshot> ...]
-
-.. option:: --force
-
-    Attempt forced removal of snapshot(s), regardless of state (defaults to False)
-
-.. _volume_snapshot_delete-snapshot:
-.. describe:: <snapshot>
-
-    Snapshot(s) to delete (name or ID)
-
-volume snapshot list
---------------------
-
-List volume snapshots
-
-.. program:: volume snapshot list
-.. code:: bash
-
-    openstack volume snapshot list
-        [--all-projects]
-        [--project <project> [--project-domain <project-domain>]]
-        [--long]
-        [--limit <num-snapshots>]
-        [--marker <snapshot>]
-        [--name <name>]
-        [--status <status>]
-        [--volume <volume>]
-
-.. option:: --all-projects
-
-    Include all projects (admin only)
-
-.. option:: --project <project>
-
-    Filter results by project (name or ID) (admin only)
-
-    *Volume version 2 only*
-
-.. option:: --project-domain <project-domain>
-
-    Domain the project belongs to (name or ID).
-
-    This can be used in case collisions between project names exist.
-
-    *Volume version 2 only*
-
-.. option:: --long
-
-    List additional fields in output
-
-.. option:: --status <status>
-
-    Filters results by a status.
-    ('available', 'error', 'creating', 'deleting' or 'error_deleting')
-
-.. option:: --name <name>
-
-    Filters results by a name.
-
-.. option:: --volume <volume>
-
-    Filters results by a volume (name or ID).
-
-.. option:: --limit <num-snapshots>
-
-    Maximum number of snapshots to display
-
-    *Volume version 2 only*
-
-.. option:: --marker <snapshot>
-
-    The last snapshot ID of the previous page
-
-    *Volume version 2 only*
-
-volume snapshot set
--------------------
-
-Set volume snapshot properties
-
-.. program:: volume snapshot set
-.. code:: bash
-
-    openstack volume snapshot set
-        [--name <name>]
-        [--description <description>]
-        [--no-property]
-        [--property <key=value> [...] ]
-        [--state <state>]
-        <snapshot>
-
-.. option:: --name <name>
-
-    New snapshot name
-
-.. option:: --description <description>
-
-    New snapshot description
-
-.. option:: --no-property
-
-    Remove all properties from :ref:`\<snapshot\> <volume_snapshot_set-snapshot>`
-    (specify both :option:`--no-property` and :option:`--property` to
-    remove the current properties before setting new properties.)
-
-.. option:: --property <key=value>
-
-    Property to add or modify for this snapshot (repeat option to set multiple properties)
-
-.. option:: --state <state>
-
-    New snapshot state.
-    ("available", "error", "creating", "deleting", or "error_deleting") (admin only)
-    (This option simply changes the state of the snapshot in the database with
-    no regard to actual status, exercise caution when using)
-
-    *Volume version 2 only*
-
-.. _volume_snapshot_set-snapshot:
-.. describe:: <snapshot>
-
-    Snapshot to modify (name or ID)
-
-volume snapshot show
---------------------
-
-Display volume snapshot details
-
-.. program:: volume snapshot show
-.. code:: bash
-
-    openstack volume snapshot show
-        <snapshot>
-
-.. _volume_snapshot_show-snapshot:
-.. describe:: <snapshot>
-
-    Snapshot to display (name or ID)
-
-volume snapshot unset
----------------------
-
-Unset volume snapshot properties
-
-.. program:: volume snapshot unset
-.. code:: bash
-
-    openstack volume snapshot unset
-        [--property <key>]
-        <snapshot>
-
-.. option:: --property <key>
-
-    Property to remove from snapshot (repeat option to remove multiple properties)
-
-.. _volume_snapshot_unset-snapshot:
-.. describe:: <snapshot>
-
-    Snapshot to modify (name or ID)
+.. autoprogram-cliff:: openstack.volume.v3
+   :command: volume snapshot *
diff --git a/doc/source/cli/command-objects/volume-transfer-request.rst b/doc/source/cli/command-objects/volume-transfer-request.rst
index 23cd3d3e1b..61e38c1cf7 100644
--- a/doc/source/cli/command-objects/volume-transfer-request.rst
+++ b/doc/source/cli/command-objects/volume-transfer-request.rst
@@ -2,95 +2,7 @@
 volume transfer request
 =======================
 
-Block Storage v1, v2
+Block Storage v1, v2, v3
 
-volume transfer request accept
-------------------------------
-
-Accept volume transfer request
-
-.. program:: volume transfer request accept
-.. code:: bash
-
-    openstack volume transfer request accept
-        --auth-key <key>
-        <transfer-request-id>
-
-.. option:: --auth-key <key>
-
-    Volume transfer request authentication key
-
-.. _volume_transfer_request_accept:
-.. describe:: <transfer-request-id>
-
-    Volume transfer request to accept (ID only)
-
-    Non-admin users are only able to specify the transfer request by ID.
-
-volume transfer request create
-------------------------------
-
-Create volume transfer request
-
-.. program:: volume transfer request create
-.. code:: bash
-
-    openstack volume transfer request create
-        [--name <name>]
-        <volume>
-
-.. option:: --name <name>
-
-    New transfer request name (default to None)
-
-.. _volume_transfer_request_create-volume:
-.. describe:: <volume>
-
-    Volume to transfer (name or ID)
-
-volume transfer request delete
-------------------------------
-
-Delete volume transfer request(s)
-
-.. program:: volume transfer request delete
-.. code:: bash
-
-    openstack volume transfer request delete
-        <transfer-request> [<transfer-request> ...]
-
-.. _volume_transfer_request_delete-transfer-request:
-.. describe:: <transfer-request>
-
-    Volume transfer request(s) to delete (name or ID)
-
-volume transfer request list
-----------------------------
-
-Lists all volume transfer requests
-
-.. program:: volume transfer request list
-.. code:: bash
-
-    openstack volume transfer request list
-        --all-projects
-
-.. option:: --all-projects
-
-    Include all projects (admin only)
-
-volume transfer request show
-----------------------------
-
-Show volume transfer request details
-
-.. program:: volume transfer request show
-.. code:: bash
-
-    openstack volume transfer request show
-        <transfer-request>
-
-.. _volume_transfer_request_show-transfer-request:
-.. describe:: <transfer-request>
-
-    Volume transfer request to display (name or ID)
+.. autoprogram-cliff:: openstack.volume.v3
+   :command: volume transfer request *
diff --git a/doc/source/cli/command-objects/volume-type.rst b/doc/source/cli/command-objects/volume-type.rst
index 2b5aff9940..1a74a8a66c 100644
--- a/doc/source/cli/command-objects/volume-type.rst
+++ b/doc/source/cli/command-objects/volume-type.rst
@@ -2,290 +2,7 @@
 volume type
 ===========
 
-Block Storage v1, v2
+Block Storage v1, v2, v3
 
-volume type create
-------------------
-
-Create new volume type
-
-.. program:: volume type create
-.. code:: bash
-
-    openstack volume type create
-        [--description <description>]
-        [--public | --private]
-        [--property <key=value> [...] ]
-        [--project <project>]
-        [--project-domain <project-domain>]
-        [--encryption-provider <provider>]
-        [--encryption-cipher <cipher>]
-        [--encryption-key-size <key-size>]
-        [--encryption-control-location <control-location>]
-        <name>
-
-.. option:: --description <description>
-
-    Volume type description
-
-    .. versionadded:: 2
-
-.. option:: --public
-
-    Volume type is accessible to the public
-
-    .. versionadded:: 2
-
-.. option:: --private
-
-    Volume type is not accessible to the public
-
-    .. versionadded:: 2
-
-.. option:: --property <key=value>
-
-    Set a property on this volume type (repeat option to set multiple properties)
-
-.. option:: --project <project>
-
-    Allow <project> to access private type (name or ID)
-    (Must be used with :option:`--private` option)
-
-    *Volume version 2 only*
-
-.. option:: --project-domain <project-domain>
-
-    Domain the project belongs to (name or ID).
-    This can be used in case collisions between project names exist.
-
-    *Volume version 2 only*
-
-.. option:: --encryption-provider <provider>
-
-    Set the encryption provider format for this volume type
-    (e.g "luks" or "plain") (admin only)
-
-    This option is required when setting encryption type of a volume.
-    Consider using other encryption options such as: :option:`--encryption-cipher`,
-    :option:`--encryption-key-size` and :option:`--encryption-control-location`
-
-.. option:: --encryption-cipher <cipher>
-
-    Set the encryption algorithm or mode for this volume type
-    (e.g "aes-xts-plain64") (admin only)
-
-.. option:: --encryption-key-size <key-size>
-
-    Set the size of the encryption key of this volume type
-    (e.g "128" or "256") (admin only)
-
-.. option:: --encryption-control-location <control-location>
-
-    Set the notional service where the encryption is performed
-    ("front-end" or "back-end") (admin only)
-
-    The default value for this option is "front-end" when setting encryption type of
-    a volume. Consider using other encryption options such as: :option:`--encryption-cipher`,
-    :option:`--encryption-key-size` and :option:`--encryption-provider`
-
-.. _volume_type_create-name:
-.. describe:: <name>
-
-    Volume type name
-
-volume type delete
-------------------
-
-Delete volume type(s)
-
-.. program:: volume type delete
-.. code:: bash
-
-    openstack volume type delete
-        <volume-type> [<volume-type> ...]
-
-.. _volume_type_delete-volume-type:
-.. describe:: <volume-type>
-
-    Volume type(s) to delete (name or ID)
-
-volume type list
-----------------
-
-List volume types
-
-.. program:: volume type list
-.. code:: bash
-
-    openstack volume type list
-        [--long]
-        [--default | --public | --private]
-        [--encryption-type]
-
-.. option:: --long
-
-    List additional fields in output
-
-.. option:: --public
-
-    List only public types
-
-    *Volume version 2 only*
-
-.. option:: --private
-
-    List only private types (admin only)
-
-    *Volume version 2 only*
-
-.. option:: --default
-
-    List the default volume type
-
-    *Volume version 2 only*
-
-.. option:: --encryption-type
-
-    Display encryption information for each volume type (admin only)
-
-volume type set
----------------
-
-Set volume type properties
-
-.. program:: volume type set
-.. code:: bash
-
-    openstack volume type set
-        [--name <name>]
-        [--description <description>]
-        [--property <key=value> [...] ]
-        [--project <project>]
-        [--project-domain <project-domain>]
-        [--encryption-provider <provider>]
-        [--encryption-cipher <cipher>]
-        [--encryption-key-size <key-size>]
-        [--encryption-control-location <control-location>]
-        <volume-type>
-
-.. option:: --name <name>
-
-    Set volume type name
-
-    .. versionadded:: 2
-
-.. option:: --description <description>
-
-    Set volume type description
-
-    .. versionadded:: 2
-
-.. option:: --project <project>
-
-    Set volume type access to project (name or ID) (admin only)
-
-    *Volume version 2 only*
-
-.. option:: --project-domain <project-domain>
-
-    Domain the project belongs to (name or ID).
-    This can be used in case collisions between project names exist.
-
-.. option:: --property <key=value>
-
-    Set a property on this volume type (repeat option to set multiple properties)
-
-.. option:: --encryption-provider <provider>
-
-    Set the encryption provider format for this volume type
-    (e.g "luks" or "plain") (admin only)
-
-    This option is required when setting encryption type of a volume for the first time.
-    Consider using other encryption options such as: :option:`--encryption-cipher`,
-    :option:`--encryption-key-size` and :option:`--encryption-control-location`
-
-.. option:: --encryption-cipher <cipher>
-
-    Set the encryption algorithm or mode for this volume type
-    (e.g "aes-xts-plain64") (admin only)
-
-.. option:: --encryption-key-size <key-size>
-
-    Set the size of the encryption key of this volume type
-    (e.g "128" or "256") (admin only)
-
-.. option:: --encryption-control-location <control-location>
-
-    Set the notional service where the encryption is performed
-    ("front-end" or "back-end") (admin only)
-
-    The default value for this option is "front-end" when setting encryption type of
-    a volume for the first time. Consider using other encryption options such as:
-    :option:`--encryption-cipher`, :option:`--encryption-key-size` and :option:`--encryption-provider`
-
-.. _volume_type_set-volume-type:
-.. describe:: <volume-type>
-
-    Volume type to modify (name or ID)
-
-volume type show
-----------------
-
-Display volume type details
-
-.. program:: volume type show
-.. code:: bash
-
-    openstack volume type show
-        [--encryption-type]
-        <volume-type>
-
-.. option:: --encryption-type
-
-    Display encryption information of this volume type (admin only)
-
-.. _volume_type_show-volume-type:
-.. describe:: <volume-type>
-
-    Volume type to display (name or ID)
-
-volume type unset
------------------
-
-Unset volume type properties
-
-.. program:: volume type unset
-.. code:: bash
-
-    openstack volume type unset
-        [--property <key> [...] ]
-        [--project <project>]
-        [--project-domain <project-domain>]
-        [--encryption-type]
-        <volume-type>
-
-.. option:: --property <key>
-
-    Property to remove from volume type (repeat option to remove multiple properties)
-
-.. option:: --project <project>
-
-    Removes volume type access from project (name or ID) (admin only)
-
-    *Volume version 2 only*
-
-.. option:: --project-domain <project-domain>
-
-    Domain the project belongs to (name or ID).
-    This can be used in case collisions between project names exist.
-
-    *Volume version 2 only*
-
-.. option:: --encryption-type
-
-    Remove the encryption type for this volume type (admin only)
-
-.. _volume_type_unset-volume-type:
-.. describe:: <volume-type>
-
-    Volume type to modify (name or ID)
+.. autoprogram-cliff:: openstack.volume.v3
+   :command: volume type *