From 8659ff0ef56e26194cd63b5bb33470291b301cc4 Mon Sep 17 00:00:00 2001
From: Sheel Rana <ranasheel2000@gmail.com>
Date: Fri, 13 May 2016 00:33:12 +0530
Subject: [PATCH] WADL to RST migration in cinder tree

This patch is for converting API Reference to RST and host it
in the Cinder tree.
This patch contains all the RST for cinder to bring over to their
repos to begin building API reference information from within.
This contains .inc files which have all the contents of the .rst files
but are grouped together for easier editing

This is the results of the RST conversion from WADL. It creates a
single index plus a bunch of included files which represent sections
of the API.

Cleaning task will be done once this part is merged.

As we have removed XML API support in Newton release, we need to
remove XML from API reference as well.

But we still have installations which are using XML.
So implementation plan is to first merge this patch in Newton release
keeping XML for now, then I will backport same to stable branches.
After that I will remove same from Newton release to match API
reference with actual API implementation.

Implements: bp api-reference-to-rst
Change-Id: I865ac922538bfa5bd45c24eb4bc49f5e966dc811
---
 .gitignore                                    |    3 +
 api-ref/ext/__init__.py                       |    0
 api-ref/ext/rest_parameters.py                |  352 ++++
 api-ref/v1/source/_static/api-site.css        |   81 +
 api-ref/v1/source/_static/api-site.js         |  110 ++
 api-ref/v1/source/_static/bootstrap.min.css   |    5 +
 api-ref/v1/source/_static/bootstrap.min.js    |    6 +
 .../_static/glyphicons-halflings-regular.ttf  |  Bin 0 -> 45404 bytes
 .../_static/glyphicons-halflings-regular.woff |  Bin 0 -> 23424 bytes
 api-ref/v1/source/conf.py                     |  217 +++
 api-ref/v1/source/index.rst                   |   13 +
 api-ref/v1/source/os-quota-sets-v1.inc        |  402 +++++
 api-ref/v1/source/parameters.yaml             |  642 +++++++
 .../quotas-defaults-show-response.json        |   17 +
 .../samples/quotas-defaults-show-response.xml |   15 +
 .../source/samples/quotas-show-response.json  |   17 +
 .../source/samples/quotas-show-response.xml   |   15 +
 .../source/samples/quotas-update-request.json |    5 +
 .../source/samples/quotas-update-request.xml  |    4 +
 .../samples/quotas-update-response.json       |   16 +
 .../source/samples/quotas-update-response.xml |   15 +
 .../samples/snapshot-create-request.json      |    8 +
 .../samples/snapshot-create-request.xml       |    6 +
 .../snapshot-metadata-show-response.json      |   16 +
 .../snapshot-metadata-show-response.xml       |   13 +
 .../snapshot-metadata-update-request.json     |    5 +
 .../snapshot-metadata-update-request.xml      |    4 +
 .../snapshot-metadata-update-response.json    |    5 +
 .../snapshot-metadata-update-response.xml     |    4 +
 .../samples/snapshot-show-response.json       |   11 +
 .../source/samples/snapshot-show-response.xml |    9 +
 .../samples/snapshots-list-response.json      |   26 +
 .../samples/snapshots-list-response.xml       |   21 +
 .../samples/user-quotas-delete-response.json  |    0
 .../user-quotas-show-detail-response.json     |   64 +
 .../samples/user-quotas-show-response.json    |   17 +
 .../samples/user-quotas-show-response.xml     |   15 +
 .../samples/user-quotas-update-request.json   |    6 +
 .../samples/user-quotas-update-request.xml    |    5 +
 .../samples/user-quotas-update-response.json  |   16 +
 .../samples/user-quotas-update-response.xml   |   15 +
 .../source/samples/version-show-response.json |   28 +
 .../samples/versions-list-response.json       |   26 +
 .../source/samples/volume-create-request.json |   12 +
 .../source/samples/volume-create-request.xml  |   11 +
 .../source/samples/volume-show-response.json  |   27 +
 .../source/samples/volume-show-response.xml   |   15 +
 .../samples/volume-type-create-request.json   |    8 +
 .../samples/volume-type-create-request.xml    |    7 +
 .../samples/volume-type-show-response.json    |    9 +
 .../samples/volume-type-show-response.xml     |    8 +
 .../samples/volume-types-list-response.json   |   16 +
 .../samples/volume-types-list-response.xml    |   11 +
 .../source/samples/volumes-list-response.json |   41 +
 .../source/samples/volumes-list-response.xml  |   25 +
 api-ref/v1/source/volumes-v1-snapshots.inc    |  188 ++
 api-ref/v1/source/volumes-v1-types.inc        |  218 +++
 api-ref/v1/source/volumes-v1-versions.inc     |   54 +
 api-ref/v1/source/volumes-v1-volumes.inc      |  234 +++
 api-ref/v2/source/_static/api-site.css        |   81 +
 api-ref/v2/source/_static/api-site.js         |  110 ++
 api-ref/v2/source/_static/bootstrap.min.css   |    5 +
 api-ref/v2/source/_static/bootstrap.min.js    |    6 +
 .../_static/glyphicons-halflings-regular.ttf  |  Bin 0 -> 45404 bytes
 .../_static/glyphicons-halflings-regular.woff |  Bin 0 -> 23424 bytes
 api-ref/v2/source/api-versions.inc            |   32 +
 api-ref/v2/source/capabilities-v2.inc         |   48 +
 api-ref/v2/source/conf.py                     |  217 +++
 api-ref/v2/source/consistencygroups-v2.inc    |  253 +++
 api-ref/v2/source/ext-backups-actions-v2.inc  |   38 +
 api-ref/v2/source/ext-backups.inc             |  276 +++
 api-ref/v2/source/index.rst                   |   28 +
 api-ref/v2/source/limits.inc                  |   57 +
 api-ref/v2/source/os-cgsnapshots-v2.inc       |  179 ++
 api-ref/v2/source/os-vol-image-meta-v2.inc    |   46 +
 api-ref/v2/source/os-vol-pool-v2.inc          |   50 +
 api-ref/v2/source/os-vol-transfer-v2.inc      |  217 +++
 api-ref/v2/source/parameters.yaml             | 1570 +++++++++++++++++
 api-ref/v2/source/qos-specs-v2-qos-specs.inc  |  315 ++++
 api-ref/v2/source/quota-sets.inc              |  407 +++++
 .../backend-capabilities-response.json        |   33 +
 .../source/samples/backup-create-request.json |    9 +
 .../samples/backup-create-response.json       |   16 +
 .../samples/backup-force-delete-request.json  |    3 +
 .../backup-record-export-response.json        |    6 +
 .../samples/backup-record-import-request.json |    6 +
 .../backup-record-import-response.json        |   16 +
 .../samples/backup-restore-request.json       |    6 +
 .../samples/backup-restore-response.json      |    6 +
 .../source/samples/backup-show-response.json  |   27 +
 .../backups-list-detailed-response.json       |   54 +
 .../source/samples/backups-list-response.json |   32 +
 .../samples/cgsnapshots-create-request.json   |   10 +
 .../samples/cgsnapshots-create-response.json  |    6 +
 .../cgsnapshots-list-detailed-response.json   |   20 +
 .../samples/cgsnapshots-list-response.json    |   12 +
 .../samples/cgsnapshots-show-response.json    |   10 +
 ...istency-group-create-from-src-request.json |   11 +
 .../consistency-group-create-request.json     |   14 +
 .../consistency-group-create-response.json    |    6 +
 .../consistency-group-delete-request.json     |    5 +
 .../consistency-group-show-response.json      |   13 +
 .../consistency-group-show-response.xml       |   14 +
 .../consistency-group-update-request.json     |    8 +
 ...istency-groups-list-detailed-response.json |   26 +
 ...sistency-groups-list-detailed-response.xml |   25 +
 .../consistency-groups-list-response.json     |   12 +
 .../samples/extensions-list-response.json     |  212 +++
 .../samples/extensions-list-response.xml      |  165 ++
 .../source/samples/host-attach-request.json   |    5 +
 .../samples/image-metadata-show-request.json  |   18 +
 .../samples/image-metadata-show-response.json |   33 +
 .../source/samples/limits-show-response.json  |   17 +
 .../source/samples/limits-show-response.xml   |   17 +
 .../samples/pools-list-detailed-response.json |   30 +
 .../v2/source/samples/qos-create-request.json |    7 +
 .../v2/source/samples/qos-create-request.xml  |    2 +
 .../source/samples/qos-create-response.json   |   21 +
 .../v2/source/samples/qos-create-response.xml |    9 +
 .../v2/source/samples/qos-list-response.json  |   22 +
 .../v2/source/samples/qos-list-response.xml   |   19 +
 .../v2/source/samples/qos-show-response.json  |   21 +
 .../v2/source/samples/qos-show-response.xml   |   11 +
 .../v2/source/samples/qos-unset-request.json  |    5 +
 .../v2/source/samples/qos-unset-request.xml   |    4 +
 .../v2/source/samples/qos-unset-response.json |    0
 .../v2/source/samples/qos-update-request.json |    5 +
 .../v2/source/samples/qos-update-request.xml  |    2 +
 .../source/samples/qos-update-response.json   |    5 +
 .../v2/source/samples/qos-update-response.xml |    4 +
 .../v2/source/samples/qos_show_response.json  |    9 +
 .../v2/source/samples/qos_show_response.xml   |    6 +
 .../samples/quotas-defaults-show-response.xml |   15 +
 .../samples/quotas-delete-response.json       |    0
 .../quotas-show-defaults-response.json        |    7 +
 .../samples/quotas-show-defaults-response.xml |    6 +
 .../source/samples/quotas-show-response.json  |    7 +
 .../source/samples/quotas-show-response.xml   |    6 +
 .../source/samples/quotas-update-request.json |    5 +
 .../source/samples/quotas-update-request.xml  |    4 +
 .../samples/quotas-update-response.json       |    5 +
 .../source/samples/quotas-update-response.xml |    6 +
 .../quotas-user-show-detailed-response.json   |   19 +
 .../samples/quotas-user-show-response.json    |    7 +
 .../samples/quotas-user-show-response.xml     |    6 +
 .../samples/snapshot-create-request.json      |    8 +
 .../samples/snapshot-create-request.xml       |    5 +
 .../samples/snapshot-create-response.json     |   12 +
 .../samples/snapshot-create-response.xml      |    7 +
 .../snapshot-metadata-show-response.json      |    5 +
 .../snapshot-metadata-show-response.xml       |    4 +
 .../snapshot-metadata-update-request.json     |    5 +
 .../snapshot-metadata-update-request.xml      |    4 +
 .../snapshot-metadata-update-response.json    |    5 +
 .../snapshot-metadata-update-response.xml     |    4 +
 .../samples/snapshot-show-response.json       |   14 +
 .../source/samples/snapshot-show-response.xml |   11 +
 .../samples/snapshot-update-request.json      |    6 +
 .../samples/snapshot-update-request.xml       |    4 +
 .../samples/snapshot-update-response.json     |   11 +
 .../samples/snapshot-update-response.xml      |   14 +
 .../snapshots-list-detailed-response.json     |   18 +
 .../snapshots-list-detailed-response.xml      |   16 +
 .../samples/snapshots-list-response.json      |   16 +
 .../samples/snapshots-list-response.xml       |   13 +
 .../samples/user-quotas-show-response.json    |   17 +
 .../samples/user-quotas-show-response.xml     |   15 +
 .../samples/user-quotas-update-request.json   |    6 +
 .../samples/user-quotas-update-request.xml    |    5 +
 .../samples/user-quotas-update-response.json  |   16 +
 .../samples/user-quotas-update-response.xml   |   15 +
 .../source/samples/version-show-response.json |   33 +
 .../source/samples/version-show-response.xml  |   17 +
 .../samples/version-v2-show-response.json     |   44 +
 api-ref/v2/source/samples/versions-resp.json  |    0
 .../v2/source/samples/versions-response.json  |   76 +
 .../v2/source/samples/versions-response.xml   |   25 +
 .../source/samples/volume-attach-request.json |    6 +
 .../source/samples/volume-create-request.json |   16 +
 .../source/samples/volume-create-request.xml  |    5 +
 .../samples/volume-create-response.json       |   34 +
 .../source/samples/volume-create-response.xml |   11 +
 .../source/samples/volume-extend-request.json |    5 +
 .../samples/volume-force-detach-request.json  |    8 +
 .../volume-image-metadata-set-request.json    |   10 +
 .../volume-image-metadata-unset-request.json  |    5 +
 .../source/samples/volume-manage-request.json |   18 +
 .../samples/volume-manage-response.json       |   33 +
 .../volume-metadata-create-request.json       |    5 +
 .../volume-metadata-create-response.json      |    5 +
 .../volume-metadata-show-response.json        |    3 +
 .../samples/volume-metadata-show-response.xml |    2 +
 .../volume-metadata-update-request.json       |    5 +
 .../volume-metadata-update-request.xml        |    4 +
 .../volume-metadata-update-response.json      |    5 +
 .../volume-metadata-update-response.xml       |    4 +
 .../volume-replica-promote-request.json       |    3 +
 .../volume-replica-reenable-request.json      |    3 +
 .../source/samples/volume-show-response.json  |   33 +
 .../source/samples/volume-show-response.xml   |   19 +
 .../samples/volume-status-reset-request.json  |    7 +
 .../volume-transfer-accept-request.json       |    5 +
 .../volume-transfer-accept-response.json      |   17 +
 .../volume-transfer-create-request.json       |    6 +
 .../volume-transfer-create-response.json      |   19 +
 .../volume-transfer-show-response.json        |   18 +
 ...lume-transfers-list-detailed-response.json |   36 +
 .../volume-transfers-list-response.json       |   34 +
 .../volume-type-access-add-request.json       |    5 +
 .../volume-type-access-add-request.xml        |    4 +
 .../volume-type-access-delete-request.json    |    5 +
 .../volume-type-access-delete-request.xml     |    4 +
 .../volume-type-access-list-response.json     |    6 +
 .../samples/volume-type-create-request.json   |   10 +
 .../samples/volume-type-create-request.xml    |    6 +
 .../samples/volume-type-show-request.json     |    9 +
 .../samples/volume-type-show-request.xml      |    8 +
 .../samples/volume-type-show-response.json    |   11 +
 .../samples/volume-type-show-response.xml     |    9 +
 .../samples/volume-type-update-request.json   |   10 +
 .../samples/volume-type-update-request.xml    |    6 +
 .../samples/volume-types-list-response.json   |   16 +
 .../samples/volume-types-list-response.xml    |   11 +
 .../samples/volume-unmanage-request.json      |    3 +
 .../source/samples/volume-update-request.json |    6 +
 .../source/samples/volume-update-request.xml  |    4 +
 .../samples/volume-update-response.json       |   36 +
 .../source/samples/volume-update-response.xml |   13 +
 .../volumes-list-detailed-response.json       |  102 ++
 .../volumes-list-detailed-response.xml        |   31 +
 .../source/samples/volumes-list-response.json |   32 +
 .../source/samples/volumes-list-response.xml  |   12 +
 api-ref/v2/source/volume-manage.inc           |   50 +
 api-ref/v2/source/volume-type-access.inc      |  103 ++
 api-ref/v2/source/volumes-v2-extensions.inc   |   52 +
 api-ref/v2/source/volumes-v2-snapshots.inc    |  359 ++++
 api-ref/v2/source/volumes-v2-types.inc        |  273 +++
 api-ref/v2/source/volumes-v2-versions.inc     |   67 +
 .../v2/source/volumes-v2-volumes-actions.inc  |  333 ++++
 api-ref/v2/source/volumes-v2-volumes.inc      |  570 ++++++
 tox.ini                                       |    9 +
 241 files changed, 11232 insertions(+)
 create mode 100644 api-ref/ext/__init__.py
 create mode 100644 api-ref/ext/rest_parameters.py
 create mode 100644 api-ref/v1/source/_static/api-site.css
 create mode 100644 api-ref/v1/source/_static/api-site.js
 create mode 100644 api-ref/v1/source/_static/bootstrap.min.css
 create mode 100644 api-ref/v1/source/_static/bootstrap.min.js
 create mode 100644 api-ref/v1/source/_static/glyphicons-halflings-regular.ttf
 create mode 100644 api-ref/v1/source/_static/glyphicons-halflings-regular.woff
 create mode 100644 api-ref/v1/source/conf.py
 create mode 100644 api-ref/v1/source/index.rst
 create mode 100644 api-ref/v1/source/os-quota-sets-v1.inc
 create mode 100644 api-ref/v1/source/parameters.yaml
 create mode 100644 api-ref/v1/source/samples/quotas-defaults-show-response.json
 create mode 100644 api-ref/v1/source/samples/quotas-defaults-show-response.xml
 create mode 100644 api-ref/v1/source/samples/quotas-show-response.json
 create mode 100644 api-ref/v1/source/samples/quotas-show-response.xml
 create mode 100644 api-ref/v1/source/samples/quotas-update-request.json
 create mode 100644 api-ref/v1/source/samples/quotas-update-request.xml
 create mode 100644 api-ref/v1/source/samples/quotas-update-response.json
 create mode 100644 api-ref/v1/source/samples/quotas-update-response.xml
 create mode 100644 api-ref/v1/source/samples/snapshot-create-request.json
 create mode 100644 api-ref/v1/source/samples/snapshot-create-request.xml
 create mode 100644 api-ref/v1/source/samples/snapshot-metadata-show-response.json
 create mode 100644 api-ref/v1/source/samples/snapshot-metadata-show-response.xml
 create mode 100644 api-ref/v1/source/samples/snapshot-metadata-update-request.json
 create mode 100644 api-ref/v1/source/samples/snapshot-metadata-update-request.xml
 create mode 100644 api-ref/v1/source/samples/snapshot-metadata-update-response.json
 create mode 100644 api-ref/v1/source/samples/snapshot-metadata-update-response.xml
 create mode 100644 api-ref/v1/source/samples/snapshot-show-response.json
 create mode 100644 api-ref/v1/source/samples/snapshot-show-response.xml
 create mode 100644 api-ref/v1/source/samples/snapshots-list-response.json
 create mode 100644 api-ref/v1/source/samples/snapshots-list-response.xml
 create mode 100644 api-ref/v1/source/samples/user-quotas-delete-response.json
 create mode 100644 api-ref/v1/source/samples/user-quotas-show-detail-response.json
 create mode 100644 api-ref/v1/source/samples/user-quotas-show-response.json
 create mode 100644 api-ref/v1/source/samples/user-quotas-show-response.xml
 create mode 100644 api-ref/v1/source/samples/user-quotas-update-request.json
 create mode 100644 api-ref/v1/source/samples/user-quotas-update-request.xml
 create mode 100644 api-ref/v1/source/samples/user-quotas-update-response.json
 create mode 100644 api-ref/v1/source/samples/user-quotas-update-response.xml
 create mode 100644 api-ref/v1/source/samples/version-show-response.json
 create mode 100644 api-ref/v1/source/samples/versions-list-response.json
 create mode 100644 api-ref/v1/source/samples/volume-create-request.json
 create mode 100644 api-ref/v1/source/samples/volume-create-request.xml
 create mode 100644 api-ref/v1/source/samples/volume-show-response.json
 create mode 100644 api-ref/v1/source/samples/volume-show-response.xml
 create mode 100644 api-ref/v1/source/samples/volume-type-create-request.json
 create mode 100644 api-ref/v1/source/samples/volume-type-create-request.xml
 create mode 100644 api-ref/v1/source/samples/volume-type-show-response.json
 create mode 100644 api-ref/v1/source/samples/volume-type-show-response.xml
 create mode 100644 api-ref/v1/source/samples/volume-types-list-response.json
 create mode 100644 api-ref/v1/source/samples/volume-types-list-response.xml
 create mode 100644 api-ref/v1/source/samples/volumes-list-response.json
 create mode 100644 api-ref/v1/source/samples/volumes-list-response.xml
 create mode 100644 api-ref/v1/source/volumes-v1-snapshots.inc
 create mode 100644 api-ref/v1/source/volumes-v1-types.inc
 create mode 100644 api-ref/v1/source/volumes-v1-versions.inc
 create mode 100644 api-ref/v1/source/volumes-v1-volumes.inc
 create mode 100644 api-ref/v2/source/_static/api-site.css
 create mode 100644 api-ref/v2/source/_static/api-site.js
 create mode 100644 api-ref/v2/source/_static/bootstrap.min.css
 create mode 100644 api-ref/v2/source/_static/bootstrap.min.js
 create mode 100644 api-ref/v2/source/_static/glyphicons-halflings-regular.ttf
 create mode 100644 api-ref/v2/source/_static/glyphicons-halflings-regular.woff
 create mode 100644 api-ref/v2/source/api-versions.inc
 create mode 100644 api-ref/v2/source/capabilities-v2.inc
 create mode 100644 api-ref/v2/source/conf.py
 create mode 100644 api-ref/v2/source/consistencygroups-v2.inc
 create mode 100644 api-ref/v2/source/ext-backups-actions-v2.inc
 create mode 100644 api-ref/v2/source/ext-backups.inc
 create mode 100644 api-ref/v2/source/index.rst
 create mode 100644 api-ref/v2/source/limits.inc
 create mode 100644 api-ref/v2/source/os-cgsnapshots-v2.inc
 create mode 100644 api-ref/v2/source/os-vol-image-meta-v2.inc
 create mode 100644 api-ref/v2/source/os-vol-pool-v2.inc
 create mode 100644 api-ref/v2/source/os-vol-transfer-v2.inc
 create mode 100644 api-ref/v2/source/parameters.yaml
 create mode 100644 api-ref/v2/source/qos-specs-v2-qos-specs.inc
 create mode 100644 api-ref/v2/source/quota-sets.inc
 create mode 100644 api-ref/v2/source/samples/backend-capabilities-response.json
 create mode 100644 api-ref/v2/source/samples/backup-create-request.json
 create mode 100644 api-ref/v2/source/samples/backup-create-response.json
 create mode 100644 api-ref/v2/source/samples/backup-force-delete-request.json
 create mode 100644 api-ref/v2/source/samples/backup-record-export-response.json
 create mode 100644 api-ref/v2/source/samples/backup-record-import-request.json
 create mode 100644 api-ref/v2/source/samples/backup-record-import-response.json
 create mode 100644 api-ref/v2/source/samples/backup-restore-request.json
 create mode 100644 api-ref/v2/source/samples/backup-restore-response.json
 create mode 100644 api-ref/v2/source/samples/backup-show-response.json
 create mode 100644 api-ref/v2/source/samples/backups-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/backups-list-response.json
 create mode 100644 api-ref/v2/source/samples/cgsnapshots-create-request.json
 create mode 100644 api-ref/v2/source/samples/cgsnapshots-create-response.json
 create mode 100644 api-ref/v2/source/samples/cgsnapshots-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/cgsnapshots-list-response.json
 create mode 100644 api-ref/v2/source/samples/cgsnapshots-show-response.json
 create mode 100644 api-ref/v2/source/samples/consistency-group-create-from-src-request.json
 create mode 100644 api-ref/v2/source/samples/consistency-group-create-request.json
 create mode 100644 api-ref/v2/source/samples/consistency-group-create-response.json
 create mode 100644 api-ref/v2/source/samples/consistency-group-delete-request.json
 create mode 100644 api-ref/v2/source/samples/consistency-group-show-response.json
 create mode 100644 api-ref/v2/source/samples/consistency-group-show-response.xml
 create mode 100644 api-ref/v2/source/samples/consistency-group-update-request.json
 create mode 100644 api-ref/v2/source/samples/consistency-groups-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/consistency-groups-list-detailed-response.xml
 create mode 100644 api-ref/v2/source/samples/consistency-groups-list-response.json
 create mode 100644 api-ref/v2/source/samples/extensions-list-response.json
 create mode 100644 api-ref/v2/source/samples/extensions-list-response.xml
 create mode 100644 api-ref/v2/source/samples/host-attach-request.json
 create mode 100644 api-ref/v2/source/samples/image-metadata-show-request.json
 create mode 100644 api-ref/v2/source/samples/image-metadata-show-response.json
 create mode 100644 api-ref/v2/source/samples/limits-show-response.json
 create mode 100644 api-ref/v2/source/samples/limits-show-response.xml
 create mode 100644 api-ref/v2/source/samples/pools-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/qos-create-request.json
 create mode 100644 api-ref/v2/source/samples/qos-create-request.xml
 create mode 100644 api-ref/v2/source/samples/qos-create-response.json
 create mode 100644 api-ref/v2/source/samples/qos-create-response.xml
 create mode 100644 api-ref/v2/source/samples/qos-list-response.json
 create mode 100644 api-ref/v2/source/samples/qos-list-response.xml
 create mode 100644 api-ref/v2/source/samples/qos-show-response.json
 create mode 100644 api-ref/v2/source/samples/qos-show-response.xml
 create mode 100644 api-ref/v2/source/samples/qos-unset-request.json
 create mode 100644 api-ref/v2/source/samples/qos-unset-request.xml
 create mode 100644 api-ref/v2/source/samples/qos-unset-response.json
 create mode 100644 api-ref/v2/source/samples/qos-update-request.json
 create mode 100644 api-ref/v2/source/samples/qos-update-request.xml
 create mode 100644 api-ref/v2/source/samples/qos-update-response.json
 create mode 100644 api-ref/v2/source/samples/qos-update-response.xml
 create mode 100644 api-ref/v2/source/samples/qos_show_response.json
 create mode 100644 api-ref/v2/source/samples/qos_show_response.xml
 create mode 100644 api-ref/v2/source/samples/quotas-defaults-show-response.xml
 create mode 100644 api-ref/v2/source/samples/quotas-delete-response.json
 create mode 100644 api-ref/v2/source/samples/quotas-show-defaults-response.json
 create mode 100644 api-ref/v2/source/samples/quotas-show-defaults-response.xml
 create mode 100644 api-ref/v2/source/samples/quotas-show-response.json
 create mode 100644 api-ref/v2/source/samples/quotas-show-response.xml
 create mode 100644 api-ref/v2/source/samples/quotas-update-request.json
 create mode 100644 api-ref/v2/source/samples/quotas-update-request.xml
 create mode 100644 api-ref/v2/source/samples/quotas-update-response.json
 create mode 100644 api-ref/v2/source/samples/quotas-update-response.xml
 create mode 100644 api-ref/v2/source/samples/quotas-user-show-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/quotas-user-show-response.json
 create mode 100644 api-ref/v2/source/samples/quotas-user-show-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-create-request.json
 create mode 100644 api-ref/v2/source/samples/snapshot-create-request.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-create-response.json
 create mode 100644 api-ref/v2/source/samples/snapshot-create-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-metadata-show-response.json
 create mode 100644 api-ref/v2/source/samples/snapshot-metadata-show-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-metadata-update-request.json
 create mode 100644 api-ref/v2/source/samples/snapshot-metadata-update-request.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-metadata-update-response.json
 create mode 100644 api-ref/v2/source/samples/snapshot-metadata-update-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-show-response.json
 create mode 100644 api-ref/v2/source/samples/snapshot-show-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-update-request.json
 create mode 100644 api-ref/v2/source/samples/snapshot-update-request.xml
 create mode 100644 api-ref/v2/source/samples/snapshot-update-response.json
 create mode 100644 api-ref/v2/source/samples/snapshot-update-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshots-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/snapshots-list-detailed-response.xml
 create mode 100644 api-ref/v2/source/samples/snapshots-list-response.json
 create mode 100644 api-ref/v2/source/samples/snapshots-list-response.xml
 create mode 100644 api-ref/v2/source/samples/user-quotas-show-response.json
 create mode 100644 api-ref/v2/source/samples/user-quotas-show-response.xml
 create mode 100644 api-ref/v2/source/samples/user-quotas-update-request.json
 create mode 100644 api-ref/v2/source/samples/user-quotas-update-request.xml
 create mode 100644 api-ref/v2/source/samples/user-quotas-update-response.json
 create mode 100644 api-ref/v2/source/samples/user-quotas-update-response.xml
 create mode 100644 api-ref/v2/source/samples/version-show-response.json
 create mode 100644 api-ref/v2/source/samples/version-show-response.xml
 create mode 100644 api-ref/v2/source/samples/version-v2-show-response.json
 create mode 100644 api-ref/v2/source/samples/versions-resp.json
 create mode 100644 api-ref/v2/source/samples/versions-response.json
 create mode 100644 api-ref/v2/source/samples/versions-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-attach-request.json
 create mode 100644 api-ref/v2/source/samples/volume-create-request.json
 create mode 100644 api-ref/v2/source/samples/volume-create-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-create-response.json
 create mode 100644 api-ref/v2/source/samples/volume-create-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-extend-request.json
 create mode 100644 api-ref/v2/source/samples/volume-force-detach-request.json
 create mode 100644 api-ref/v2/source/samples/volume-image-metadata-set-request.json
 create mode 100644 api-ref/v2/source/samples/volume-image-metadata-unset-request.json
 create mode 100644 api-ref/v2/source/samples/volume-manage-request.json
 create mode 100644 api-ref/v2/source/samples/volume-manage-response.json
 create mode 100644 api-ref/v2/source/samples/volume-metadata-create-request.json
 create mode 100644 api-ref/v2/source/samples/volume-metadata-create-response.json
 create mode 100644 api-ref/v2/source/samples/volume-metadata-show-response.json
 create mode 100644 api-ref/v2/source/samples/volume-metadata-show-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-metadata-update-request.json
 create mode 100644 api-ref/v2/source/samples/volume-metadata-update-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-metadata-update-response.json
 create mode 100644 api-ref/v2/source/samples/volume-metadata-update-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-replica-promote-request.json
 create mode 100644 api-ref/v2/source/samples/volume-replica-reenable-request.json
 create mode 100644 api-ref/v2/source/samples/volume-show-response.json
 create mode 100644 api-ref/v2/source/samples/volume-show-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-status-reset-request.json
 create mode 100644 api-ref/v2/source/samples/volume-transfer-accept-request.json
 create mode 100644 api-ref/v2/source/samples/volume-transfer-accept-response.json
 create mode 100644 api-ref/v2/source/samples/volume-transfer-create-request.json
 create mode 100644 api-ref/v2/source/samples/volume-transfer-create-response.json
 create mode 100644 api-ref/v2/source/samples/volume-transfer-show-response.json
 create mode 100644 api-ref/v2/source/samples/volume-transfers-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/volume-transfers-list-response.json
 create mode 100644 api-ref/v2/source/samples/volume-type-access-add-request.json
 create mode 100644 api-ref/v2/source/samples/volume-type-access-add-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-type-access-delete-request.json
 create mode 100644 api-ref/v2/source/samples/volume-type-access-delete-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-type-access-list-response.json
 create mode 100644 api-ref/v2/source/samples/volume-type-create-request.json
 create mode 100644 api-ref/v2/source/samples/volume-type-create-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-type-show-request.json
 create mode 100644 api-ref/v2/source/samples/volume-type-show-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-type-show-response.json
 create mode 100644 api-ref/v2/source/samples/volume-type-show-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-type-update-request.json
 create mode 100644 api-ref/v2/source/samples/volume-type-update-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-types-list-response.json
 create mode 100644 api-ref/v2/source/samples/volume-types-list-response.xml
 create mode 100644 api-ref/v2/source/samples/volume-unmanage-request.json
 create mode 100644 api-ref/v2/source/samples/volume-update-request.json
 create mode 100644 api-ref/v2/source/samples/volume-update-request.xml
 create mode 100644 api-ref/v2/source/samples/volume-update-response.json
 create mode 100644 api-ref/v2/source/samples/volume-update-response.xml
 create mode 100644 api-ref/v2/source/samples/volumes-list-detailed-response.json
 create mode 100644 api-ref/v2/source/samples/volumes-list-detailed-response.xml
 create mode 100644 api-ref/v2/source/samples/volumes-list-response.json
 create mode 100644 api-ref/v2/source/samples/volumes-list-response.xml
 create mode 100644 api-ref/v2/source/volume-manage.inc
 create mode 100644 api-ref/v2/source/volume-type-access.inc
 create mode 100644 api-ref/v2/source/volumes-v2-extensions.inc
 create mode 100644 api-ref/v2/source/volumes-v2-snapshots.inc
 create mode 100644 api-ref/v2/source/volumes-v2-types.inc
 create mode 100644 api-ref/v2/source/volumes-v2-versions.inc
 create mode 100644 api-ref/v2/source/volumes-v2-volumes-actions.inc
 create mode 100644 api-ref/v2/source/volumes-v2-volumes.inc

diff --git a/.gitignore b/.gitignore
index 293c3cab89a..05688daf462 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,5 +31,8 @@ tags
 # Files created by Sphinx build
 doc/build
 
+#Files created for API reference
+api-ref/build
+
 # Files created by releasenotes build
 releasenotes/build
diff --git a/api-ref/ext/__init__.py b/api-ref/ext/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/api-ref/ext/rest_parameters.py b/api-ref/ext/rest_parameters.py
new file mode 100644
index 00000000000..c74ab5ea0d4
--- /dev/null
+++ b/api-ref/ext/rest_parameters.py
@@ -0,0 +1,352 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""This provides a sphinx extension able to create the HTML needed
+for the api-ref website.
+
+It contains 2 new stanzas.
+
+  .. rest_method:: GET /foo/bar
+
+Which is designed to be used as the first stanza in a new section to
+state that section is about that REST method. During processing the
+rest stanza will be reparented to be before the section in question,
+and used as a show/hide selector for it's details.
+
+  .. rest_parameters:: file.yaml
+
+     - name1: name_in_file1
+     - name2: name_in_file2
+     - name3: name_in_file3
+
+Which is designed to build structured tables for either response or
+request parameters. The stanza takes a value which is a file to lookup
+details about the parameters in question.
+
+The contents of the stanza are a yaml list of key / value pairs. The
+key is the name of the parameter to be shown in the table. The value
+is the key in the file.yaml where all other metadata about the
+parameter will be extracted. This allows for reusing parameter
+definitions widely in API definitions, but still providing for control
+in both naming and ordering of parameters at every declaration.
+
+"""
+
+from docutils import nodes
+from docutils.parsers.rst.directives.tables import Table
+from docutils.statemachine import ViewList
+from sphinx.util.compat import Directive
+
+import six
+import yaml
+
+
+def full_name(cls):
+    return cls.__module__ + '.' + cls.__name__
+
+
+class rest_method(nodes.Part, nodes.Element):
+    """rest_method custom node type
+
+    We specify a custom node type for rest_method so that we can
+    accumulate all the data about the rest method, but not render as
+    part of the normal rendering process. This means that we need a
+    renderer for every format we wish to support with this.
+
+    """
+    pass
+
+
+class rest_expand_all(nodes.Part, nodes.Element):
+    pass
+
+
+class RestExpandAllDirective(Directive):
+    has_content = True
+
+    def run(self):
+        return [rest_expand_all()]
+
+
+class RestMethodDirective(Directive):
+
+    # this enables content in the directive
+    has_content = True
+
+    def run(self):
+        lineno = self.state_machine.abs_line_number()
+        target = nodes.target()
+        section = nodes.section(classes=["detail-control"])
+
+        node = rest_method()
+
+        method, sep, url = self.content[0].partition(' ')
+
+        node['method'] = method
+        node['url'] = url
+        node['target'] = self.state.parent.attributes['ids'][0]
+
+        temp_target = "%s-selector" % node['target']
+        target = nodes.target(ids=[temp_target])
+        self.state.add_target(temp_target, '', target, lineno)
+        section += node
+
+        return [target, section]
+
+
+class RestParametersDirective(Table):
+
+    headers = ["Name", "In", "Type", "Description"]
+
+    def yaml_from_file(self, fpath):
+        """Collect Parameter stanzas from inline + file.
+
+        This allows use to reference an external file for the actual
+        parameter definitions.
+        """
+        try:
+            with open(fpath, 'r') as stream:
+                lookup = yaml.load(stream)
+        except IOError:
+            self.env.warn(
+                self.env.docname,
+                "Parameters file %s not found" % fpath)
+            return
+        except yaml.YAMLError as exc:
+            self.app.warn(exc)
+            raise
+
+        content = "\n".join(self.content)
+        parsed = yaml.load(content)
+        new_content = list()
+        for paramlist in parsed:
+            for name, ref in paramlist.items():
+                if ref in lookup:
+                    new_content.append((name, lookup[ref]))
+                else:
+                    self.env.warn(
+                        "%s:%s " % (
+                            self.state_machine.node.source,
+                            self.state_machine.node.line),
+                        ("No field definition for ``%s`` found in ``%s``. "
+                         " Skipping." % (ref, fpath)))
+
+        self.yaml = new_content
+
+    def run(self):
+        self.env = self.state.document.settings.env
+        self.app = self.env.app
+
+        # Make sure we have some content, which should be yaml that
+        # defines some parameters.
+        if not self.content:
+            error = self.state_machine.reporter.error(
+                'No parameters defined',
+                nodes.literal_block(self.block_text, self.block_text),
+                line=self.lineno)
+            return [error]
+
+        if not len(self.arguments) >= 1:
+            self.state_machine.reporter.error(
+                'No reference file defined',
+                nodes.literal_block(self.block_text, self.block_text),
+                line=self.lineno)
+            return [error]
+
+        rel_fpath, fpath = self.env.relfn2path(self.arguments.pop())
+        self.yaml_file = fpath
+        self.yaml_from_file(self.yaml_file)
+
+        self.max_cols = len(self.headers)
+        self.options['widths'] = (20, 10, 10, 60)
+        self.col_widths = self.get_column_widths(self.max_cols)
+        # Actually convert the yaml
+        title, messages = self.make_title()
+        table_node = self.build_table()
+        self.add_name(table_node)
+        if title:
+            table_node.insert(0, title)
+        return [table_node] + messages
+
+    def get_rows(self, table_data):
+        rows = []
+        groups = []
+        trow = nodes.row()
+        entry = nodes.entry()
+        para = nodes.paragraph(text=six.text_type(table_data))
+        entry += para
+        trow += entry
+        rows.append(trow)
+        return rows, groups
+
+    # Add a column for a field. In order to have the RST inside
+    # these fields get rendered, we need to use the
+    # ViewList. Note, ViewList expects a list of lines, so chunk
+    # up our content as a list to make it happy.
+    def add_col(self, value):
+        entry = nodes.entry()
+        result = ViewList(value.split('\n'))
+        self.state.nested_parse(result, 0, entry)
+        return entry
+
+    def show_no_yaml_error(self):
+        trow = nodes.row(classes=["no_yaml"])
+        trow += self.add_col("No yaml found %s" % self.yaml_file)
+        trow += self.add_col("")
+        trow += self.add_col("")
+        trow += self.add_col("")
+        return trow
+
+    def collect_rows(self):
+        rows = []
+        groups = []
+        try:
+            for key, values in self.yaml:
+                min_version = values.get('min_version', '')
+                desc = values.get('description', '')
+                classes = []
+                if min_version:
+                    desc += ("\n\n**New in version %s**\n" % min_version)
+                    min_ver_css_name = ("rp_min_ver_" +
+                                        str(min_version).replace('.', '_'))
+                    classes.append(min_ver_css_name)
+                trow = nodes.row(classes=classes)
+                name = key
+                if values.get('required', False) is False:
+                    name += " (Optional)"
+                trow += self.add_col(name)
+                trow += self.add_col(values.get('in'))
+                trow += self.add_col(values.get('type'))
+                trow += self.add_col(desc)
+                rows.append(trow)
+        except AttributeError as exc:
+            if 'key' in locals():
+                self.app.warn("Failure on key: %s, values: %s. %s" %
+                              (key, values, exc))
+            else:
+                rows.append(self.show_no_yaml_error())
+        return rows, groups
+
+    def build_table(self):
+        table = nodes.table()
+        tgroup = nodes.tgroup(cols=len(self.headers))
+        table += tgroup
+
+        tgroup.extend(
+            nodes.colspec(colwidth=col_width, colname='c' + str(idx))
+            for idx, col_width in enumerate(self.col_widths)
+        )
+
+        thead = nodes.thead()
+        tgroup += thead
+
+        row_node = nodes.row()
+        thead += row_node
+        row_node.extend(nodes.entry(h, nodes.paragraph(text=h))
+                        for h in self.headers)
+
+        tbody = nodes.tbody()
+        tgroup += tbody
+
+        rows, groups = self.collect_rows()
+        tbody.extend(rows)
+        table.extend(groups)
+
+        return table
+
+
+def rest_method_html(self, node):
+    tmpl = """
+<div class="row operation-grp">
+    <div class="col-md-1 operation">
+    <a name="%(target)s" class="operation-anchor" href="#%(target)s">
+      <span class="glyphicon glyphicon-link"></span></a>
+    <span class="label label-success">%(method)s</span>
+    </div>
+    <div class="col-md-5">%(url)s</div>
+    <div class="col-md-5">%(desc)s</div>
+    <div class="col-md-1">
+    <button
+       class="btn btn-info btn-sm btn-detail"
+       data-target="#%(target)s-detail"
+       data-toggle="collapse"
+       id="%(target)s-detail-btn"
+       >detail</button>
+    </div>
+</div>"""
+
+    self.body.append(tmpl % node)
+    raise nodes.SkipNode
+
+
+def rest_expand_all_html(self, node):
+    tmpl = """
+<div>
+<div class=col-md-11></div>
+<div class=col-md-1>
+    <button id="expand-all"
+       data-toggle="collapse"
+       class="btn btn-info btn-sm btn-expand-all"
+    >Show All</button>
+</div>
+</div>"""
+
+    self.body.append(tmpl % node)
+    raise nodes.SkipNode
+
+
+def resolve_rest_references(app, doctree):
+    for node in doctree.traverse():
+        if isinstance(node, rest_method):
+            rest_node = node
+            rest_method_section = node.parent
+            rest_section = rest_method_section.parent
+            gp = rest_section.parent
+
+            # Added required classes to the top section
+            rest_section.attributes['classes'].append('api-detail')
+            rest_section.attributes['classes'].append('collapse')
+
+            # Pop the title off the collapsed section
+            title = rest_section.children.pop(0)
+            rest_node['desc'] = title.children[0]
+
+            # In order to get the links in the sidebar to be right, we
+            # have to do some id flipping here late in the game. The
+            # rest_method_section has basically had a dummy id up
+            # until this point just to keep it from colliding with
+            # it's parent.
+            rest_section.attributes['ids'][0] = (
+                "%s-detail" % rest_section.attributes['ids'][0])
+            rest_method_section.attributes['ids'][0] = rest_node['target']
+
+            # Pop the overall section into it's grand parent,
+            # right before where the current parent lives
+            idx = gp.children.index(rest_section)
+            rest_section.remove(rest_method_section)
+            gp.insert(idx, rest_method_section)
+
+
+def setup(app):
+    app.add_node(rest_method,
+                 html=(rest_method_html, None))
+    app.add_node(rest_expand_all,
+                 html=(rest_expand_all_html, None))
+    app.add_directive('rest_parameters', RestParametersDirective)
+    app.add_directive('rest_method', RestMethodDirective)
+    app.add_directive('rest_expand_all', RestExpandAllDirective)
+    app.add_stylesheet('bootstrap.min.css')
+    app.add_stylesheet('api-site.css')
+    app.add_javascript('bootstrap.min.js')
+    app.add_javascript('api-site.js')
+    app.connect('doctree-read', resolve_rest_references)
+    return {'version': '0.1'}
diff --git a/api-ref/v1/source/_static/api-site.css b/api-ref/v1/source/_static/api-site.css
new file mode 100644
index 00000000000..e7f5c19bc5d
--- /dev/null
+++ b/api-ref/v1/source/_static/api-site.css
@@ -0,0 +1,81 @@
+tt.literal {
+    padding: 2px 4px;
+    font-size: 90%;
+    color: #c7254e;
+    white-space: nowrap;
+    background-color: #f9f2f4;
+    border-radius: 4px;
+}
+
+/* bootstrap users blockquote for pull quotes, so they are much
+larger, we need them smaller */
+blockquote { font-size: 1em; }
+
+pre {
+    display: block;
+    padding: 9.5px;
+    margin: 0 0 10px;
+    font-size: 13px;
+    line-height: 1.428571429;
+    color: #333;
+    word-break: break-all;
+    word-wrap: break-word;
+    background-color: #f5f5f5;
+    border: 1px solid #ccc;
+    border-radius: 4px;
+}
+
+tbody>tr:nth-child(odd)>td,
+tbody>tr:nth-child(odd)>th {
+    background-color: #f9f9f9;
+}
+
+table>thead>tr>th, table>tbody>tr>th, table>tfoot>tr>th, table>thead>tr>td, table>tbody>tr>td, table>tfoot>tr>td {
+    padding: 8px;
+    line-height: 1.428571429;
+    vertical-align: top;
+    border-top: 1px solid #ddd;
+}
+
+td>p {
+    margin: 0 0 0.5em;
+}
+
+div.document {
+    width: 80% !important;
+}
+
+@media (max-width: 1200px) {
+    div.document {
+        width: 960px !important;
+    }
+}
+
+.operation-grp {
+    padding-top: 0.5em;
+    padding-bottom: 1em;
+}
+
+/* Ensure the method buttons and their links don't split lines when
+the page is narrower */
+.operation {
+    /* this moves the link icon into the gutter */
+    margin-left: -1.25em;
+    margin-right: 1.25em;
+    white-space: nowrap;
+}
+
+/* These make the links only show up on hover */
+a.operation-anchor {
+  visibility: hidden;
+}
+
+.operation-grp:hover a.operation-anchor {
+  visibility: visible;
+}
+
+/* All tables for requests should be full width */
+
+.api-detail table.docutils {
+    width: 100%;
+}
diff --git a/api-ref/v1/source/_static/api-site.js b/api-ref/v1/source/_static/api-site.js
new file mode 100644
index 00000000000..6d99fb34c1b
--- /dev/null
+++ b/api-ref/v1/source/_static/api-site.js
@@ -0,0 +1,110 @@
+(function() {
+
+  var pageCache;
+
+  $(document).ready(function() {
+    pageCache = $('.api-documentation').html();
+
+    // Show the proper JSON/XML example when toggled
+    $('.example-select').on('change', function(e) {
+      $(e.currentTarget).find(':selected').tab('show')
+    });
+
+    // Change the text on the expando buttons when appropriate
+    $('.api-detail')
+      .on('hide.bs.collapse', function(e) {
+        processButton(this, 'detail');
+      })
+      .on('show.bs.collapse', function(e) {
+        processButton(this, 'close');
+      });
+
+    var expandAllActive = true;
+     // Expand the world
+    $('#expand-all').click(function () {
+        if (expandAllActive) {
+            expandAllActive = false;
+            $('.api-detail').collapse('show');
+            $('#expand-all').attr('data-toggle', '');
+            $(this).text('Hide All');
+        } else {
+            expandAllActive = true;
+            $('.api-detail').collapse('hide');
+            $('#expand-all').attr('data-toggle', 'collapse');
+            $(this).text('Show All');
+        }});
+
+    // Wire up the search button
+    $('#search-btn').on('click', function(e) {
+      searchPage();
+    });
+
+    // Wire up the search box enter
+    $('#search-box').on('keydown', function(e) {
+      if (e.keyCode === 13) {
+        searchPage();
+        return false;
+      }
+    });
+  });
+
+  /**
+   * highlight terms based on the regex in the provided $element
+   */
+  function highlightTextNodes($element, regex) {
+    var markup = $element.html();
+
+    // Do regex replace
+    // Inject span with class of 'highlighted termX' for google style highlighting
+    $element.html(markup.replace(regex, '>$1<span class="highlight">$2</span>$3<'));
+  }
+
+  function searchPage() {
+    $(".api-documentation").html(pageCache);
+
+    //make sure that all div's are expanded/hidden accordingly
+    $('.api-detail.in').each(function (e) {
+      $(this).collapse('hide');
+    });
+
+    var startTime = new Date().getTime(),
+      searchTerm = $('#search-box').val();
+
+    // The regex is the secret, it prevents text within tag declarations to be affected
+    var regex = new RegExp(">([^<]*)?(" + searchTerm + ")([^>]*)?<", "ig");
+    highlightTextNodes($('.api-documentation'), regex);
+
+    // Once we've highlighted the node, lets expand any with a search match in them
+    $('.api-detail').each(function () {
+
+      var $elem = $(this);
+
+      if ($elem.html().indexOf('<span class="highlight">') !== -1) {
+        $elem.collapse('show');
+        processButton($elem, 'close');
+      }
+    });
+
+    // log the results
+    if (console.log) {
+      console.log("search completed in: " + ((new Date().getTime()) - startTime) + "ms");
+    }
+
+    $('.api-detail')
+      .on('hide.bs.collapse', function (e) {
+        processButton(this, 'detail');
+      })
+      .on('show.bs.collapse', function (e) {
+        processButton(this, 'close');
+      });
+  }
+
+  /**
+   * Helper function for setting the text, styles for expandos
+   */
+  function processButton(button, text) {
+    $('#' + $(button).attr('id') + '-btn').text(text)
+      .toggleClass('btn-info')
+      .toggleClass('btn-default');
+  }
+})();
diff --git a/api-ref/v1/source/_static/bootstrap.min.css b/api-ref/v1/source/_static/bootstrap.min.css
new file mode 100644
index 00000000000..e63ddfaa0a5
--- /dev/null
+++ b/api-ref/v1/source/_static/bootstrap.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.2.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../_static/glyphicons-halflings-regular.eot);src:url(../_static/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../_static/glyphicons-halflings-regular.woff) format('woff'),url(../_static/glyphicons-halflings-regular.ttf) format('truetype'),url(../_static/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100%;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/api-ref/v1/source/_static/bootstrap.min.js b/api-ref/v1/source/_static/bootstrap.min.js
new file mode 100644
index 00000000000..7c1561a8b96
--- /dev/null
+++ b/api-ref/v1/source/_static/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.2.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/api-ref/v1/source/_static/glyphicons-halflings-regular.ttf b/api-ref/v1/source/_static/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b
GIT binary patch
literal 45404
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

literal 0
HcmV?d00001

diff --git a/api-ref/v1/source/_static/glyphicons-halflings-regular.woff b/api-ref/v1/source/_static/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35
GIT binary patch
literal 23424
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
G`u_lkUM?>H

literal 0
HcmV?d00001

diff --git a/api-ref/v1/source/conf.py b/api-ref/v1/source/conf.py
new file mode 100644
index 00000000000..08d5bfa0078
--- /dev/null
+++ b/api-ref/v1/source/conf.py
@@ -0,0 +1,217 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# cinder documentation build configuration file, created by
+# sphinx-quickstart on Sat May  1 15:17:47 2010.
+#
+# This file is execfile()d with the current directory set to
+# its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import os
+import subprocess
+import sys
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.abspath('../../'))
+sys.path.insert(0, os.path.abspath('../'))
+sys.path.insert(0, os.path.abspath('./'))
+
+# -- General configuration ----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+
+extensions = [
+    'ext.rest_parameters',
+    'oslosphinx',
+]
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#
+# source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Cinder API Reference'
+copyright = u'OpenStack Foundation'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+from cinder.version import version_info
+# The full version, including alpha/beta/rc tags.
+release = version_info.release_string()
+# The short X.Y version.
+version = version_info.version_string()
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# The reST default role (used for this markup: `text`) to use
+# for all documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+add_module_names = False
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# -- Options for man page output ----------------------------------------------
+
+# Grouping the document tree for man pages.
+# List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual'
+
+
+# -- Options for HTML output --------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+# html_theme_path = ["."]
+# html_theme = '_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+# html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+# html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local",
+           "-n1"]
+html_last_updated_fmt = subprocess.Popen(
+    git_cmd, stdout=subprocess.PIPE).communicate()[0]
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_use_modindex = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+# html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'cinderdoc'
+
+
+# -- Options for LaTeX output -------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+# latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+# latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass
+# [howto/manual]).
+latex_documents = [
+    ('index', 'Cinder.tex', u'OpenStack Block Storage API Documentation',
+     u'OpenStack Foundation', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+# latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_use_modindex = True
diff --git a/api-ref/v1/source/index.rst b/api-ref/v1/source/index.rst
new file mode 100644
index 00000000000..5b9ad98b2ab
--- /dev/null
+++ b/api-ref/v1/source/index.rst
@@ -0,0 +1,13 @@
+:tocdepth: 2
+
+===============
+Cinder API V1
+===============
+
+.. rest_expand_all::
+
+.. include:: os-quota-sets-v1.inc
+.. include:: volumes-v1-snapshots.inc
+.. include:: volumes-v1-types.inc
+.. include:: volumes-v1-versions.inc
+.. include:: volumes-v1-volumes.inc
diff --git a/api-ref/v1/source/os-quota-sets-v1.inc b/api-ref/v1/source/os-quota-sets-v1.inc
new file mode 100644
index 00000000000..17730761787
--- /dev/null
+++ b/api-ref/v1/source/os-quota-sets-v1.inc
@@ -0,0 +1,402 @@
+.. -*- rst -*-
+
+====================================
+Quota sets extension (os-quota-sets)
+====================================
+
+Administrators only, depending on policy settings.
+
+Shows, updates, and deletes quotas for a tenant.
+
+
+Show quota details for user
+===========================
+
+.. rest_method::  GET /v1/{tenant_id}/os-quota-sets/{tenant_id}/detail/{user_id}
+
+Shows details for quotas for a tenant and user.
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - user_id: user_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - limit: limit
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/user-quotas-show-detail-response.json
+   :language: javascript
+
+Show default quotas
+===================
+
+.. rest_method::  GET /v1/{tenant_id}/os-quota-sets/defaults
+
+Shows default quotas for a tenant.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-defaults-show-response.json
+   :language: javascript
+
+
+Show quotas
+===========
+
+.. rest_method::  GET /v1/{tenant_id}/os-quota-sets/{tenant_id}
+
+Shows quotas for a tenant.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - usage: usage
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-show-response.json
+   :language: javascript
+
+
+Update quotas
+=============
+
+.. rest_method::  PUT /v1/{tenant_id}/os-quota-sets/{tenant_id}
+
+Updates quotas for a tenant.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - id: id
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - injected_file_path_bytes: injected_file_path_bytes
+   - security_groups: security_groups
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/quotas-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-update-response.json
+   :language: javascript
+
+
+Delete quotas
+=============
+
+.. rest_method::  DELETE /v1/{tenant_id}/os-quota-sets/{tenant_id}
+
+Deletes quotas for a tenant so the quotas revert to default values.
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/user-quotas-delete-response.json
+   :language: javascript
+
+Show quotas for user
+====================
+
+.. rest_method::  GET /v1/{tenant_id}/os-quota-sets/{tenant_id}/{user_id}
+
+Enables an admin user to show quotas for a tenant and user.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - user_id: user_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/user-quotas-show-response.json
+   :language: javascript
+
+
+
+
+Update quotas for user
+======================
+
+.. rest_method::  POST /v1/{tenant_id}/os-quota-sets/{tenant_id}/{user_id}
+
+Updates quotas for a tenant and user.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - id: id
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - injected_file_path_bytes: injected_file_path_bytes
+   - security_groups: security_groups
+   - tenant_id: tenant_id
+   - user_id: user_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/user-quotas-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/user-quotas-update-response.json
+   :language: javascript
+
+
+Delete quotas for user
+======================
+
+.. rest_method::  DELETE /v1/{tenant_id}/os-quota-sets/{tenant_id}/{user_id}
+
+Deletes quotas for a user so that the quotas revert to default values.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - user_id: user_id
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/user-quotas-delete-response.json
+   :language: javascript
diff --git a/api-ref/v1/source/parameters.yaml b/api-ref/v1/source/parameters.yaml
new file mode 100644
index 00000000000..6409f2faa9e
--- /dev/null
+++ b/api-ref/v1/source/parameters.yaml
@@ -0,0 +1,642 @@
+# variables in header
+x-openstack-request-id:
+  description: >
+    foo
+  in: header
+  required: false
+  type: string
+
+# variables in path
+snapshot_id_1:
+  description: |
+    The UUID of the snapshot.
+  in: path
+  required: false
+  type: string
+tenant_id:
+  description: |
+    The UUID of the tenant in a multi-tenancy cloud.
+  in: path
+  required: false
+  type: string
+user_id:
+  description: |
+    The user ID. Specify in the URI as
+    ``user_id={user_id}``.
+  in: path
+  required: false
+  type: string
+volume_id:
+  description: |
+    The UUID of the volume.
+  in: path
+  required: false
+  type: string
+volume_type_id:
+  description: |
+    The UUID for an existing volume type.
+  in: path
+  required: false
+  type: string
+
+# variables in query
+usage:
+  description: |
+    Set to ``usage=true`` to show quota usage.
+    Default is ``false``.
+  in: query
+  required: false
+  type: boolean
+
+# variables in body
+attachments:
+  description: |
+    Instance attachment information.  If this volume
+    is attached to a server instance, the attachments list includes
+    the UUID of the attached server, an attachment UUID, the name of
+    the attached host, if any, the volume UUID, the device, and the
+    device UUID.  Otherwise, this list is empty.
+  in: body
+  required: true
+  type: array
+availability_zone:
+  description: |
+    The availability zone.
+  in: body
+  required: false
+  type: string
+availability_zone_1:
+  description: |
+    The availability zone.
+  in: body
+  required: true
+  type: string
+bootable:
+  description: |
+    Enables or disables the bootable attribute. You
+    can boot an instance from a bootable volume.
+  in: body
+  required: true
+  type: boolean
+consistencygroup_id:
+  description: |
+    The UUID of the consistency group.
+  in: body
+  required: false
+  type: string
+consistencygroup_id_1:
+  description: |
+    The UUID of the consistency group.
+  in: body
+  required: true
+  type: string
+cores:
+  description: |
+    The number of instance cores that are allowed for
+    each tenant.
+  in: body
+  required: true
+  type: integer
+cores_1:
+  description: |
+    A ``cores`` object.
+  in: body
+  required: true
+  type: string
+cores_2:
+  description: |
+    The number of instance cores that are allowed for
+    each tenant.
+  in: body
+  required: false
+  type: integer
+created_at:
+  description: |
+    The date and time when the resource was created.
+
+    The date and time stamp format is `ISO 8601
+    <https://en.wikipedia.org/wiki/ISO_8601>`_:
+
+    ::
+
+       CCYY-MM-DDThh:mm:ss±hh:mm
+
+    For example, ``2015-08-27T09:49:58-05:00``.
+
+    The ``±hh:mm`` value, if included, is the time zone as an offset
+    from UTC.
+  in: body
+  required: true
+  type: string
+description:
+  description: |
+    The volume description.
+  in: body
+  required: false
+  type: string
+description_1:
+  description: |
+    The volume description.
+  in: body
+  required: true
+  type: string
+encrypted:
+  description: |
+    If true, this volume is encrypted.
+  in: body
+  required: true
+  type: boolean
+extra_specs:
+  description: |
+    A set of key and value pairs that contains the
+    specifications for a volume type.
+  in: body
+  required: true
+  type: object
+fixed_ips:
+  description: |
+    The number of fixed IP addresses that are allowed
+    for each tenant. Must be equal to or greater than the number of
+    allowed instances.
+  in: body
+  required: true
+  type: integer
+fixed_ips_1:
+  description: |
+    A ``fixed_ips`` object.
+  in: body
+  required: true
+  type: string
+fixed_ips_2:
+  description: |
+    The number of fixed IP addresses that are allowed
+    for each tenant. Must be equal to or greater than the number of
+    allowed instances.
+  in: body
+  required: false
+  type: integer
+floating_ips:
+  description: |
+    The number of floating IP addresses that are
+    allowed for each tenant.
+  in: body
+  required: true
+  type: integer
+floating_ips_1:
+  description: |
+    A ``floating_ips`` object.
+  in: body
+  required: true
+  type: string
+floating_ips_2:
+  description: |
+    The number of floating IP addresses that are
+    allowed for each tenant.
+  in: body
+  required: false
+  type: integer
+id:
+  description: |
+    The UUID of the volume.
+  in: body
+  required: true
+  type: string
+id_1:
+  description: |
+    The ID for the quota set.
+  in: body
+  required: true
+  type: integer
+id_2:
+  description: |
+    The ID for the quota set.
+  in: body
+  required: true
+  type: string
+id_3:
+  description: |
+    The ID for the quota set.
+  in: body
+  required: false
+  type: integer
+imageRef:
+  description: |
+    The UUID of the image from which you want to
+    create the volume. Required to create a bootable volume.
+  in: body
+  required: false
+  type: string
+in_use:
+  description: |
+    The in use data size. Visible only if you set the
+    ``usage=true`` query parameter.
+  in: body
+  required: false
+  type: string
+in_use_1:
+  description: |
+    The number of items in use.
+  in: body
+  required: true
+  type: integer
+injected_file_content_bytes:
+  description: |
+    The number of bytes of content that are allowed
+    for each injected file.
+  in: body
+  required: true
+  type: integer
+injected_file_content_bytes_1:
+  description: |
+    An ``injected_file_content_bytes`` object.
+  in: body
+  required: true
+  type: string
+injected_file_content_bytes_2:
+  description: |
+    The number of bytes of content that are allowed
+    for each injected file.
+  in: body
+  required: false
+  type: integer
+injected_file_path_bytes:
+  description: |
+    The number of bytes that are allowed for each
+    injected file path.
+  in: body
+  required: true
+  type: integer
+injected_file_path_bytes_1:
+  description: |
+    An ``injected_file_path_bytes`` object.
+  in: body
+  required: true
+  type: string
+injected_file_path_bytes_2:
+  description: |
+    The number of bytes that are allowed for each
+    injected file path.
+  in: body
+  required: false
+  type: integer
+injected_files:
+  description: |
+    The number of injected files that are allowed for
+    each tenant.
+  in: body
+  required: true
+  type: integer
+injected_files_1:
+  description: |
+    An ``injected_files`` object.
+  in: body
+  required: true
+  type: string
+injected_files_2:
+  description: |
+    The number of injected files that are allowed for
+    each tenant.
+  in: body
+  required: false
+  type: integer
+instances:
+  description: |
+    The number of instances that are allowed for each
+    tenant.
+  in: body
+  required: true
+  type: integer
+instances_1:
+  description: |
+    An ``instances`` object.
+  in: body
+  required: true
+  type: string
+instances_2:
+  description: |
+    The number of instances that are allowed for each
+    tenant.
+  in: body
+  required: false
+  type: integer
+key_pairs:
+  description: |
+    The number of key pairs that are allowed for each
+    user.
+  in: body
+  required: true
+  type: integer
+key_pairs_1:
+  description: |
+    A ``key_pairs`` object.
+  in: body
+  required: true
+  type: string
+key_pairs_2:
+  description: |
+    The number of key pairs that are allowed for each
+    user.
+  in: body
+  required: false
+  type: integer
+limit:
+  description: |
+    The number of items permitted for this tenant.
+  in: body
+  required: true
+  type: integer
+links:
+  description: |
+    The volume links.
+  in: body
+  required: true
+  type: array
+metadata:
+  description: |
+    One or more metadata key and value pairs that are
+    associated with the volume.
+  in: body
+  required: false
+  type: object
+metadata_1:
+  description: |
+    One or more metadata key and value pairs that are
+    associated with the volume.
+  in: body
+  required: true
+  type: object
+metadata_2:
+  description: |
+    One or more metadata key and value pairs for the
+    snapshot.
+  in: body
+  required: false
+  type: object
+metadata_items:
+  description: |
+    The number of metadata items that are allowed for
+    each instance.
+  in: body
+  required: true
+  type: integer
+metadata_items_1:
+  description: |
+    A ``metadata_items`` object.
+  in: body
+  required: true
+  type: string
+metadata_items_2:
+  description: |
+    The number of metadata items that are allowed for
+    each instance.
+  in: body
+  required: false
+  type: integer
+migration_status:
+  description: |
+    The volume migration status.
+  in: body
+  required: true
+  type: string
+multiattach:
+  description: |
+    To enable this volume to attach to more than one
+    server, set this value to ``true``. Default is ``false``.
+  in: body
+  required: false
+  type: boolean
+multiattach_1:
+  description: |
+    If true, this volume can attach to more than one
+    instance.
+  in: body
+  required: true
+  type: boolean
+name:
+  description: |
+    The name of the volume type.
+  in: body
+  required: true
+  type: string
+name_1:
+  description: |
+    The volume name.
+  in: body
+  required: false
+  type: string
+name_2:
+  description: |
+    The volume name.
+  in: body
+  required: true
+  type: string
+quota_set:
+  description: |
+    A ``quota_set`` object.
+  in: body
+  required: true
+  type: object
+quota_set_1:
+  description: |
+    A ``quota_set`` object.
+  in: body
+  required: true
+  type: string
+ram:
+  description: |
+    The amount of instance RAM in megabytes that are
+    allowed for each tenant.
+  in: body
+  required: true
+  type: integer
+ram_1:
+  description: |
+    A ``ram`` object.
+  in: body
+  required: true
+  type: string
+ram_2:
+  description: |
+    The amount of instance RAM in megabytes that are
+    allowed for each tenant.
+  in: body
+  required: false
+  type: integer
+replication_status:
+  description: |
+    The volume replication status.
+  in: body
+  required: true
+  type: string
+reserved:
+  description: |
+    Reserved volume size. Visible only if you set the
+    ``usage=true`` query parameter.
+  in: body
+  required: false
+  type: integer
+reserved_1:
+  description: |
+    The number of reserved items.
+  in: body
+  required: true
+  type: integer
+scheduler_hints:
+  description: |
+    The dictionary of data to send to the scheduler.
+  in: body
+  required: false
+  type: object
+security_group_rules:
+  description: |
+    The number of rules that are allowed for each
+    security group.
+  in: body
+  required: false
+  type: integer
+security_group_rules_1:
+  description: |
+    A ``security_group_rules`` object.
+  in: body
+  required: true
+  type: string
+security_groups:
+  description: |
+    The number of security groups that are allowed
+    for each tenant.
+  in: body
+  required: true
+  type: integer
+security_groups_1:
+  description: |
+    A ``security_groups`` object.
+  in: body
+  required: true
+  type: string
+security_groups_2:
+  description: |
+    The number of security groups that are allowed
+    for each tenant.
+  in: body
+  required: false
+  type: integer
+size:
+  description: |
+    The size of the volume, in gibibytes (GiB).
+  in: body
+  required: true
+  type: integer
+snapshot:
+  description: |
+    A ``snapshot`` object.
+  in: body
+  required: true
+  type: object
+snapshot_id:
+  description: |
+    To create a volume from an existing snapshot,
+    specify the UUID of the volume snapshot. The volume is created in
+    same availability zone and with same size as the snapshot.
+  in: body
+  required: false
+  type: string
+snapshot_id_2:
+  description: |
+    The UUID of the source volume snapshot. The API
+    creates a new volume snapshot with the same size as the source
+    volume snapshot.
+  in: body
+  required: true
+  type: string
+source_replica:
+  description: |
+    The UUID of the primary volume to clone.
+  in: body
+  required: false
+  type: string
+source_volid:
+  description: |
+    The UUID of the source volume. The API creates a
+    new volume with the same size as the source volume.
+  in: body
+  required: false
+  type: string
+source_volid_1:
+  description: |
+    The UUID of the source volume.
+  in: body
+  required: true
+  type: string
+status:
+  description: |
+    The volume status.
+  in: body
+  required: true
+  type: string
+updated_at:
+  description: |
+    The date and time when the resource was updated.
+
+    The date and time stamp format is `ISO 8601
+    <https://en.wikipedia.org/wiki/ISO_8601>`_:
+
+    ::
+
+       CCYY-MM-DDThh:mm:ss±hh:mm
+
+    For example, ``2015-08-27T09:49:58-05:00``.
+
+    The ``±hh:mm`` value, if included, is the time zone as an offset
+    from UTC. In the previous example, the offset value is ``-05:00``.
+
+    If the ``updated_at`` date and time stamp is not set, its value is
+    ``null``.
+  in: body
+  required: true
+  type: string
+user_id_1:
+  description: |
+    The UUID of the user.
+  in: body
+  required: true
+  type: string
+volume:
+  description: |
+    A ``volume`` object.
+  in: body
+  required: true
+  type: object
+volume_type:
+  description: |
+    The volume type. To create an environment with
+    multiple-storage back ends, you must specify a volume type. Block
+    Storage volume back ends are spawned as children to ``cinder-
+    volume``, and they are keyed from a unique queue. They are named
+    ``cinder- volume.HOST.BACKEND``. For example, ``cinder-
+    volume.ubuntu.lvmdriver``. When a volume is created, the scheduler
+    chooses an appropriate back end to handle the request based on the
+    volume type.  Default is ``None``.  For information about how to
+    use volume types to create multiple- storage back ends, see
+    `Configure multiple-storage back ends
+    <http://docs.openstack.org/admin-
+    guide/blockstorage_multi_backend.html>`_.
+  in: body
+  required: false
+  type: string
+volume_type_1:
+  description: |
+    The volume type. In an environment with multiple-
+    storage back ends, the scheduler determines where to send the
+    volume based on the volume type.  For information about how to use
+    volume types to create multiple- storage back ends, see `Configure
+    multiple-storage back ends <http://docs.openstack.org/admin-
+    guide/blockstorage_multi_backend.html>`_.
+  in: body
+  required: true
+  type: string
+volumes:
+  description: |
+    A list of ``volume`` objects.
+  in: body
+  required: true
+  type: array
diff --git a/api-ref/v1/source/samples/quotas-defaults-show-response.json b/api-ref/v1/source/samples/quotas-defaults-show-response.json
new file mode 100644
index 00000000000..239c64d23d4
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-defaults-show-response.json
@@ -0,0 +1,17 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "fixed_ips": -1,
+        "floating_ips": 10,
+        "id": "fake_tenant",
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 10,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 10
+    }
+}
diff --git a/api-ref/v1/source/samples/quotas-defaults-show-response.xml b/api-ref/v1/source/samples/quotas-defaults-show-response.xml
new file mode 100644
index 00000000000..76a9292c137
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-defaults-show-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <cores>20</cores>
+  <fixed_ips>-1</fixed_ips>
+  <floating_ips>10</floating_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>10</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v1/source/samples/quotas-show-response.json b/api-ref/v1/source/samples/quotas-show-response.json
new file mode 100644
index 00000000000..239c64d23d4
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-show-response.json
@@ -0,0 +1,17 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "fixed_ips": -1,
+        "floating_ips": 10,
+        "id": "fake_tenant",
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 10,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 10
+    }
+}
diff --git a/api-ref/v1/source/samples/quotas-show-response.xml b/api-ref/v1/source/samples/quotas-show-response.xml
new file mode 100644
index 00000000000..76a9292c137
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-show-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <cores>20</cores>
+  <fixed_ips>-1</fixed_ips>
+  <floating_ips>10</floating_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>10</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v1/source/samples/quotas-update-request.json b/api-ref/v1/source/samples/quotas-update-request.json
new file mode 100644
index 00000000000..1f12caa0450
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-update-request.json
@@ -0,0 +1,5 @@
+{
+    "quota_set": {
+        "security_groups": 45
+    }
+}
diff --git a/api-ref/v1/source/samples/quotas-update-request.xml b/api-ref/v1/source/samples/quotas-update-request.xml
new file mode 100644
index 00000000000..596ce56ac36
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <security_groups>45</security_groups>
+</quota_set>
diff --git a/api-ref/v1/source/samples/quotas-update-response.json b/api-ref/v1/source/samples/quotas-update-response.json
new file mode 100644
index 00000000000..2be76d47215
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-update-response.json
@@ -0,0 +1,16 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "fixed_ips": -1,
+        "floating_ips": 10,
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 10,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 45
+    }
+}
diff --git a/api-ref/v1/source/samples/quotas-update-response.xml b/api-ref/v1/source/samples/quotas-update-response.xml
new file mode 100644
index 00000000000..e03a0bf5e4b
--- /dev/null
+++ b/api-ref/v1/source/samples/quotas-update-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set>
+  <cores>20</cores>
+  <fixed_ips>-1</fixed_ips>
+  <floating_ips>10</floating_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>10</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>45</security_groups>
+</quota_set>
diff --git a/api-ref/v1/source/samples/snapshot-create-request.json b/api-ref/v1/source/samples/snapshot-create-request.json
new file mode 100644
index 00000000000..cc8ce2865f8
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-create-request.json
@@ -0,0 +1,8 @@
+{
+    "snapshot": {
+        "display_name": "snap-001",
+        "display_description": "Daily backup",
+        "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
+        "force": true
+    }
+}
diff --git a/api-ref/v1/source/samples/snapshot-create-request.xml b/api-ref/v1/source/samples/snapshot-create-request.xml
new file mode 100644
index 00000000000..911667a7b3f
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-create-request.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot xmlns="http://docs.openstack.org/volume/api/v1"
+          name="snap-001" display_name="snap-001"
+          display_description="Daily backup"
+          volume_id="521752a6-acf6-4b2d-bc7a-119f9148cd8c"
+          force="true"/>
diff --git a/api-ref/v1/source/samples/snapshot-metadata-show-response.json b/api-ref/v1/source/samples/snapshot-metadata-show-response.json
new file mode 100644
index 00000000000..68c54641dc3
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-metadata-show-response.json
@@ -0,0 +1,16 @@
+{
+    "snapshot": {
+        "status": "available",
+        "os-extended-snapshot-attributes:progress": "0%",
+        "description": null,
+        "created_at": "2014-05-06T17:59:52.000000",
+        "metadata": {
+            "key": "v1"
+        },
+        "volume_id": "ebd80b99-bc3d-4154-9d28-5583baa80580",
+        "os-extended-snapshot-attributes:project_id": "7e0105e19cd2466193729ef78b604f79",
+        "size": 10,
+        "id": "dfcd17fe-3b64-44ba-b95f-1c9c7109ef95",
+        "name": "my-snapshot"
+    }
+}
diff --git a/api-ref/v1/source/samples/snapshot-metadata-show-response.xml b/api-ref/v1/source/samples/snapshot-metadata-show-response.xml
new file mode 100644
index 00000000000..c8e002424d0
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-metadata-show-response.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<snapshot
+    xmlns:os-extended-snapshot-attributes="http://docs.openstack.org/volume/ext/extended_snapshot_attributes/api/v1"
+    status="available" description="None"
+    created_at="2014-05-06 17:59:52"
+    volume_id="ebd80b99-bc3d-4154-9d28-5583baa80580" size="10"
+    id="dfcd17fe-3b64-44ba-b95f-1c9c7109ef95" name="my-snapshot"
+    os-extended-snapshot-attributes:project_id="7e0105e19cd2466193729ef78b604f79"
+    os-extended-snapshot-attributes:progress="0%">
+    <metadata>
+        <meta key="key">v1</meta>
+    </metadata>
+</snapshot>
diff --git a/api-ref/v1/source/samples/snapshot-metadata-update-request.json b/api-ref/v1/source/samples/snapshot-metadata-update-request.json
new file mode 100644
index 00000000000..75accc1a63d
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-metadata-update-request.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "key": "v1"
+    }
+}
diff --git a/api-ref/v1/source/samples/snapshot-metadata-update-request.xml b/api-ref/v1/source/samples/snapshot-metadata-update-request.xml
new file mode 100644
index 00000000000..cbcf6b27344
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-metadata-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata>
+    <meta key="key">v1</meta>
+</metadata>
diff --git a/api-ref/v1/source/samples/snapshot-metadata-update-response.json b/api-ref/v1/source/samples/snapshot-metadata-update-response.json
new file mode 100644
index 00000000000..75accc1a63d
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-metadata-update-response.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "key": "v1"
+    }
+}
diff --git a/api-ref/v1/source/samples/snapshot-metadata-update-response.xml b/api-ref/v1/source/samples/snapshot-metadata-update-response.xml
new file mode 100644
index 00000000000..31535fda410
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-metadata-update-response.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+    <meta key="key">v1</meta>
+</metadata>
diff --git a/api-ref/v1/source/samples/snapshot-show-response.json b/api-ref/v1/source/samples/snapshot-show-response.json
new file mode 100644
index 00000000000..f1514e86093
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-show-response.json
@@ -0,0 +1,11 @@
+{
+    "snapshot": {
+        "id": "3fbbcccf-d058-4502-8844-6feeffdf4cb5",
+        "display_name": "snap-001",
+        "display_description": "Daily backup",
+        "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
+        "status": "available",
+        "size": 30,
+        "created_at": "2012-02-29T03:50:07Z"
+    }
+}
diff --git a/api-ref/v1/source/samples/snapshot-show-response.xml b/api-ref/v1/source/samples/snapshot-show-response.xml
new file mode 100644
index 00000000000..c37ab2ed3a6
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshot-show-response.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot xmlns="http://docs.openstack.org/volume/api/v1"
+          id="3fbbcccf-d058-4502-8844-6feeffdf4cb5"
+          display_name="snap-001"
+          display_description="Daily backup"
+          volume_id="521752a6-acf6-4b2d-bc7a-119f9148cd8c"
+          status="available"
+          size="30"
+          created_at="2012-02-29T03:50:07Z" />
diff --git a/api-ref/v1/source/samples/snapshots-list-response.json b/api-ref/v1/source/samples/snapshots-list-response.json
new file mode 100644
index 00000000000..d148577e19e
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshots-list-response.json
@@ -0,0 +1,26 @@
+{
+    "snapshots": [
+        {
+            "id": "3fbbcccf-d058-4502-8844-6feeffdf4cb5",
+            "display_name": "snap-001",
+            "display_description": "Daily backup",
+            "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
+            "status": "available",
+            "size": 30,
+            "created_at": "2012-02-29T03:50:07Z",
+            "metadata": {
+                "contents": "junk"
+            }
+        },
+        {
+            "id": "e479997c-650b-40a4-9dfe-77655818b0d2",
+            "display_name": "snap-002",
+            "display_description": "Weekly backup",
+            "volume_id": "76b8950a-8594-4e5b-8dce-0dfa9c696358",
+            "status": "available",
+            "size": 25,
+            "created_at": "2012-03-19T01:52:47Z",
+            "metadata": {}
+        }
+    ]
+}
diff --git a/api-ref/v1/source/samples/snapshots-list-response.xml b/api-ref/v1/source/samples/snapshots-list-response.xml
new file mode 100644
index 00000000000..2e103ff6b23
--- /dev/null
+++ b/api-ref/v1/source/samples/snapshots-list-response.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshots xmlns="http://docs.openstack.org/volume/api/v1">
+    <snapshot id="3fbbcccf-d058-4502-8844-6feeffdf4cb5"
+              display_name="snap-001"
+              display_description="Daily backup"
+              volume_id="521752a6-acf6-4b2d-bc7a-119f9148cd8c"
+              status="available"
+              size="30"
+              created_at="2012-02-29T03:50:07Z">
+        <metadata>
+              <meta key="contents">junk</meta>
+        </metadata>
+    </snapshot>
+    <snapshot id="e479997c-650b-40a4-9dfe-77655818b0d2"
+              display_name="snap-002"
+              display_description="Weekly backup"
+              volume_id="76b8950a-8594-4e5b-8dce-0dfa9c696358"
+              status="available"
+              size="25"
+              created_at="2012-03-19T01:52:47Z" />
+</snapshots>
diff --git a/api-ref/v1/source/samples/user-quotas-delete-response.json b/api-ref/v1/source/samples/user-quotas-delete-response.json
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/api-ref/v1/source/samples/user-quotas-show-detail-response.json b/api-ref/v1/source/samples/user-quotas-show-detail-response.json
new file mode 100644
index 00000000000..53ecff0ba81
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-show-detail-response.json
@@ -0,0 +1,64 @@
+{
+    "quota_set": {
+        "cores": {
+            "in_use": 0,
+            "limit": 20,
+            "reserved": 0
+        },
+        "fixed_ips": {
+            "in_use": 0,
+            "limit": -1,
+            "reserved": 0
+        },
+        "floating_ips": {
+            "in_use": 0,
+            "limit": 10,
+            "reserved": 0
+        },
+        "injected_files": {
+            "in_use": 0,
+            "limit": 5,
+            "reserved": 0
+        },
+        "instances": {
+            "in_use": 0,
+            "limit": 10,
+            "reserved": 0
+        },
+        "key_pairs": {
+            "in_use": 0,
+            "limit": 100,
+            "reserved": 0
+        },
+        "metadata_items": {
+            "in_use": 0,
+            "limit": 128,
+            "reserved": 0
+        },
+        "ram": {
+            "in_use": 0,
+            "limit": 51200,
+            "reserved": 0
+        },
+        "security_groups": {
+            "in_use": 0,
+            "limit": 10,
+            "reserved": 0
+        },
+        "injected_file_content_bytes": {
+            "in_use": 0,
+            "limit": 10240,
+            "reserved": 0
+        },
+        "injected_file_path_bytes": {
+            "in_use": 0,
+            "limit": 255,
+            "reserved": 0
+        },
+        "security_group_rules": {
+            "in_use": 0,
+            "limit": 20,
+            "reserved": 0
+        }
+    }
+}
diff --git a/api-ref/v1/source/samples/user-quotas-show-response.json b/api-ref/v1/source/samples/user-quotas-show-response.json
new file mode 100644
index 00000000000..239c64d23d4
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-show-response.json
@@ -0,0 +1,17 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "fixed_ips": -1,
+        "floating_ips": 10,
+        "id": "fake_tenant",
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 10,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 10
+    }
+}
diff --git a/api-ref/v1/source/samples/user-quotas-show-response.xml b/api-ref/v1/source/samples/user-quotas-show-response.xml
new file mode 100644
index 00000000000..76a9292c137
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-show-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <cores>20</cores>
+  <fixed_ips>-1</fixed_ips>
+  <floating_ips>10</floating_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>10</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v1/source/samples/user-quotas-update-request.json b/api-ref/v1/source/samples/user-quotas-update-request.json
new file mode 100644
index 00000000000..6e5195f9ac8
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-update-request.json
@@ -0,0 +1,6 @@
+{
+    "quota_set": {
+        "force": true,
+        "instances": 9
+    }
+}
diff --git a/api-ref/v1/source/samples/user-quotas-update-request.xml b/api-ref/v1/source/samples/user-quotas-update-request.xml
new file mode 100644
index 00000000000..dd58ed24d0c
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-update-request.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <force>true</force>
+  <instances>9</instances>
+</quota_set>
diff --git a/api-ref/v1/source/samples/user-quotas-update-response.json b/api-ref/v1/source/samples/user-quotas-update-response.json
new file mode 100644
index 00000000000..5539332927e
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-update-response.json
@@ -0,0 +1,16 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "floating_ips": 10,
+        "fixed_ips": -1,
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 9,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 10
+    }
+}
diff --git a/api-ref/v1/source/samples/user-quotas-update-response.xml b/api-ref/v1/source/samples/user-quotas-update-response.xml
new file mode 100644
index 00000000000..43c36c7da31
--- /dev/null
+++ b/api-ref/v1/source/samples/user-quotas-update-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set>
+  <cores>20</cores>
+  <floating_ips>10</floating_ips>
+  <fixed_ips>-1</fixed_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>9</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v1/source/samples/version-show-response.json b/api-ref/v1/source/samples/version-show-response.json
new file mode 100644
index 00000000000..63c8957a20f
--- /dev/null
+++ b/api-ref/v1/source/samples/version-show-response.json
@@ -0,0 +1,28 @@
+{
+    "version": {
+        "id": "v1.0",
+        "links": [
+            {
+                "href": "http://23.253.211.234:8776/v1/",
+                "rel": "self"
+            },
+            {
+                "href": "http://docs.openstack.org/",
+                "rel": "describedby",
+                "type": "text/html"
+            }
+        ],
+        "media-types": [
+            {
+                "base": "application/xml",
+                "type": "application/vnd.openstack.volume+xml;version=1"
+            },
+            {
+                "base": "application/json",
+                "type": "application/vnd.openstack.volume+json;version=1"
+            }
+        ],
+        "status": "DEPRECATED",
+        "updated": "2014-06-28T12:20:21Z"
+    }
+}
diff --git a/api-ref/v1/source/samples/versions-list-response.json b/api-ref/v1/source/samples/versions-list-response.json
new file mode 100644
index 00000000000..29b36bd1760
--- /dev/null
+++ b/api-ref/v1/source/samples/versions-list-response.json
@@ -0,0 +1,26 @@
+{
+    "versions": [
+        {
+            "id": "v1.0",
+            "links": [
+                {
+                    "href": "http://23.253.211.234:8776/v1/",
+                    "rel": "self"
+                }
+            ],
+            "status": "DEPRECATED",
+            "updated": "2014-06-28T12:20:21Z"
+        },
+        {
+            "id": "v2.0",
+            "links": [
+                {
+                    "href": "http://23.253.211.234:8776/v2/",
+                    "rel": "self"
+                }
+            ],
+            "status": "CURRENT",
+            "updated": "2012-11-21T11:33:21Z"
+        }
+    ]
+}
diff --git a/api-ref/v1/source/samples/volume-create-request.json b/api-ref/v1/source/samples/volume-create-request.json
new file mode 100644
index 00000000000..fbbfe360cf2
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-create-request.json
@@ -0,0 +1,12 @@
+{
+    "volume": {
+        "display_name": "vol-001",
+        "display_description": "Another volume.",
+        "size": 30,
+        "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164",
+        "metadata": {
+            "contents": "junk"
+        },
+        "availability_zone": "us-east1"
+    }
+}
diff --git a/api-ref/v1/source/samples/volume-create-request.xml b/api-ref/v1/source/samples/volume-create-request.xml
new file mode 100644
index 00000000000..46d6c9be307
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-create-request.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume xmlns="http://docs.openstack.org/volume/api/v1"
+        display_name="vol-001"
+        display_description="Another volume."
+        size="30"
+        volume_type="289da7f8-6440-407c-9fb4-7db01ec49164"
+        availability_zone="us-east1">
+    <metadata>
+        <meta key="contents">junk</meta>
+    </metadata>
+</volume>
diff --git a/api-ref/v1/source/samples/volume-show-response.json b/api-ref/v1/source/samples/volume-show-response.json
new file mode 100644
index 00000000000..0118c2fe21e
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-show-response.json
@@ -0,0 +1,27 @@
+{
+    "volume": {
+        "id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
+        "display_name": "vol-001",
+        "display_description": "Another volume.",
+        "status": "active",
+        "size": 30,
+        "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164",
+        "metadata": {
+            "contents": "junk"
+        },
+        "availability_zone": "us-east1",
+        "bootable": "false",
+        "snapshot_id": null,
+        "attachments": [
+            {
+                "attachment_id": "03987cd1-0ad5-40d1-9b2a-7cc48295d4fa",
+                "id": "47e9ecc5-4045-4ee3-9a4b-d859d546a0cf",
+                "volume_id": "6c80f8ac-e3e2-480c-8e6e-f1db92fe4bfe",
+                "server_id": "d1c4788b-9435-42e2-9b81-29f3be1cd01f",
+                "host_name": "mitaka",
+                "device": "/"
+            }
+        ],
+        "created_at": "2012-02-14T20:53:07Z"
+    }
+}
diff --git a/api-ref/v1/source/samples/volume-show-response.xml b/api-ref/v1/source/samples/volume-show-response.xml
new file mode 100644
index 00000000000..7dc246265d1
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-show-response.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume xmlns="http://docs.openstack.org/volume/api/v1"
+        id="521752a6-acf6-4b2d-bc7a-119f9148cd8c"
+        display_name="vol-001"
+        display_description="Another volume."
+        status="active"
+        size="30"
+        volume_type="289da7f8-6440-407c-9fb4-7db01ec49164"
+        availability_zone="us-east1"
+        bootable="false"
+        created_at="2012-02-14T20:53:07Z">
+    <metadata>
+        <meta key="contents">junk</meta>
+    </metadata>
+</volume>
diff --git a/api-ref/v1/source/samples/volume-type-create-request.json b/api-ref/v1/source/samples/volume-type-create-request.json
new file mode 100644
index 00000000000..af7e47f6ba6
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-type-create-request.json
@@ -0,0 +1,8 @@
+{
+    "volume_type": {
+        "name": "vol-type-001",
+        "extra_specs": {
+            "capabilities": "gpu"
+        }
+    }
+}
diff --git a/api-ref/v1/source/samples/volume-type-create-request.xml b/api-ref/v1/source/samples/volume-type-create-request.xml
new file mode 100644
index 00000000000..dfe9b37a352
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-type-create-request.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_type xmlns="http://docs.openstack.org/volume/api/v1"
+        name="vol-type-001">
+        <extra_specs>
+            <extra_spec key="capabilities">gpu</extra_spec>
+        </extra_specs>
+</volume_type>
diff --git a/api-ref/v1/source/samples/volume-type-show-response.json b/api-ref/v1/source/samples/volume-type-show-response.json
new file mode 100644
index 00000000000..a91f2e94d63
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-type-show-response.json
@@ -0,0 +1,9 @@
+{
+    "volume_type": {
+        "id": "289da7f8-6440-407c-9fb4-7db01ec49164",
+        "name": "vol-type-001",
+        "extra_specs": {
+            "capabilities": "gpu"
+        }
+    }
+}
diff --git a/api-ref/v1/source/samples/volume-type-show-response.xml b/api-ref/v1/source/samples/volume-type-show-response.xml
new file mode 100644
index 00000000000..1c4291d08f1
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-type-show-response.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_type xmlns="http://docs.openstack.org/volume/api/v1"
+             id="289da7f8-6440-407c-9fb4-7db01ec49164"
+             name="vol-type-001">
+    <extra_specs>
+        <extra_spec key="capabilities">gpu</extra_spec>
+    </extra_specs>
+</volume_type>
diff --git a/api-ref/v1/source/samples/volume-types-list-response.json b/api-ref/v1/source/samples/volume-types-list-response.json
new file mode 100644
index 00000000000..dc4ae504670
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-types-list-response.json
@@ -0,0 +1,16 @@
+{
+    "volume_types": [
+        {
+            "id": "289da7f8-6440-407c-9fb4-7db01ec49164",
+            "name": "vol-type-001",
+            "extra_specs": {
+                "capabilities": "gpu"
+            }
+        },
+        {
+            "id": "96c3bda7-c82a-4f50-be73-ca7621794835",
+            "name": "vol-type-002",
+            "extra_specs": {}
+        }
+    ]
+}
diff --git a/api-ref/v1/source/samples/volume-types-list-response.xml b/api-ref/v1/source/samples/volume-types-list-response.xml
new file mode 100644
index 00000000000..edde1f67598
--- /dev/null
+++ b/api-ref/v1/source/samples/volume-types-list-response.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_types xmlns="http://docs.openstack.org/volume/api/v1">
+    <volume_type id="289da7f8-6440-407c-9fb4-7db01ec49164"
+                 name="vol-type-001">
+        <extra_specs>
+            <extra_spec key="capabilities">gpu</extra_spec>
+        </extra_specs>
+    </volume_type>
+    <volume_type id="96c3bda7-c82a-4f50-be73-ca7621794835"
+                 name="vol-type-002" />
+</volume_types>
diff --git a/api-ref/v1/source/samples/volumes-list-response.json b/api-ref/v1/source/samples/volumes-list-response.json
new file mode 100644
index 00000000000..0523be7aa06
--- /dev/null
+++ b/api-ref/v1/source/samples/volumes-list-response.json
@@ -0,0 +1,41 @@
+{
+    "volumes": [
+        {
+            "id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
+            "display_name": "vol-001",
+            "display_description": "Another volume.",
+            "status": "active",
+            "size": 30,
+            "volume_type": "289da7f8-6440-407c-9fb4-7db01ec49164",
+            "metadata": {
+                "contents": "junk"
+            },
+            "availability_zone": "us-east1",
+            "snapshot_id": null,
+            "attachments": [
+                {
+                    "attachment_id": "03987cd1-0ad5-40d1-9b2a-7cc48295d4fa",
+                    "id": "47e9ecc5-4045-4ee3-9a4b-d859d546a0cf",
+                    "volume_id": "6c80f8ac-e3e2-480c-8e6e-f1db92fe4bfe",
+                    "server_id": "d1c4788b-9435-42e2-9b81-29f3be1cd01f",
+                    "host_name": "mitaka",
+                    "device": "/"
+                }
+            ],
+            "created_at": "2012-02-14T20:53:07Z"
+        },
+        {
+            "id": "76b8950a-8594-4e5b-8dce-0dfa9c696358",
+            "display_name": "vol-002",
+            "display_description": "Yet another volume.",
+            "status": "active",
+            "size": 25,
+            "volume_type": "96c3bda7-c82a-4f50-be73-ca7621794835",
+            "metadata": {},
+            "availability_zone": "us-east2",
+            "snapshot_id": null,
+            "attachments": [],
+            "created_at": "2012-03-15T19:10:03Z"
+        }
+    ]
+}
diff --git a/api-ref/v1/source/samples/volumes-list-response.xml b/api-ref/v1/source/samples/volumes-list-response.xml
new file mode 100644
index 00000000000..0e20c3ed626
--- /dev/null
+++ b/api-ref/v1/source/samples/volumes-list-response.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volumes xmlns="http://docs.openstack.org/volume/api/v1">
+    <volume xmlns="http://docs.openstack.org/volume/api/v1"
+            id="521752a6-acf6-4b2d-bc7a-119f9148cd8c"
+            display_name="vol-001"
+            display_description="Another volume."
+            status="active"
+            size="30"
+            volume_type="289da7f8-6440-407c-9fb4-7db01ec49164"
+            availability_zone="us-east1"
+            created_at="2012-02-14T20:53:07Z">
+        <metadata>
+            <meta key="contents">junk</meta>
+        </metadata>
+    </volume>
+    <volume xmlns="http://docs.openstack.org/volume/api/v1"
+            id="76b8950a-8594-4e5b-8dce-0dfa9c696358"
+            display_name="vol-002"
+            display_description="Yet another volume."
+            status="active"
+            size="25"
+            volume_type="96c3bda7-c82a-4f50-be73-ca7621794835"
+            availability_zone="us-east2"
+            created_at="2012-03-15T19:10:03Z" />
+</volumes>
diff --git a/api-ref/v1/source/volumes-v1-snapshots.inc b/api-ref/v1/source/volumes-v1-snapshots.inc
new file mode 100644
index 00000000000..2866b27902b
--- /dev/null
+++ b/api-ref/v1/source/volumes-v1-snapshots.inc
@@ -0,0 +1,188 @@
+.. -*- rst -*-
+
+=========
+Snapshots
+=========
+
+Creates, lists, shows information for, and deletes snapshots. Shows
+and updates snapshot metadata.
+
+
+Show snapshot details
+=====================
+
+.. rest_method::  GET /v1/{tenant_id}/snapshots/{snapshot_id}
+
+Shows details for a snapshot.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-show-response.json
+   :language: javascript
+
+
+Delete snapshot
+===============
+
+.. rest_method::  DELETE /v1/{tenant_id}/snapshots/{snapshot_id}
+
+Deletes a snapshot.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+
+List snapshots with details
+===========================
+
+.. rest_method::  GET /v1/{tenant_id}/snapshots/detail
+
+Lists all snapshots, with details.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshots-list-response.json
+   :language: javascript
+
+
+Create snapshot
+===============
+
+.. rest_method::  POST /v1/{tenant_id}/snapshots
+
+Creates a snapshot.
+
+Error response codes:201,
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - snapshot: snapshot
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/snapshot-create-request.json
+   :language: javascript
+
+List snapshots
+==============
+
+.. rest_method::  GET /v1/{tenant_id}/snapshots
+
+Lists all snapshots.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshots-list-response.json
+   :language: javascript
+
+
+Show snapshot metadata
+======================
+
+.. rest_method::  GET /v1/{tenant_id}/snapshots/{snapshot_id}/metadata
+
+Shows metadata for a snapshot.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-metadata-show-response.json
+   :language: javascript
+
+
+Update snapshot metadata
+========================
+
+.. rest_method::  PUT /v1/{tenant_id}/snapshots/{snapshot_id}/metadata
+
+Updates metadata for a snapshot.
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/snapshot-metadata-update-request.json
+   :language: javascript
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-metadata-update-response.json
+   :language: javascript
diff --git a/api-ref/v1/source/volumes-v1-types.inc b/api-ref/v1/source/volumes-v1-types.inc
new file mode 100644
index 00000000000..3f1abe20a2d
--- /dev/null
+++ b/api-ref/v1/source/volumes-v1-types.inc
@@ -0,0 +1,218 @@
+.. -*- rst -*-
+
+============
+Volume types
+============
+
+Lists, creates, updates, shows information for, and deletes volume
+types.
+
+
+List volume types
+=================
+
+.. rest_method::  GET /v1/{tenant_id}/types
+
+Lists volume types.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-types-list-response.json
+   :language: javascript
+
+
+Create volume type
+==================
+
+.. rest_method::  POST /v1/{tenant_id}/types
+
+Creates a volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-create-request.json
+   :language: javascript
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Update volume type
+==================
+
+.. rest_method::  PUT /v1/{tenant_id}/types/{volume_type_id}
+
+Updates a volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+   - tenant_id: tenant_id
+   - volume_type_id: volume_type_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-create-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Update extra specs for a volume type
+====================================
+
+.. rest_method::  PUT /v1/{tenant_id}/types/{volume_type_id}
+
+Updates the extra specifications for a volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+   - tenant_id: tenant_id
+   - volume_type_id: volume_type_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-create-request.json
+   :language: javascript
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Show volume type details
+========================
+
+.. rest_method::  GET /v1/{tenant_id}/types/{volume_type_id}
+
+Shows details for a volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_type_id: volume_type_id
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Delete volume type
+==================
+
+.. rest_method::  DELETE /v1/{tenant_id}/types/{volume_type_id}
+
+Deletes a volume type.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_type_id: volume_type_id
diff --git a/api-ref/v1/source/volumes-v1-versions.inc b/api-ref/v1/source/volumes-v1-versions.inc
new file mode 100644
index 00000000000..693a4f3e1f7
--- /dev/null
+++ b/api-ref/v1/source/volumes-v1-versions.inc
@@ -0,0 +1,54 @@
+.. -*- rst -*-
+
+============
+API versions
+============
+
+Lists information about API versions.
+
+
+Show API v1 details
+===================
+
+.. rest_method::  GET /v1
+
+Shows Block Storage API v1 details.
+
+
+Normal response codes: 200
+Error response codes:203,
+
+
+Request
+-------
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/version-show-response.json
+   :language: javascript
+
+
+List API versions
+=================
+
+.. rest_method::  GET /
+
+Lists information about all Block Storage API versions.
+
+
+Normal response codes: 200
+Error response codes:300,
+
+
+Request
+-------
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/versions-list-response.json
+   :language: javascript
diff --git a/api-ref/v1/source/volumes-v1-volumes.inc b/api-ref/v1/source/volumes-v1-volumes.inc
new file mode 100644
index 00000000000..f1dfcade9dc
--- /dev/null
+++ b/api-ref/v1/source/volumes-v1-volumes.inc
@@ -0,0 +1,234 @@
+.. -*- rst -*-
+
+=======
+Volumes
+=======
+
+The ``snapshot_id`` and ``source_volid`` parameters specify the ID
+of the snapshot or volume from which the volume originates. If the
+volume was not created from a snapshot or source volume, these
+values are null.
+
+
+List volumes, with details
+==========================
+
+.. rest_method::  GET /v1/{tenant_id}/volumes/detail
+
+Lists all volumes, with details.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - migration_status: migration_status
+   - attachments: attachments
+   - links: links
+   - availability_zone: availability_zone
+   - encrypted: encrypted
+   - updated_at: updated_at
+   - replication_status: replication_status
+   - snapshot_id: snapshot_id
+   - id: id
+   - size: size
+   - user_id: user_id
+   - metadata: metadata
+   - status: status
+   - description: description
+   - multiattach: multiattach
+   - source_volid: source_volid
+   - consistencygroup_id: consistencygroup_id
+   - name: name
+   - bootable: bootable
+   - created_at: created_at
+   - volume_type: volume_type
+   - volumes: volumes
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volumes-list-response.json
+   :language: javascript
+
+
+Create volume
+=============
+
+.. rest_method::  POST /v1/{tenant_id}/volumes
+
+Creates a volume.
+
+Error response codes:201,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - size: size
+   - description: description
+   - imageRef: imageRef
+   - multiattach: multiattach
+   - availability_zone: availability_zone
+   - source_volid: source_volid
+   - name: name
+   - volume: volume
+   - consistencygroup_id: consistencygroup_id
+   - volume_type: volume_type
+   - snapshot_id: snapshot_id
+   - scheduler_hints: scheduler_hints
+   - source_replica: source_replica
+   - metadata: metadata
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-create-request.json
+   :language: javascript
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - description: description
+   - imageRef: imageRef
+   - multiattach: multiattach
+   - created_at: created_at
+   - availability_zone: availability_zone
+   - source_volid: source_volid
+   - name: name
+   - volume: volume
+   - volume_type: volume_type
+   - snapshot_id: snapshot_id
+   - size: size
+   - metadata: metadata
+
+
+List volumes
+============
+
+.. rest_method::  GET /v1/{tenant_id}/volumes
+
+Lists all volumes.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - volumes: volumes
+   - id: id
+   - links: links
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volumes-list-response.json
+   :language: javascript
+
+
+Show volume details
+===================
+
+.. rest_method::  GET /v1/{tenant_id}/volumes/{volume_id}
+
+Shows details for a volume.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - migration_status: migration_status
+   - attachments: attachments
+   - links: links
+   - availability_zone: availability_zone
+   - encrypted: encrypted
+   - updated_at: updated_at
+   - replication_status: replication_status
+   - snapshot_id: snapshot_id
+   - id: id
+   - size: size
+   - user_id: user_id
+   - metadata: metadata
+   - status: status
+   - description: description
+   - multiattach: multiattach
+   - source_volid: source_volid
+   - volume: volume
+   - consistencygroup_id: consistencygroup_id
+   - name: name
+   - bootable: bootable
+   - created_at: created_at
+   - volume_type: volume_type
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-show-response.json
+   :language: javascript
+
+Delete volume
+=============
+
+.. rest_method::  DELETE /v1/{tenant_id}/volumes/{volume_id}
+
+Deletes a volume.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_id: volume_id
diff --git a/api-ref/v2/source/_static/api-site.css b/api-ref/v2/source/_static/api-site.css
new file mode 100644
index 00000000000..e7f5c19bc5d
--- /dev/null
+++ b/api-ref/v2/source/_static/api-site.css
@@ -0,0 +1,81 @@
+tt.literal {
+    padding: 2px 4px;
+    font-size: 90%;
+    color: #c7254e;
+    white-space: nowrap;
+    background-color: #f9f2f4;
+    border-radius: 4px;
+}
+
+/* bootstrap users blockquote for pull quotes, so they are much
+larger, we need them smaller */
+blockquote { font-size: 1em; }
+
+pre {
+    display: block;
+    padding: 9.5px;
+    margin: 0 0 10px;
+    font-size: 13px;
+    line-height: 1.428571429;
+    color: #333;
+    word-break: break-all;
+    word-wrap: break-word;
+    background-color: #f5f5f5;
+    border: 1px solid #ccc;
+    border-radius: 4px;
+}
+
+tbody>tr:nth-child(odd)>td,
+tbody>tr:nth-child(odd)>th {
+    background-color: #f9f9f9;
+}
+
+table>thead>tr>th, table>tbody>tr>th, table>tfoot>tr>th, table>thead>tr>td, table>tbody>tr>td, table>tfoot>tr>td {
+    padding: 8px;
+    line-height: 1.428571429;
+    vertical-align: top;
+    border-top: 1px solid #ddd;
+}
+
+td>p {
+    margin: 0 0 0.5em;
+}
+
+div.document {
+    width: 80% !important;
+}
+
+@media (max-width: 1200px) {
+    div.document {
+        width: 960px !important;
+    }
+}
+
+.operation-grp {
+    padding-top: 0.5em;
+    padding-bottom: 1em;
+}
+
+/* Ensure the method buttons and their links don't split lines when
+the page is narrower */
+.operation {
+    /* this moves the link icon into the gutter */
+    margin-left: -1.25em;
+    margin-right: 1.25em;
+    white-space: nowrap;
+}
+
+/* These make the links only show up on hover */
+a.operation-anchor {
+  visibility: hidden;
+}
+
+.operation-grp:hover a.operation-anchor {
+  visibility: visible;
+}
+
+/* All tables for requests should be full width */
+
+.api-detail table.docutils {
+    width: 100%;
+}
diff --git a/api-ref/v2/source/_static/api-site.js b/api-ref/v2/source/_static/api-site.js
new file mode 100644
index 00000000000..6d99fb34c1b
--- /dev/null
+++ b/api-ref/v2/source/_static/api-site.js
@@ -0,0 +1,110 @@
+(function() {
+
+  var pageCache;
+
+  $(document).ready(function() {
+    pageCache = $('.api-documentation').html();
+
+    // Show the proper JSON/XML example when toggled
+    $('.example-select').on('change', function(e) {
+      $(e.currentTarget).find(':selected').tab('show')
+    });
+
+    // Change the text on the expando buttons when appropriate
+    $('.api-detail')
+      .on('hide.bs.collapse', function(e) {
+        processButton(this, 'detail');
+      })
+      .on('show.bs.collapse', function(e) {
+        processButton(this, 'close');
+      });
+
+    var expandAllActive = true;
+     // Expand the world
+    $('#expand-all').click(function () {
+        if (expandAllActive) {
+            expandAllActive = false;
+            $('.api-detail').collapse('show');
+            $('#expand-all').attr('data-toggle', '');
+            $(this).text('Hide All');
+        } else {
+            expandAllActive = true;
+            $('.api-detail').collapse('hide');
+            $('#expand-all').attr('data-toggle', 'collapse');
+            $(this).text('Show All');
+        }});
+
+    // Wire up the search button
+    $('#search-btn').on('click', function(e) {
+      searchPage();
+    });
+
+    // Wire up the search box enter
+    $('#search-box').on('keydown', function(e) {
+      if (e.keyCode === 13) {
+        searchPage();
+        return false;
+      }
+    });
+  });
+
+  /**
+   * highlight terms based on the regex in the provided $element
+   */
+  function highlightTextNodes($element, regex) {
+    var markup = $element.html();
+
+    // Do regex replace
+    // Inject span with class of 'highlighted termX' for google style highlighting
+    $element.html(markup.replace(regex, '>$1<span class="highlight">$2</span>$3<'));
+  }
+
+  function searchPage() {
+    $(".api-documentation").html(pageCache);
+
+    //make sure that all div's are expanded/hidden accordingly
+    $('.api-detail.in').each(function (e) {
+      $(this).collapse('hide');
+    });
+
+    var startTime = new Date().getTime(),
+      searchTerm = $('#search-box').val();
+
+    // The regex is the secret, it prevents text within tag declarations to be affected
+    var regex = new RegExp(">([^<]*)?(" + searchTerm + ")([^>]*)?<", "ig");
+    highlightTextNodes($('.api-documentation'), regex);
+
+    // Once we've highlighted the node, lets expand any with a search match in them
+    $('.api-detail').each(function () {
+
+      var $elem = $(this);
+
+      if ($elem.html().indexOf('<span class="highlight">') !== -1) {
+        $elem.collapse('show');
+        processButton($elem, 'close');
+      }
+    });
+
+    // log the results
+    if (console.log) {
+      console.log("search completed in: " + ((new Date().getTime()) - startTime) + "ms");
+    }
+
+    $('.api-detail')
+      .on('hide.bs.collapse', function (e) {
+        processButton(this, 'detail');
+      })
+      .on('show.bs.collapse', function (e) {
+        processButton(this, 'close');
+      });
+  }
+
+  /**
+   * Helper function for setting the text, styles for expandos
+   */
+  function processButton(button, text) {
+    $('#' + $(button).attr('id') + '-btn').text(text)
+      .toggleClass('btn-info')
+      .toggleClass('btn-default');
+  }
+})();
diff --git a/api-ref/v2/source/_static/bootstrap.min.css b/api-ref/v2/source/_static/bootstrap.min.css
new file mode 100644
index 00000000000..e63ddfaa0a5
--- /dev/null
+++ b/api-ref/v2/source/_static/bootstrap.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.2.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../_static/glyphicons-halflings-regular.eot);src:url(../_static/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../_static/glyphicons-halflings-regular.woff) format('woff'),url(../_static/glyphicons-halflings-regular.ttf) format('truetype'),url(../_static/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100%;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/api-ref/v2/source/_static/bootstrap.min.js b/api-ref/v2/source/_static/bootstrap.min.js
new file mode 100644
index 00000000000..7c1561a8b96
--- /dev/null
+++ b/api-ref/v2/source/_static/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.2.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/api-ref/v2/source/_static/glyphicons-halflings-regular.ttf b/api-ref/v2/source/_static/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b
GIT binary patch
literal 45404
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

literal 0
HcmV?d00001

diff --git a/api-ref/v2/source/_static/glyphicons-halflings-regular.woff b/api-ref/v2/source/_static/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35
GIT binary patch
literal 23424
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
G`u_lkUM?>H

literal 0
HcmV?d00001

diff --git a/api-ref/v2/source/api-versions.inc b/api-ref/v2/source/api-versions.inc
new file mode 100644
index 00000000000..6f7ba7bc6df
--- /dev/null
+++ b/api-ref/v2/source/api-versions.inc
@@ -0,0 +1,32 @@
+.. -*- rst -*-
+
+List Api Versions
+=================
+
+.. rest_method:: GET /
+
+Lists information for all Block Storage API versions.
+
+
+Normal response codes: 200,300
+
+Error response codes: computeFault(400, 500), serviceUnavailable(503), badRequest(400),
+unauthorized(401), forbidden(403), badMethod(405), itemNotFound(404)
+
+Request
+-------
+
+Response
+--------
+
+**Example List Api Versions: JSON request**
+
+
+.. literalinclude:: ./samples/versions-resp.json
+   :language: javascript
+
+**Example List Api Versions: XML request**
+
+
+.. literalinclude:: ./samples/versions-response.xml
+   :language: javascript
diff --git a/api-ref/v2/source/capabilities-v2.inc b/api-ref/v2/source/capabilities-v2.inc
new file mode 100644
index 00000000000..434e0720a13
--- /dev/null
+++ b/api-ref/v2/source/capabilities-v2.inc
@@ -0,0 +1,48 @@
+.. -*- rst -*-
+
+=================================================
+Capabilities for storage back ends (capabilities)
+=================================================
+
+Shows capabilities for a storage back end.
+
+
+Show back-end capabilities
+==========================
+
+.. rest_method::  GET /v2/{tenant_id}/capabilities/{hostname}
+
+Shows capabilities for a storage back end.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - hostname: hostname
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - pool_name: pool_name
+   - description: description
+   - volume_backend_name: volume_backend_name
+   - namespace: namespace
+   - visibility: visibility
+   - driver_version: driver_version
+   - vendor_name: vendor_name
+   - properties: properties
+   - storage_protocol: storage_protocol
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/backend-capabilities-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/conf.py b/api-ref/v2/source/conf.py
new file mode 100644
index 00000000000..08d5bfa0078
--- /dev/null
+++ b/api-ref/v2/source/conf.py
@@ -0,0 +1,217 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# cinder documentation build configuration file, created by
+# sphinx-quickstart on Sat May  1 15:17:47 2010.
+#
+# This file is execfile()d with the current directory set to
+# its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import os
+import subprocess
+import sys
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.abspath('../../'))
+sys.path.insert(0, os.path.abspath('../'))
+sys.path.insert(0, os.path.abspath('./'))
+
+# -- General configuration ----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+
+extensions = [
+    'ext.rest_parameters',
+    'oslosphinx',
+]
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#
+# source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Cinder API Reference'
+copyright = u'OpenStack Foundation'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+from cinder.version import version_info
+# The full version, including alpha/beta/rc tags.
+release = version_info.release_string()
+# The short X.Y version.
+version = version_info.version_string()
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# The reST default role (used for this markup: `text`) to use
+# for all documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+add_module_names = False
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# -- Options for man page output ----------------------------------------------
+
+# Grouping the document tree for man pages.
+# List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual'
+
+
+# -- Options for HTML output --------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+# html_theme_path = ["."]
+# html_theme = '_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+# html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+# html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local",
+           "-n1"]
+html_last_updated_fmt = subprocess.Popen(
+    git_cmd, stdout=subprocess.PIPE).communicate()[0]
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_use_modindex = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+# html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'cinderdoc'
+
+
+# -- Options for LaTeX output -------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+# latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+# latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass
+# [howto/manual]).
+latex_documents = [
+    ('index', 'Cinder.tex', u'OpenStack Block Storage API Documentation',
+     u'OpenStack Foundation', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+# latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_use_modindex = True
diff --git a/api-ref/v2/source/consistencygroups-v2.inc b/api-ref/v2/source/consistencygroups-v2.inc
new file mode 100644
index 00000000000..0efda0d5209
--- /dev/null
+++ b/api-ref/v2/source/consistencygroups-v2.inc
@@ -0,0 +1,253 @@
+.. -*- rst -*-
+
+==================
+Consistency groups
+==================
+
+Consistency groups enable you to create snapshots at the exact same
+point in time from multiple volumes. For example, a database might
+place its tables, logs, and configuration on separate volumes. To
+restore this database from a previous point in time, it makes sense
+to restore the logs, tables, and configuration together from the
+exact same point in time.
+
+Use the ``policy.json`` file to grant permissions for these actions
+to limit roles.
+
+
+List consistency groups
+=======================
+
+.. rest_method::  GET /v2/{tenant_id}/consistencygroups
+
+Lists consistency groups.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - id: id
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/consistency-groups-list-response.json
+   :language: javascript
+
+
+Create consistency group
+========================
+
+.. rest_method::  POST /v2/{tenant_id}/consistencygroups
+
+Creates a consistency group.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - user_id: user_id
+   - description: description
+   - availability_zone: availability_zone
+   - volume_types: volume_types
+   - project_id: project_id
+   - name: name
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/consistency-group-create-request.json
+   :language: javascript
+
+
+Show consistency group details
+==============================
+
+.. rest_method::  GET /v2/{tenant_id}/consistencygroups/{consistencygroup_id}
+
+Shows details for a consistency group.
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - consistencygroup_id: consistencygroup_id
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - availability_zone: availability_zone
+   - created_at: created_at
+   - volume_types: volume_types
+   - id: id
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/consistency-group-show-response.json
+   :language: javascript
+
+
+Create consistency group from source
+====================================
+
+.. rest_method::  POST /v2/{tenant_id}/consistencygroups/create_from_src
+
+Creates a consistency group from source.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - user_id: user_id
+   - description: description
+   - cgsnapshot_id: cgsnapshot_id
+   - source_cgid: source_cgid
+   - project_id: project_id
+   - name: name
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/consistency-group-create-from-src-request.json
+   :language: javascript
+
+
+Delete consistency group
+========================
+
+.. rest_method::  POST /v2/{tenant_id}/consistencygroups/{consistencygroup_id}/delete
+
+Deletes a consistency group.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - force: force
+   - tenant_id: tenant_id
+   - consistencygroup_id: consistencygroup_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/consistency-group-delete-request.json
+   :language: javascript
+
+
+List consistency groups with details
+====================================
+
+.. rest_method::  GET /v2/{tenant_id}/consistencygroups/detail
+
+Lists consistency groups with details.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - availability_zone: availability_zone
+   - created_at: created_at
+   - volume_types: volume_types
+   - id: id
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/consistency-groups-list-detailed-response.json
+   :language: javascript
+
+
+Update consistency group
+========================
+
+.. rest_method::  PUT /v2/{tenant_id}/consistencygroups/{consistencygroup_id}/update
+
+Updates a consistency group.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - remove_volumes: remove_volumes
+   - description: description
+   - add_volumes: add_volumes
+   - name: name
+   - tenant_id: tenant_id
+   - consistencygroup_id: consistencygroup_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/consistency-group-update-request.json
+   :language: javascript
diff --git a/api-ref/v2/source/ext-backups-actions-v2.inc b/api-ref/v2/source/ext-backups-actions-v2.inc
new file mode 100644
index 00000000000..d9b0cb9c9b0
--- /dev/null
+++ b/api-ref/v2/source/ext-backups-actions-v2.inc
@@ -0,0 +1,38 @@
+.. -*- rst -*-
+
+================================
+Backup actions (backups, action)
+================================
+
+Force-deletes a backup.
+
+
+Force-delete backup
+===================
+
+.. rest_method::  POST /v2/{tenant_id}/backups/{backup_id}/action
+
+Force-deletes a backup. Specify the ``os-force_delete`` action in the request body.
+
+This operations deletes the backup and any backup data.
+
+The backup driver returns the ``405`` status code if it does not
+support this operation.
+
+Error response codes:404,405,202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-force_delete: os-force_delete
+   - tenant_id: tenant_id
+   - backup_id: backup_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/backup-force-delete-request.json
+   :language: javascript
diff --git a/api-ref/v2/source/ext-backups.inc b/api-ref/v2/source/ext-backups.inc
new file mode 100644
index 00000000000..6132d444037
--- /dev/null
+++ b/api-ref/v2/source/ext-backups.inc
@@ -0,0 +1,276 @@
+.. -*- rst -*-
+
+=================
+Backups (backups)
+=================
+
+A backup is a full copy of a volume stored in an external service.
+The service can be configured. The only supported service is Object
+Storage. A backup can subsequently be restored from the external
+service to either the same volume that the backup was originally
+taken from or to a new volume. Backup and restore operations can
+only be carried out on volumes that are in an unattached and
+available state.
+
+When you create, list, or delete backups, these status values are
+possible:
+
+**Backup statuses**
+
++-----------------+---------------------------------------------+
+| Status          | Description                                 |
++-----------------+---------------------------------------------+
+| creating        | The backup is being created.                |
++-----------------+---------------------------------------------+
+| available       | The backup is ready to restore to a volume. |
++-----------------+---------------------------------------------+
+| deleting        | The backup is being deleted.                |
++-----------------+---------------------------------------------+
+| error           | A backup error occurred.                    |
++-----------------+---------------------------------------------+
+| restoring       | The backup is being restored to a volume.   |
++-----------------+---------------------------------------------+
+| error_restoring | A backup restoration error occurred.        |
++-----------------+---------------------------------------------+
+
+
+If an error occurs, you can find more information about the error
+in the ``fail_reason`` field for the backup.
+
+
+List backups with details
+=========================
+
+.. rest_method::  GET /v2/{tenant_id}/backups/detail
+
+Lists Block Storage backups, with details, to which the tenant has access.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - object_count: object_count
+   - fail_reason: fail_reason
+   - description: description
+   - links: links
+   - availability_zone: availability_zone
+   - created_at: created_at
+   - updated_at: updated_at
+   - name: name
+   - has_dependent_backups: has_dependent_backups
+   - volume_id: volume_id
+   - container: container
+   - backups: backups
+   - size: size
+   - id: id
+   - is_incremental: is_incremental
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/backups-list-detailed-response.json
+   :language: javascript
+
+
+Show backup details
+===================
+
+.. rest_method::  GET /v2/{tenant_id}/backups/{backup_id}
+
+Shows details for a backup.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - backup_id: backup_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - object_count: object_count
+   - container: container
+   - description: description
+   - links: links
+   - availability_zone: availability_zone
+   - created_at: created_at
+   - updated_at: updated_at
+   - name: name
+   - has_dependent_backups: has_dependent_backups
+   - volume_id: volume_id
+   - fail_reason: fail_reason
+   - size: size
+   - backup: backup
+   - id: id
+   - is_incremental: is_incremental
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/backup-show-response.json
+   :language: javascript
+
+
+Delete backup
+=============
+
+.. rest_method::  DELETE /v2/{tenant_id}/backups/{backup_id}
+
+Deletes a backup.
+
+Error response codes:204,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - backup_id: backup_id
+
+
+Restore backup
+==============
+
+.. rest_method::  POST /v2/{tenant_id}/backups/{backup_id}/restore
+
+Restores a Block Storage backup to an existing or new Block Storage volume.
+
+You must specify either the UUID or name of the volume. If you
+specify both the UUID and name, the UUID takes priority.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - restore: restore
+   - name: name
+   - volume_id: volume_id
+   - tenant_id: tenant_id
+   - backup_id: backup_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/backup-restore-request.json
+   :language: javascript
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - restore: restore
+   - backup_id: backup_id
+   - volume_id: volume_id
+
+Create backup
+=============
+
+.. rest_method::  POST /v2/{tenant_id}/backups
+
+Creates a Block Storage backup from a volume.
+
+Error response codes:202,
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - container: container
+   - description: description
+   - incremental: incremental
+   - volume_id: volume_id
+   - force: force
+   - backup: backup
+   - name: name
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/backup-create-request.json
+   :language: javascript
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - backup: backup
+   - id: id
+   - links: links
+   - name: name
+
+List backups
+============
+
+.. rest_method::  GET /v2/{tenant_id}/backups
+
+Lists Block Storage backups to which the tenant has access.
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - backups: backups
+   - id: id
+   - links: links
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/backups-list-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/index.rst b/api-ref/v2/source/index.rst
new file mode 100644
index 00000000000..e46983c8b43
--- /dev/null
+++ b/api-ref/v2/source/index.rst
@@ -0,0 +1,28 @@
+:tocdepth: 2
+
+==============
+ Volume API V2
+==============
+
+.. rest_expand_all::
+
+.. include:: api-versions.inc
+.. include:: ext-backups.inc
+.. include:: ext-backups-actions-v2.inc
+.. include:: capabilities-v2.inc
+.. include:: os-cgsnapshots-v2.inc
+.. include:: consistencygroups-v2.inc
+.. include:: limits.inc
+.. include:: os-vol-image-meta-v2.inc
+.. include:: os-vol-pool-v2.inc
+.. include:: os-vol-transfer-v2.inc
+.. include:: qos-specs-v2-qos-specs.inc
+.. include:: quota-sets.inc
+.. include:: volume-manage.inc
+.. include:: volume-type-access.inc
+.. include:: volumes-v2-extensions.inc
+.. include:: volumes-v2-snapshots.inc
+.. include:: volumes-v2-types.inc
+.. include:: volumes-v2-versions.inc
+.. include:: volumes-v2-volumes-actions.inc
+.. include:: volumes-v2-volumes.inc
diff --git a/api-ref/v2/source/limits.inc b/api-ref/v2/source/limits.inc
new file mode 100644
index 00000000000..0abdc8cffee
--- /dev/null
+++ b/api-ref/v2/source/limits.inc
@@ -0,0 +1,57 @@
+.. -*- rst -*-
+
+===============
+Limits (limits)
+===============
+
+Shows absolute limits for a tenant.
+
+An absolute limit value of ``-1`` indicates that the absolute limit
+for the item is infinite.
+
+
+Show absolute limits
+====================
+
+.. rest_method::  GET /v2/{tenant_id}/limits
+
+Shows absolute limits for a tenant.
+
+An absolute limit value of ``-1`` indicates that the absolute limit
+for the item is infinite.
+
+
+Normal response codes: 200
+Error response codes:203,
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - totalSnapshotsUsed: totalSnapshotsUsed
+   - maxTotalBackups: maxTotalBackups
+   - maxTotalVolumeGigabytes: maxTotalVolumeGigabytes
+   - limits: limits
+   - maxTotalSnapshots: maxTotalSnapshots
+   - maxTotalBackupGigabytes: maxTotalBackupGigabytes
+   - totalBackupGigabytesUsed: totalBackupGigabytesUsed
+   - maxTotalVolumes: maxTotalVolumes
+   - totalVolumesUsed: totalVolumesUsed
+   - rate: rate
+   - totalBackupsUsed: totalBackupsUsed
+   - totalGigabytesUsed: totalGigabytesUsed
+   - absolute: absolute
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/limits-show-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/os-cgsnapshots-v2.inc b/api-ref/v2/source/os-cgsnapshots-v2.inc
new file mode 100644
index 00000000000..a9897fb15f8
--- /dev/null
+++ b/api-ref/v2/source/os-cgsnapshots-v2.inc
@@ -0,0 +1,179 @@
+.. -*- rst -*-
+
+===========================
+Consistency group snapshots
+===========================
+
+Lists all, lists all with details, shows details for, creates, and
+deletes consistency group snapshots.
+
+
+Delete consistency group snapshot
+=================================
+
+.. rest_method::  DELETE /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id}
+
+Deletes a consistency group snapshot.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - cgsnapshot_id: cgsnapshot_id
+
+
+Show consistency group snapshot details
+=======================================
+
+.. rest_method::  GET /v2/{tenant_id}/cgsnapshots/{cgsnapshot_id}
+
+Shows details for a consistency group snapshot.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - cgsnapshot_id: cgsnapshot_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - created_at: created_at
+   - consistencygroup_id: consistencygroup_id
+   - id: id
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/cgsnapshots-show-response.json
+   :language: javascript
+
+
+List consistency group snapshots with details
+=============================================
+
+.. rest_method::  GET /v2/{tenant_id}/cgsnapshots/detail
+
+Lists all consistency group snapshots with details.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - created_at: created_at
+   - consistencygroup_id: consistencygroup_id
+   - id: id
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/cgsnapshots-list-detailed-response.json
+   :language: javascript
+
+List consistency group snapshots
+================================
+
+.. rest_method::  GET /v2/{tenant_id}/cgsnapshots
+
+Lists all consistency group snapshots.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - id: id
+   - name: name
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/cgsnapshots-list-response.json
+   :language: javascript
+
+
+
+
+Create consistency group snapshot
+=================================
+
+.. rest_method::  POST /v2/{tenant_id}/cgsnapshots
+
+Creates a consistency group snapshot.
+
+Error response codes:202,
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - name: name
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/cgsnapshots-create-request.json
+   :language: javascript
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - created_at: created_at
+   - consistencygroup_id: consistencygroup_id
+   - id: id
+   - name: name
diff --git a/api-ref/v2/source/os-vol-image-meta-v2.inc b/api-ref/v2/source/os-vol-image-meta-v2.inc
new file mode 100644
index 00000000000..e36f5e5e03f
--- /dev/null
+++ b/api-ref/v2/source/os-vol-image-meta-v2.inc
@@ -0,0 +1,46 @@
+.. -*- rst -*-
+
+===================================================
+Volume image metadata extension (os-vol-image-meta)
+===================================================
+
+Shows image metadata that is associated with a volume.
+
+
+Show image metadata for volume
+==============================
+
+.. rest_method::  GET /v2/{tenant_id}/os-vol-image-meta
+
+Shows image metadata for a volume.
+
+When the request is made, the caller must specify a reference to an
+existing storage volume in the ``ref`` element. Each storage driver
+may interpret the existing storage volume reference differently but
+should accept a reference structure containing either a ``source-
+volume-id`` or ``source-volume-name`` element, if possible.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - description: description
+   - availability_zone: availability_zone
+   - bootable: bootable
+   - volume_type: volume_type
+   - name: name
+   - volume: volume
+   - host: host
+   - ref: ref
+   - metadata: metadata
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/image-metadata-show-request.json
+   :language: javascript
diff --git a/api-ref/v2/source/os-vol-pool-v2.inc b/api-ref/v2/source/os-vol-pool-v2.inc
new file mode 100644
index 00000000000..f7afde10b8d
--- /dev/null
+++ b/api-ref/v2/source/os-vol-pool-v2.inc
@@ -0,0 +1,50 @@
+.. -*- rst -*-
+
+======================
+Back-end storage pools
+======================
+
+Administrator only. Lists all back-end storage pools that are known
+to the scheduler service.
+
+
+List back-end storage pools
+===========================
+
+.. rest_method::  GET /v2/{tenant_id}/scheduler-stats/get_pools
+
+Lists all back-end storage pools.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - detail: detail
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - updated: updated
+   - QoS_support: QoS_support
+   - name: name
+   - total_capacity: total_capacity
+   - volume_backend_name: volume_backend_name
+   - capabilities: capabilities
+   - free_capacity: free_capacity
+   - driver_version: driver_version
+   - reserved_percentage: reserved_percentage
+   - storage_protocol: storage_protocol
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/pools-list-detailed-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/os-vol-transfer-v2.inc b/api-ref/v2/source/os-vol-transfer-v2.inc
new file mode 100644
index 00000000000..17ef4d42bb8
--- /dev/null
+++ b/api-ref/v2/source/os-vol-transfer-v2.inc
@@ -0,0 +1,217 @@
+.. -*- rst -*-
+
+===============
+Volume transfer
+===============
+
+Transfers a volume from one user to another user.
+
+
+Accept volume transfer
+======================
+
+.. rest_method::  POST /v2/{tenant_id}/os-volume-transfer/{transfer_id}/accept
+
+Accepts a volume transfer.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - auth_key: auth_key
+   - transfer_id: transfer_id
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-transfer-accept-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_id: volume_id
+   - id: id
+   - links: links
+   - name: name
+
+
+Create volume transfer
+======================
+
+.. rest_method::  POST /v2/{tenant_id}/os-volume-transfer
+
+Creates a volume transfer.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - name: name
+   - volume_id: volume_id
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-transfer-create-request.json
+   :language: javascript
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - auth_key: auth_key
+   - links: links
+   - created_at: created_at
+   - volume_id: volume_id
+   - id: id
+   - name: name
+
+
+List volume transfers
+=====================
+
+.. rest_method::  GET /v2/{tenant_id}/os-volume-transfer
+
+Lists volume transfers.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_id: volume_id
+   - id: id
+   - links: links
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-transfers-list-response.json
+   :language: javascript
+
+
+Show volume transfer details
+============================
+
+.. rest_method::  GET /v2/{tenant_id}/os-volume-transfer/{transfer_id}
+
+Shows details for a volume transfer.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - transfer_id: transfer_id
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - created_at: created_at
+   - volume_id: volume_id
+   - id: id
+   - links: links
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-transfer-show-response.json
+   :language: javascript
+
+
+Delete volume transfer
+======================
+
+.. rest_method::  DELETE /v2/{tenant_id}/os-volume-transfer/{transfer_id}
+
+Deletes a volume transfer.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - transfer_id: transfer_id
+   - tenant_id: tenant_id
+
+
+List volume transfers, with details
+===================================
+
+.. rest_method::  GET /v2/{tenant_id}/os-volume-transfer/detail
+
+Lists volume transfers, with details.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - created_at: created_at
+   - volume_id: volume_id
+   - id: id
+   - links: links
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-transfers-list-detailed-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/parameters.yaml b/api-ref/v2/source/parameters.yaml
new file mode 100644
index 00000000000..596fb2880a6
--- /dev/null
+++ b/api-ref/v2/source/parameters.yaml
@@ -0,0 +1,1570 @@
+# variables in header
+x-openstack-request-id:
+  description: >
+    foo
+  in: header
+  required: false
+  type: string
+
+# variables in path
+admin_tenant_id:
+  description: |
+    The UUID of the administrative tenant.
+  in: path
+  required: false
+  type: string
+backup_id:
+  description: |
+    The UUID for a backup.
+  in: path
+  required: false
+  type: string
+cgsnapshot_id_1:
+  description: |
+    The ID of the consistency group snapshot.
+  in: path
+  required: false
+  type: string
+consistencygroup_id_2:
+  description: |
+    The ID of the consistency group.
+  in: path
+  required: false
+  type: string
+force_3:
+  description: |
+    To delete a QoS specification even if it is in-
+    use, set to ``true``. Default is ``false``.
+  in: path
+  required: false
+  type: boolean
+hostname:
+  description: |
+    The name of the host that hosts the storage back
+    end.
+  in: path
+  required: false
+  type: string
+qos_id:
+  description: |
+    The ID of the QoS specification.
+  in: path
+  required: false
+  type: string
+snapshot_id_1:
+  description: |
+    The UUID of the snapshot.
+  in: path
+  required: false
+  type: string
+tenant_id:
+  description: |
+    The UUID of the tenant in a multi-tenancy cloud.
+  in: path
+  required: false
+  type: string
+transfer_id:
+  description: |
+    The unique identifier for a volume transfer.
+  in: path
+  required: false
+  type: string
+user_id_1:
+  description: |
+    The user ID. Specify in the URI as
+    ``user_id={user_id}``.
+  in: path
+  required: false
+  type: string
+volume_id_1:
+  description: |
+    The UUID of the volume.
+  in: path
+  required: false
+  type: string
+volume_type:
+  description: |
+    The ID of Volume Type to be accessed by project.
+  in: path
+  required: false
+  type: string
+volume_type_id:
+  description: |
+    The UUID for an existing volume type.
+  in: path
+  required: false
+  type: string
+
+# variables in query
+detail:
+  description: |
+    Indicates whether to show pool details or only
+    pool names in the response.  Set to ``true`` to show pool details.
+    Set to ``false`` to show only pool names. Default is ``false``.
+  in: query
+  required: false
+  type: boolean
+limit:
+  description: |
+    Requests a page size of items. Returns a number
+    of items up to a limit value. Use the ``limit`` parameter to make
+    an initial limited request and use the ID of the last-seen item
+    from the response as the ``marker`` parameter value in a
+    subsequent limited request.
+  in: query
+  required: false
+  type: integer
+marker:
+  description: |
+    The ID of the last-seen item. Use the ``limit``
+    parameter to make an initial limited request and use the ID of the
+    last-seen item from the response as the ``marker`` parameter value
+    in a subsequent limited request.
+  in: query
+  required: false
+  type: string
+sort:
+  description: |
+    Comma-separated list of sort keys and optional
+    sort directions in the form of < key > [: < direction > ]. A valid
+    direction is ``asc`` (ascending) or ``desc`` (descending).
+  in: query
+  required: false
+  type: string
+sort_dir:
+  description: |
+    Sorts by one or more sets of attribute and sort
+    direction combinations. If you omit the sort direction in a set,
+    default is ``desc``.
+  in: query
+  required: false
+  type: string
+sort_key:
+  description: |
+    Sorts by an attribute. A valid value is ``name``,
+    ``status``, ``container_format``, ``disk_format``, ``size``,
+    ``id``, ``created_at``, or ``updated_at``. Default is
+    ``created_at``. The API uses the natural sorting direction of the
+    ``sort_key`` attribute value.
+  in: query
+  required: false
+  type: string
+sort_key_1:
+  description: |
+    Sorts by an image attribute. A valid value is
+    ``name``, ``status``, ``container_format``, ``disk_format``,
+    ``size``, ``id``, ``created_at``, or ``updated_at``. Default is
+    ``created_at``. The API uses the natural sorting direction of the
+    ``sort_key`` attribute value.
+  in: query
+  required: false
+  type: string
+usage:
+  description: |
+    Set to ``usage=true`` to show quota usage.
+    Default is ``false``.
+  in: query
+  required: false
+  type: boolean
+
+# variables in body
+QoS_support:
+  description: |
+    The quality of service (QoS) support.
+  in: body
+  required: true
+  type: boolean
+absolute:
+  description: |
+    An ``absolute`` limits object.
+  in: body
+  required: true
+  type: object
+add_volumes:
+  description: |
+    One or more volume UUIDs, separated by commas, to
+    add to the volume consistency group.
+  in: body
+  required: false
+  type: string
+alias:
+  description: |
+    The alias for the extension. For example,
+    "FOXNSOX", "os- availability-zone", "os-extended-quotas", "os-
+    share-unmanage" or "os-used-limits."
+  in: body
+  required: true
+  type: string
+attach_status:
+  description: |
+    The volume attach status.
+  in: body
+  required: false
+  type: string
+attachment_id:
+  description: |
+    The interface ID.
+  in: body
+  required: false
+  type: string
+attachments:
+  description: |
+    Instance attachment information.  If this volume
+    is attached to a server instance, the attachments list includes
+    the UUID of the attached server, an attachment UUID, the name of
+    the attached host, if any, the volume UUID, the device, and the
+    device UUID.  Otherwise, this list is empty.
+  in: body
+  required: true
+  type: array
+auth_key:
+  description: |
+    The authentication key for the volume transfer.
+  in: body
+  required: true
+  type: string
+availability_zone:
+  description: |
+    The name of the availability zone.
+  in: body
+  required: false
+  type: string
+availability_zone_1:
+  description: |
+    The availability zone.
+  in: body
+  required: false
+  type: string
+availability_zone_2:
+  description: |
+    The availability zone.
+  in: body
+  required: true
+  type: string
+availability_zone_3:
+  description: |
+    The availability zone name.
+  in: body
+  required: true
+  type: string
+backup:
+  description: |
+    A ``backup`` object.
+  in: body
+  required: true
+  type: object
+backups:
+  description: |
+    A list of ``backup`` objects.
+  in: body
+  required: true
+  type: array
+bootable:
+  description: |
+    Enables or disables the bootable attribute. You
+    can boot an instance from a bootable volume.
+  in: body
+  required: true
+  type: boolean
+bootable_1:
+  description: |
+    Enables or disables the bootable attribute. You
+    can boot an instance from a bootable volume.
+  in: body
+  required: false
+  type: boolean
+capabilities:
+  description: |
+    The capabilities for the back end.  The value is
+    either ``null`` or a string value that indicates the capabilities
+    for each pool. For example, ``total_capacity`` or ``QoS_support``.
+  in: body
+  required: true
+  type: object
+cgsnapshot_id:
+  description: |
+    The UUID of the consistency group snapshot.
+  in: body
+  required: false
+  type: string
+connector:
+  description: |
+    The ``connector`` object.
+  in: body
+  required: true
+  type: object
+consistencygroup_id:
+  description: |
+    The UUID of the consistency group.
+  in: body
+  required: true
+  type: string
+consistencygroup_id_1:
+  description: |
+    The UUID of the consistency group.
+  in: body
+  required: false
+  type: string
+consumer:
+  description: |
+    The consumer type.
+  in: body
+  required: false
+  type: string
+consumer_1:
+  description: |
+    The consumer type.
+  in: body
+  required: true
+  type: string
+container:
+  description: |
+    The container name or null.
+  in: body
+  required: true
+  type: string
+cores:
+  description: |
+    The number of instance cores that are allowed for
+    each tenant.
+  in: body
+  required: true
+  type: integer
+created_at:
+  description: |
+    The date and time when the resource was created.
+
+    The date and time stamp format is `ISO 8601
+    <https://en.wikipedia.org/wiki/ISO_8601>`_:
+
+    ::
+
+       CCYY-MM-DDThh:mm:ss±hh:mm
+
+    For example, ``2015-08-27T09:49:58-05:00``.
+
+    The ``±hh:mm`` value, if included, is the time zone as an offset
+    from UTC.
+  in: body
+  required: true
+  type: string
+created_at_1:
+  description: |
+    Date and time when the volume was created.
+  in: body
+  required: true
+  type: string
+description:
+  description: |
+    The backup description or null.
+  in: body
+  required: true
+  type: string
+description_1:
+  description: |
+    The consistency group snapshot description.
+  in: body
+  required: true
+  type: string
+description_10:
+  description: |
+    The capabilities description.
+  in: body
+  required: true
+  type: string
+description_11:
+  description: |
+    The consistency group description.
+  in: body
+  required: false
+  type: string
+description_2:
+  description: |
+    The description of the consistency group.
+  in: body
+  required: false
+  type: string
+description_3:
+  description: |
+    The description of the consistency group.
+  in: body
+  required: true
+  type: string
+description_4:
+  description: |
+    A description for the snapshot. Default is
+    ``None``.
+  in: body
+  required: false
+  type: string
+description_5:
+  description: |
+    The volume description.
+  in: body
+  required: false
+  type: string
+description_6:
+  description: |
+    The consistency group description.
+  in: body
+  required: true
+  type: string
+description_7:
+  description: |
+    The extension description.
+  in: body
+  required: true
+  type: string
+description_8:
+  description: |
+    A description for the snapshot.
+  in: body
+  required: true
+  type: string
+description_9:
+  description: |
+    The volume description.
+  in: body
+  required: true
+  type: string
+driver_version:
+  description: |
+    The driver version.
+  in: body
+  required: true
+  type: string
+encrypted:
+  description: |
+    If true, this volume is encrypted.
+  in: body
+  required: true
+  type: boolean
+extra_specs:
+  description: |
+    A set of key and value pairs that contains the
+    specifications for a volume type.
+  in: body
+  required: true
+  type: object
+is_public:
+  description:
+    Volume type which is accessible to the public.
+  in: body
+  required: false
+  type: boolean
+extra_specs_1:
+  description: |
+    A key and value pair that contains additional
+    specifications that are associated with the volume type. Examples
+    include capabilities, capacity, compression, and so on, depending
+    on the storage driver in use.
+  in: body
+  required: true
+  type: object
+fail_reason:
+  description: |
+    If the backup failed, the reason for the failure.
+    Otherwise, null.
+  in: body
+  required: true
+  type: string
+fixed_ips:
+  description: |
+    The number of fixed IP addresses that are allowed
+    for each tenant. Must be equal to or greater than the number of
+    allowed instances.
+  in: body
+  required: true
+  type: integer
+floating_ips:
+  description: |
+    The number of floating IP addresses that are
+    allowed for each tenant.
+  in: body
+  required: true
+  type: integer
+force:
+  description: |
+    Indicates whether to backup, even if the volume
+    is attached. Default is ``false``.
+  in: body
+  required: false
+  type: boolean
+force_1:
+  description: |
+    Indicates whether to snapshot, even if the volume
+    is attached. Default is ``false``.
+  in: body
+  required: false
+  type: boolean
+force_2:
+  description: |
+    If set to ``true``, forces deletion of a
+    consistency group that has a registered volume.
+  in: body
+  required: false
+  type: boolean
+free_capacity:
+  description: |
+    The amount of free capacity for the back-end
+    volume, in GBs. A valid value is a string, such as ``unknown``, or
+    an integer.
+  in: body
+  required: true
+  type: string
+has_dependent_backups:
+  description: |
+    If this value is ``true``, the backup depends on
+    other backups.
+  in: body
+  required: false
+  type: boolean
+host:
+  description: |
+    The OpenStack Block Storage host where the
+    existing volume resides.
+  in: body
+  required: true
+  type: string
+host_name:
+  description: |
+    The name of the attaching host.
+  in: body
+  required: false
+  type: string
+id:
+  description: |
+    The UUID of the volume transfer.
+  in: body
+  required: true
+  type: string
+id_1:
+  description: |
+    The UUID of the backup.
+  in: body
+  required: true
+  type: string
+id_2:
+  description: |
+    The UUID of the consistency group snapshot.
+  in: body
+  required: true
+  type: string
+id_3:
+  description: |
+    The generated ID for the QoS specification.
+  in: body
+  required: true
+  type: string
+id_4:
+  description: |
+    The snapshot UUID.
+  in: body
+  required: true
+  type: string
+id_5:
+  description: |
+    The UUID of the volume.
+  in: body
+  required: true
+  type: string
+id_6:
+  description: |
+    The UUID of the consistency group.
+  in: body
+  required: true
+  type: string
+id_7:
+  description: |
+    The ID for the quota set.
+  in: body
+  required: true
+  type: integer
+imageRef:
+  description: |
+    The UUID of the image from which you want to
+    create the volume. Required to create a bootable volume.
+  in: body
+  required: false
+  type: string
+in_use:
+  description: |
+    The in use data size. Visible only if you set the
+    ``usage=true`` query parameter.
+  in: body
+  required: false
+  type: string
+incremental:
+  description: |
+    The backup mode. A valid value is ``true`` for
+    incremental backup mode or ``false`` for full backup mode. Default
+    is ``false``.
+  in: body
+  required: false
+  type: boolean
+injected_file_content_bytes:
+  description: |
+    The number of bytes of content that are allowed
+    for each injected file.
+  in: body
+  required: true
+  type: integer
+injected_file_path_bytes:
+  description: |
+    The number of bytes that are allowed for each
+    injected file path.
+  in: body
+  required: true
+  type: integer
+injected_files:
+  description: |
+    The number of injected files that are allowed for
+    each tenant.
+  in: body
+  required: true
+  type: integer
+instance_uuid:
+  description: |
+    The UUID of the attaching instance.
+  in: body
+  required: false
+  type: string
+instances:
+  description: |
+    The number of instances that are allowed for each
+    tenant.
+  in: body
+  required: true
+  type: integer
+is_incremental:
+  description: |
+    Indicates whether the backup mode is incremental.
+    If this value is ``true``, the backup mode is incremental. If this
+    value is ``false``, the backup mode is full.
+  in: body
+  required: false
+  type: boolean
+key:
+  description: |
+    The metadata key name for the metadata that you
+    want to remove.
+  in: body
+  required: true
+  type: string
+key_pairs:
+  description: |
+    The number of key pairs that are allowed for each
+    user.
+  in: body
+  required: true
+  type: integer
+keys:
+  description: |
+    List of Keys.
+  in: body
+  required: true
+  type: array
+limits:
+  description: |
+    A list of ``limit`` objects.
+  in: body
+  required: true
+  type: object
+links:
+  description: |
+    Links for the volume transfer.
+  in: body
+  required: true
+  type: array
+links_1:
+  description: |
+    Links for the backup.
+  in: body
+  required: true
+  type: array
+links_2:
+  description: |
+    The QoS specification links.
+  in: body
+  required: true
+  type: array
+links_3:
+  description: |
+    The volume links.
+  in: body
+  required: true
+  type: array
+links_4:
+  description: |
+    List of links related to the extension.
+  in: body
+  required: true
+  type: array
+location:
+  description: |
+    Full URL to a service or server.
+  format: uri
+  in: body
+  required: true
+  type: string
+maxTotalBackupGigabytes:
+  description: |
+    The maximum total amount of backups, in gibibytes
+    (GiB).
+  in: body
+  required: true
+  type: integer
+maxTotalBackups:
+  description: |
+    The maximum number of backups.
+  in: body
+  required: true
+  type: integer
+maxTotalSnapshots:
+  description: |
+    The maximum number of snapshots.
+  in: body
+  required: true
+  type: integer
+maxTotalVolumeGigabytes:
+  description: |
+    The maximum total amount of volumes, in gibibytes
+    (GiB).
+  in: body
+  required: true
+  type: integer
+maxTotalVolumes:
+  description: |
+    The maximum number of volumes.
+  in: body
+  required: true
+  type: integer
+metadata:
+  description: |
+    One or more metadata key and value pairs for the
+    snapshot, if any.
+  in: body
+  required: true
+  type: object
+metadata_1:
+  description: |
+    A ``metadata`` object. Contains one or more
+    metadata key and value pairs that are associated with the volume.
+  in: body
+  required: true
+  type: object
+metadata_2:
+  description: |
+    One or more metadata key and value pairs that are
+    associated with the volume.
+  in: body
+  required: false
+  type: object
+metadata_3:
+  description: |
+    One or more metadata key and value pairs that are
+    associated with the volume.
+  in: body
+  required: true
+  type: object
+metadata_4:
+  description: |
+    One or more metadata key and value pairs to
+    associate with the volume.
+  in: body
+  required: false
+  type: string
+metadata_5:
+  description: |
+    The image metadata to add to the volume as a set
+    of metadata key and value pairs.
+  in: body
+  required: true
+  type: object
+metadata_6:
+  description: |
+    One or more metadata key and value pairs to
+    associate with the volume.
+  in: body
+  required: false
+  type: object
+metadata_7:
+  description: |
+    One or more metadata key and value pairs for the
+    snapshot.
+  in: body
+  required: false
+  type: object
+metadata_items:
+  description: |
+    The number of metadata items that are allowed for
+    each instance.
+  in: body
+  required: true
+  type: integer
+migration_status:
+  description: |
+    The volume migration status.
+  in: body
+  required: true
+  type: string
+migration_status_1:
+  description: |
+    The volume migration status.
+  in: body
+  required: false
+  type: string
+mountpoint:
+  description: |
+    The attaching mount point.
+  in: body
+  required: false
+  type: string
+multiattach:
+  description: |
+    To enable this volume to attach to more than one
+    server, set this value to ``true``. Default is ``false``.
+  in: body
+  required: false
+  type: boolean
+multiattach_1:
+  description: |
+    If true, this volume can attach to more than one
+    instance.
+  in: body
+  required: true
+  type: boolean
+name:
+  description: |
+    The name of the volume transfer.
+  in: body
+  required: true
+  type: string
+name_1:
+  description: |
+    The backup name.
+  in: body
+  required: true
+  type: string
+name_10:
+  description: |
+    The name of the extension. For example, "Fox In
+    Socks."
+  in: body
+  required: true
+  type: string
+name_11:
+  description: |
+    The name of the back-end volume.
+  in: body
+  required: true
+  type: string
+name_12:
+  description: |
+    The name of the snapshot.
+  in: body
+  required: true
+  type: string
+name_13:
+  description: |
+    The volume name.
+  in: body
+  required: true
+  type: string
+name_14:
+  description: |
+    The name of the volume to which you want to
+    restore a backup.
+  in: body
+  required: false
+  type: string
+name_15:
+  description: |
+    The consistency group name.
+  in: body
+  required: false
+  type: string
+name_2:
+  description: |
+    The consistency group snapshot name.
+  in: body
+  required: true
+  type: string
+name_3:
+  description: |
+    The name of the consistency group.
+  in: body
+  required: true
+  type: string
+name_4:
+  description: |
+    The name of the QoS specification.
+  in: body
+  required: true
+  type: string
+name_5:
+  description: |
+    The name of the snapshot. Default is ``None``.
+  in: body
+  required: false
+  type: string
+name_6:
+  description: |
+    The volume transfer name.
+  in: body
+  required: false
+  type: string
+name_7:
+  description: |
+    The name of the volume type.
+  in: body
+  required: true
+  type: string
+name_8:
+  description: |
+    The volume name.
+  in: body
+  required: false
+  type: string
+name_9:
+  description: |
+    The consistency group name.
+  in: body
+  required: true
+  type: string
+namespace:
+  description: |
+    Link associated to the extension.
+  in: body
+  required: true
+  type: string
+namespace_1:
+  description: |
+    The storage namespace, such as
+    ``OS::Storage::Capabilities::foo``.
+  in: body
+  required: true
+  type: string
+new_size:
+  description: |
+    The new size of the volume, in gibibytes (GiB).
+  in: body
+  required: true
+  type: integer
+object_count:
+  description: |
+    The number of objects in the backup.
+  in: body
+  required: true
+  type: integer
+os-attach:
+  description: |
+    The ``os-attach`` action.
+  in: body
+  required: true
+  type: object
+os-extend:
+  description: |
+    The ``os-extend`` action.
+  in: body
+  required: true
+  type: object
+os-extended-snapshot-attributes:progress:
+  description: |
+    A percentage value for the build progress.
+  in: body
+  required: true
+  type: integer
+os-extended-snapshot-attributes:project_id:
+  description: |
+    The UUID of the owning project.
+  in: body
+  required: true
+  type: string
+os-force_delete:
+  description: |
+    The ``os-force_delete`` action.
+  in: body
+  required: true
+  type: string
+os-force_detach:
+  description: |
+    The ``os-force_detach`` action.
+  in: body
+  required: true
+  type: object
+os-promote-replica:
+  description: |
+    The ``os-promote-replica`` action.
+  in: body
+  required: true
+  type: object
+os-reenable-replica:
+  description: |
+    The ``os-reenable-replica`` action.
+  in: body
+  required: true
+  type: object
+os-reset_status:
+  description: |
+    The ``os-reset_status`` action.
+  in: body
+  required: true
+  type: object
+os-set_image_metadata:
+  description: |
+    The ``os-set_image_metadata`` action.
+  in: body
+  required: true
+  type: object
+os-unmanage:
+  description: |
+    The ``os-unmanage`` action. This action removes
+    the specified volume from Cinder management.
+  in: body
+  required: true
+  type: object
+os-unset_image_metadata:
+  description: |
+    The ``os-unset_image_metadata`` action. This
+    action removes the key-value pairs from the image metadata.
+  in: body
+  required: true
+  type: object
+os-vol-host-attr:host:
+  description: |
+    Current back-end of the volume.
+  in: body
+  required: true
+  type: string
+os-vol-mig-status-attr:migstat:
+  description: |
+    The status of this volume migration (None means
+    that a migration is not currently in progress).
+  in: body
+  required: true
+  type: string
+os-vol-mig-status-attr:name_id:
+  description: |
+    The volume ID that this volume name on the back-
+    end is based on.
+  in: body
+  required: true
+  type: string
+os-vol-tenant-attr:tenant_id:
+  description: |
+    The tenant ID which the volume belongs to.
+  in: body
+  required: true
+  type: string
+os-volume-replication:driver_data:
+  description: |
+    The name of the volume replication driver.
+  in: body
+  required: false
+  type: string
+os-volume-replication:extended_status:
+  description: |
+    The volume replication status managed by the
+    driver of backend storage.
+  in: body
+  required: false
+  type: string
+os-volume-replication:extended_status_1:
+  description: |
+    The status of the volume replication.
+  in: body
+  required: false
+  type: string
+pool_name:
+  description: |
+    The name of the storage pool.
+  in: body
+  required: true
+  type: string
+project:
+  description: |
+    The ID of the project. Volume Type access to be
+    added to this project ID.
+  in: body
+  required: true
+  type: string
+project_id:
+  description: |
+    The UUID of the project.
+  in: body
+  required: true
+  type: string
+project_id_1:
+  description: |
+    The Project ID having access to this volume type.
+  in: body
+  required: true
+  type: string
+properties:
+  description: |
+    The backend volume capabilities list, which is
+    consisted of cinder standard capabilities and vendor unique
+    properties.
+  in: body
+  required: true
+  type: object
+qos_specs:
+  description: |
+    A ``qos_specs`` object.
+  in: body
+  required: true
+  type: object
+quota_set:
+  description: |
+    A ``quota_set`` object.
+  in: body
+  required: true
+  type: object
+ram:
+  description: |
+    The amount of instance RAM in megabytes that are
+    allowed for each tenant.
+  in: body
+  required: true
+  type: integer
+rate:
+  description: |
+    Rate-limit volume copy bandwidth, used to
+    mitigate slow down of data access from the instances.
+  in: body
+  required: true
+  type: array
+ref:
+  description: |
+    A reference to the existing volume. The internal
+    structure of this reference depends on the volume driver
+    implementation. For details about the required elements in the
+    structure, see the documentation for the volume driver.
+  in: body
+  required: true
+  type: string
+ref_1:
+  description: |
+    A reference to the existing volume. The internal
+    structure of this reference is dependent on the implementation of
+    the volume driver, see the specific driver's documentation for
+    details of the required elements in the structure.
+  in: body
+  required: true
+  type: object
+remove_volumes:
+  description: |
+    One or more volume UUIDs, separated by commas, to
+    remove from the volume consistency group.
+  in: body
+  required: false
+  type: string
+replication_status:
+  description: |
+    The volume replication status.
+  in: body
+  required: true
+  type: string
+reserved:
+  description: |
+    Reserved volume size. Visible only if you set the
+    ``usage=true`` query parameter.
+  in: body
+  required: false
+  type: integer
+reserved_percentage:
+  description: |
+    The percentage of the total capacity that is
+    reserved for the internal use by the back end.
+  in: body
+  required: true
+  type: integer
+restore:
+  description: |
+    A ``restore`` object.
+  in: body
+  required: true
+  type: object
+scheduler_hints:
+  description: |
+    The dictionary of data to send to the scheduler.
+  in: body
+  required: false
+  type: object
+security_group_rules:
+  description: |
+    The number of rules that are allowed for each
+    security group.
+  in: body
+  required: false
+  type: integer
+security_groups:
+  description: |
+    The number of security groups that are allowed
+    for each tenant.
+  in: body
+  required: true
+  type: integer
+size:
+  description: |
+    The size of the volume, in gibibytes (GiB).
+  in: body
+  required: true
+  type: integer
+size_1:
+  description: |
+    The size of the backup, in GB.
+  in: body
+  required: true
+  type: integer
+snapshot:
+  description: |
+    A partial representation of a snapshot used in
+    the creation process.
+  in: body
+  required: true
+  type: string
+snapshot_1:
+  description: |
+    A ``snapshot`` object.
+  in: body
+  required: true
+  type: object
+snapshot_id:
+  description: |
+    To create a volume from an existing snapshot,
+    specify the UUID of the volume snapshot. The volume is created in
+    same availability zone and with same size as the snapshot.
+  in: body
+  required: false
+  type: string
+snapshot_id_2:
+  description: |
+    The UUID of the source volume snapshot.
+  in: body
+  required: true
+  type: string
+snapshot_id_3:
+  description: |
+    The UUID of the source volume snapshot. The API
+    creates a new volume snapshot with the same size as the source
+    volume snapshot.
+  in: body
+  required: true
+  type: string
+source_cgid:
+  description: |
+    The UUID of the source consistency group.
+  in: body
+  required: false
+  type: string
+source_replica:
+  description: |
+    The UUID of the primary volume to clone.
+  in: body
+  required: false
+  type: string
+source_volid:
+  description: |
+    The UUID of the source volume. The API creates a
+    new volume with the same size as the source volume.
+  in: body
+  required: false
+  type: string
+source_volid_1:
+  description: |
+    The UUID of the source volume.
+  in: body
+  required: true
+  type: string
+specs:
+  description: |
+    A ``specs`` object.
+  in: body
+  required: true
+  type: object
+specs_1:
+  description: |
+    Specification key and value pairs.
+  in: body
+  required: true
+  type: object
+specs_2:
+  description: |
+    Specification key and value pairs.
+  in: body
+  required: true
+  type: string
+status:
+  description: |
+    The ``status`` of the consistency group snapshot.
+  in: body
+  required: false
+  type: string
+status_1:
+  description: |
+    The status of the consistency group.
+  in: body
+  required: true
+  type: string
+status_2:
+  description: |
+    The status for the snapshot.
+  in: body
+  required: true
+  type: string
+status_3:
+  description: |
+    The volume status.
+  in: body
+  required: true
+  type: string
+status_4:
+  description: |
+    The backup status. Refer to Backup statuses table
+    for the possible status value.
+  in: body
+  required: true
+  type: string
+status_5:
+  description: |
+    The consistency group status. A valid value is
+    ``creating``, ``available``, ``error``, ``deleting``,
+    ``updating``, or ``invalid``.
+  in: body
+  required: true
+  type: string
+status_6:
+  description: |
+    The volume status.
+  in: body
+  required: false
+  type: string
+storage_protocol:
+  description: |
+    The storage back end for the back-end volume. For
+    example, ``iSCSI`` or ``FC``.
+  in: body
+  required: true
+  type: string
+storage_protocol_1:
+  description: |
+    The storage protocol, such as Fibre Channel,
+    iSCSI, NFS, and so on.
+  in: body
+  required: true
+  type: string
+totalBackupGigabytesUsed:
+  description: |
+    The total number of backups gibibytes (GiB) used.
+  in: body
+  required: true
+  type: integer
+totalBackupsUsed:
+  description: |
+    The total number of backups used.
+  in: body
+  required: true
+  type: integer
+totalGigabytesUsed:
+  description: |
+    The total number of gibibytes (GiB) used.
+  in: body
+  required: true
+  type: integer
+totalSnapshotsUsed:
+  description: |
+    The total number of snapshots used.
+  in: body
+  required: true
+  type: integer
+totalVolumesUsed:
+  description: |
+    The total number of volumes used.
+  in: body
+  required: true
+  type: integer
+total_capacity:
+  description: |
+    The total capacity for the back-end volume, in
+    GBs. A valid value is a string, such as ``unknown``, or an
+    integer.
+  in: body
+  required: true
+  type: string
+updated:
+  description: |
+    The date and time stamp when the extension was
+    last updated.
+  in: body
+  required: true
+  type: string
+updated_1:
+  description: |
+    The date and time stamp when the API request was
+    issued.
+  in: body
+  required: true
+  type: string
+updated_at:
+  description: |
+    The date and time when the resource was updated.
+
+    The date and time stamp format is `ISO 8601
+    <https://en.wikipedia.org/wiki/ISO_8601>`_:
+
+    ::
+
+       CCYY-MM-DDThh:mm:ss±hh:mm
+
+    For example, ``2015-08-27T09:49:58-05:00``.
+
+    The ``±hh:mm`` value, if included, is the time zone as an offset
+    from UTC. In the previous example, the offset value is ``-05:00``.
+
+    If the ``updated_at`` date and time stamp is not set, its value is
+    ``null``.
+  in: body
+  required: true
+  type: string
+user_id:
+  description: |
+    The UUID of the user.
+  in: body
+  required: true
+  type: string
+vendor_name:
+  description: |
+    The name of the vendor.
+  in: body
+  required: true
+  type: string
+visibility:
+  description: |
+    The volume type access.
+  in: body
+  required: true
+  type: string
+volume:
+  description: |
+    A ``volume`` object.
+  in: body
+  required: true
+  type: object
+volume_1:
+  description: |
+    A ``volume`` object.
+  in: body
+  required: true
+  type: string
+volume_backend_name:
+  description: |
+    The name of the back-end volume.
+  in: body
+  required: true
+  type: string
+volume_id:
+  description: |
+    The UUID of the volume.
+  in: body
+  required: true
+  type: string
+volume_id_2:
+  description: |
+    The UUID of the volume that you want to back up.
+  in: body
+  required: true
+  type: string
+volume_id_3:
+  description: |
+    To create a snapshot from an existing volume,
+    specify the UUID of the existing volume.
+  in: body
+  required: true
+  type: string
+volume_id_4:
+  description: |
+    The UUID of the volume from which the backup was
+    created.
+  in: body
+  required: true
+  type: string
+volume_id_5:
+  description: |
+    If the snapshot was created from a volume, the
+    volume ID.
+  in: body
+  required: true
+  type: string
+volume_id_6:
+  description: |
+    The UUID of the volume to which you want to
+    restore a backup.
+  in: body
+  required: false
+  type: string
+volume_type_1:
+  description: |
+    A ``volume_type`` object.
+  in: body
+  required: true
+  type: object
+volume_type_2:
+  description: |
+    The volume type. To create an environment with
+    multiple-storage back ends, you must specify a volume type. Block
+    Storage volume back ends are spawned as children to ``cinder-
+    volume``, and they are keyed from a unique queue. They are named
+    ``cinder- volume.HOST.BACKEND``. For example, ``cinder-
+    volume.ubuntu.lvmdriver``. When a volume is created, the scheduler
+    chooses an appropriate back end to handle the request based on the
+    volume type.  Default is ``None``.  For information about how to
+    use volume types to create multiple- storage back ends, see
+    `Configure multiple-storage back ends
+    <http://docs.openstack.org/admin-
+    guide/blockstorage_multi_backend.html>`_.
+  in: body
+  required: false
+  type: string
+volume_type_3:
+  description: |
+    The volume type. In an environment with multiple-
+    storage back ends, the scheduler determines where to send the
+    volume based on the volume type.  For information about how to use
+    volume types to create multiple- storage back ends, see `Configure
+    multiple-storage back ends <http://docs.openstack.org/admin-
+    guide/blockstorage_multi_backend.html>`_.
+  in: body
+  required: true
+  type: string
+volume_type_4:
+  description: |
+    The associated volume type.
+  in: body
+  required: false
+  type: string
+volume_type_5:
+  description: |
+    A list of ``volume_type`` objects.
+  in: body
+  required: true
+  type: array
+volume_types:
+  description: |
+    The list of volume types.  In an environment with
+    multiple-storage back ends, the scheduler determines where to send
+    the volume based on the volume type.  For information about how to
+    use volume types to create multiple- storage back ends, see
+    `Configure multiple-storage back ends
+    <http://docs.openstack.org/admin-
+    guide/blockstorage_multi_backend.html>`_.
+  in: body
+  required: true
+  type: array
+volumes:
+  description: |
+    A list of ``volume`` objects.
+  in: body
+  required: true
+  type: array
diff --git a/api-ref/v2/source/qos-specs-v2-qos-specs.inc b/api-ref/v2/source/qos-specs-v2-qos-specs.inc
new file mode 100644
index 00000000000..8768c9f9c09
--- /dev/null
+++ b/api-ref/v2/source/qos-specs-v2-qos-specs.inc
@@ -0,0 +1,315 @@
+.. -*- rst -*-
+
+===================================================
+Quality of service (QoS) specifications (qos-specs)
+===================================================
+
+Administrators only, depending on policy settings.
+
+Creates, lists, shows details for, associates, disassociates, sets
+keys, unsets keys, and deletes quality of service (QoS)
+specifications.
+
+
+Disassociate QoS specification from all associations
+====================================================
+
+.. rest_method::  GET /v2/{tenant_id}/qos-specs/{qos_id}/disassociate_all
+
+Disassociates a QoS specification from all associations.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+
+Unset keys in QoS specification
+===============================
+
+.. rest_method::  PUT /v2/{tenant_id}/qos-specs/{qos_id}/delete_keys
+
+Unsets keys in a QoS specification.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - keys: keys
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/qos-unset-request.json
+   :language: javascript
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/qos-unset-response.json
+   :language: javascript
+
+
+Get all associations for QoS specification
+==========================================
+
+.. rest_method::  GET /v2/{tenant_id}/qos-specs/{qos_id}/associations
+
+Lists all associations for a QoS specification.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/qos-show-response.json
+   :language: javascript
+
+
+Associate QoS specification with volume type
+============================================
+
+.. rest_method::  GET /v2/{tenant_id}/qos-specs/{qos_id}/associate
+
+Associates a QoS specification with a volume type.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+
+Disassociate QoS specification from volume type
+===============================================
+
+.. rest_method::  GET /v2/{tenant_id}/qos-specs/{qos_id}/disassociate
+
+Disassociates a QoS specification from a volume type.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+
+Show QoS specification details
+==============================
+
+.. rest_method::  GET /v2/{tenant_id}/qos-specs/{qos_id}
+
+Shows details for a QoS specification.
+
+
+Normal response codes: 200
+Error response codes:413,405,404,403,401,400,503,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - name: name
+   - links: links
+   - id: id
+   - qos_specs: qos_specs
+   - consumer: consumer
+   - specs: specs
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/qos-show-response.json
+   :language: javascript
+
+
+Set keys in QoS specification
+=============================
+
+.. rest_method::  PUT /v2/{tenant_id}/qos-specs/{qos_id}
+
+Sets keys in a QoS specification.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - qos_specs: qos_specs
+   - specs: specs
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/qos-update-request.json
+   :language: javascript
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/qos-update-response.json
+   :language: javascript
+
+
+Delete QoS specification
+========================
+
+.. rest_method::  DELETE /v2/{tenant_id}/qos-specs/{qos_id}
+
+Deletes a QoS specification.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - qos_id: qos_id
+   - force: force
+
+
+Create QoS specification
+========================
+
+.. rest_method::  POST /v2/{tenant_id}/qos-specs
+
+Creates a QoS specification.
+
+Specify one or more key and value pairs in the request body.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - qos_specs: qos_specs
+   - consumer: consumer
+   - name: name
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/qos-create-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - name: name
+   - links: links
+   - id: id
+   - qos_specs: qos_specs
+   - consumer: consumer
+   - specs: specs
+
+
+List QoS specs
+==============
+
+.. rest_method::  GET /v2/{tenant_id}/qos-specs
+
+Lists quality of service (QoS) specifications.
+
+
+Normal response codes: 200
+Error response codes:300,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - specs: specs
+   - qos_specs: qos_specs
+   - consumer: consumer
+   - id: id
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/qos-list-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/quota-sets.inc b/api-ref/v2/source/quota-sets.inc
new file mode 100644
index 00000000000..49df485cffd
--- /dev/null
+++ b/api-ref/v2/source/quota-sets.inc
@@ -0,0 +1,407 @@
+.. -*- rst -*-
+
+====================================
+Quota sets extension (os-quota-sets)
+====================================
+
+Administrators only, depending on policy settings.
+
+Shows, updates, and deletes quotas for a tenant.
+
+
+Show quotas for user
+====================
+
+.. rest_method::  GET /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/{user_id}
+
+Enables an admin user to show quotas for a tenant and user.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - user_id: user_id
+   - admin_tenant_id: admin_tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-update-response.json
+   :language: javascript
+
+
+Update quotas for user
+======================
+
+.. rest_method::  PUT /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/{user_id}
+
+Updates quotas for a tenant and user.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+   - tenant_id: tenant_id
+   - user_id: user_id
+   - admin_tenant_id: admin_tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/quotas-update-request.json
+   :language: javascript
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-update-response.json
+   :language: javascript
+
+Delete quotas for user
+======================
+
+.. rest_method::  DELETE /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/{user_id}
+
+Deletes quotas for a user so that the quotas revert to default values.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - user_id: user_id
+   - admin_tenant_id: admin_tenant_id
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-delete-response.json
+   :language: javascript
+
+
+Show quotas
+===========
+
+.. rest_method::  GET /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}
+
+Shows quotas for a tenant.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - admin_tenant_id: admin_tenant_id
+   - usage: usage
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-show-response.json
+   :language: javascript
+
+Update quotas
+=============
+
+.. rest_method::  PUT /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}
+
+Updates quotas for a tenant.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+   - tenant_id: tenant_id
+   - admin_tenant_id: admin_tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/quotas-update-request.json
+   :language: javascript
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-update-response.json
+   :language: javascript
+
+Delete quotas
+=============
+
+.. rest_method::  DELETE /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}
+
+Deletes quotas for a tenant so the quotas revert to default values.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - admin_tenant_id: admin_tenant_id
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-delete-response.json
+   :language: javascript
+
+Show quota details for user
+===========================
+
+.. rest_method::  GET /v2/{admin_tenant_id}/os-quota-sets/{tenant_id}/detail/{user_id}
+
+Shows details for quotas for a tenant and user.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - user_id: user_id
+   - admin_tenant_id: admin_tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-update-response.json
+   :language: javascript
+
+
+Get default quotas
+==================
+
+.. rest_method::  GET /v2/{tenant_id}/os-quota-sets/defaults
+
+Gets default quotas for a tenant.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - injected_file_content_bytes: injected_file_content_bytes
+   - metadata_items: metadata_items
+   - reserved: reserved
+   - in_use: in_use
+   - ram: ram
+   - floating_ips: floating_ips
+   - key_pairs: key_pairs
+   - injected_file_path_bytes: injected_file_path_bytes
+   - instances: instances
+   - security_group_rules: security_group_rules
+   - injected_files: injected_files
+   - quota_set: quota_set
+   - cores: cores
+   - fixed_ips: fixed_ips
+   - id: id
+   - security_groups: security_groups
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/quotas-show-defaults-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/samples/backend-capabilities-response.json b/api-ref/v2/source/samples/backend-capabilities-response.json
new file mode 100644
index 00000000000..a72a238156c
--- /dev/null
+++ b/api-ref/v2/source/samples/backend-capabilities-response.json
@@ -0,0 +1,33 @@
+{
+    "namespace": "OS::Storage::Capabilities::fake",
+    "vendor_name": "OpenStack",
+    "volume_backend_name": "lvm",
+    "pool_name": "pool",
+    "driver_version": "2.0.0",
+    "storage_protocol": "iSCSI",
+    "display_name": "Capabilities of Cinder LVM driver",
+    "description": "These are volume type options provided by Cinder LVM driver, blah, blah.",
+    "visibility": "public",
+    "properties": {
+        "compression": {
+            "title": "Compression",
+            "description": "Enables compression.",
+            "type": "boolean"
+        },
+        "qos": {
+            "title": "QoS",
+            "description": "Enables QoS.",
+            "type": "boolean"
+        },
+        "replication": {
+            "title": "Replication",
+            "description": "Enables replication.",
+            "type": "boolean"
+        },
+        "thin_provisioning": {
+            "title": "Thin Provisioning",
+            "description": "Sets thin provisioning.",
+            "type": "boolean"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-create-request.json b/api-ref/v2/source/samples/backup-create-request.json
new file mode 100644
index 00000000000..c7f8a74d5db
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-create-request.json
@@ -0,0 +1,9 @@
+{
+    "backup": {
+        "container": null,
+        "description": null,
+        "name": "backup001",
+        "volume_id": "64f5d2fb-d836-4063-b7e2-544d5c1ff607",
+        "incremental": true
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-create-response.json b/api-ref/v2/source/samples/backup-create-response.json
new file mode 100644
index 00000000000..e2aec1c8f4b
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-create-response.json
@@ -0,0 +1,16 @@
+{
+    "backup": {
+        "id": "deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
+        "links": [
+            {
+                "href": "http://localhost:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
+                "rel": "bookmark"
+            }
+        ],
+        "name": "backup001"
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-force-delete-request.json b/api-ref/v2/source/samples/backup-force-delete-request.json
new file mode 100644
index 00000000000..5c56464d919
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-force-delete-request.json
@@ -0,0 +1,3 @@
+{
+    "os-force_delete": {}
+}
diff --git a/api-ref/v2/source/samples/backup-record-export-response.json b/api-ref/v2/source/samples/backup-record-export-response.json
new file mode 100644
index 00000000000..8783eeda0ea
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-record-export-response.json
@@ -0,0 +1,6 @@
+{
+    "backup-record": {
+        "backup_service": "cinder.backup.drivers.swift",
+        "backup_url": "eyJzdGF0"
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-record-import-request.json b/api-ref/v2/source/samples/backup-record-import-request.json
new file mode 100644
index 00000000000..8783eeda0ea
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-record-import-request.json
@@ -0,0 +1,6 @@
+{
+    "backup-record": {
+        "backup_service": "cinder.backup.drivers.swift",
+        "backup_url": "eyJzdGF0"
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-record-import-response.json b/api-ref/v2/source/samples/backup-record-import-response.json
new file mode 100644
index 00000000000..60eeabbc931
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-record-import-response.json
@@ -0,0 +1,16 @@
+{
+    "backup": {
+        "id": "deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
+        "links": [
+            {
+                "href": "http://localhost:8776/v2/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/deac8b8c-35c9-4c71-acaa-889c2d5d5c8e",
+                "rel": "bookmark"
+            }
+        ],
+        "name": null
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-restore-request.json b/api-ref/v2/source/samples/backup-restore-request.json
new file mode 100644
index 00000000000..2ccb7e516be
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-restore-request.json
@@ -0,0 +1,6 @@
+{
+    "restore": {
+        "name": "vol-01",
+        "volume_id": "64f5d2fb-d836-4063-b7e2-544d5c1ff607"
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-restore-response.json b/api-ref/v2/source/samples/backup-restore-response.json
new file mode 100644
index 00000000000..a344ea56cdc
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-restore-response.json
@@ -0,0 +1,6 @@
+{
+    "restore": {
+        "backup_id": "2ef47aee-8844-490c-804d-2a8efe561c65",
+        "volume_id": "795114e8-7489-40be-a978-83797f2c1dd3"
+    }
+}
diff --git a/api-ref/v2/source/samples/backup-show-response.json b/api-ref/v2/source/samples/backup-show-response.json
new file mode 100644
index 00000000000..c4fe0ffc4e5
--- /dev/null
+++ b/api-ref/v2/source/samples/backup-show-response.json
@@ -0,0 +1,27 @@
+{
+    "backup": {
+        "availability_zone": "az1",
+        "container": "volumebackups",
+        "created_at": "2013-04-02T10:35:27.000000",
+        "description": null,
+        "fail_reason": null,
+        "id": "2ef47aee-8844-490c-804d-2a8efe561c65",
+        "links": [
+            {
+                "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
+                "rel": "bookmark"
+            }
+        ],
+        "name": "backup001",
+        "object_count": 22,
+        "size": 1,
+        "status": "available",
+        "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6",
+        "is_incremental": true,
+        "has_dependent_backups": false
+    }
+}
diff --git a/api-ref/v2/source/samples/backups-list-detailed-response.json b/api-ref/v2/source/samples/backups-list-detailed-response.json
new file mode 100644
index 00000000000..d729ada6848
--- /dev/null
+++ b/api-ref/v2/source/samples/backups-list-detailed-response.json
@@ -0,0 +1,54 @@
+{
+    "backups": [
+        {
+            "availability_zone": "az1",
+            "container": "volumebackups",
+            "created_at": "2013-04-02T10:35:27.000000",
+            "description": null,
+            "fail_reason": null,
+            "id": "2ef47aee-8844-490c-804d-2a8efe561c65",
+            "links": [
+                {
+                    "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "backup001",
+            "object_count": 22,
+            "size": 1,
+            "status": "available",
+            "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6",
+            "is_incremental": true,
+            "has_dependent_backups": false
+        },
+        {
+            "availability_zone": "az1",
+            "container": "volumebackups",
+            "created_at": "2013-04-02T10:21:48.000000",
+            "description": null,
+            "fail_reason": null,
+            "id": "4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
+            "links": [
+                {
+                    "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "backup002",
+            "object_count": 22,
+            "size": 1,
+            "status": "available",
+            "volume_id": "e5185058-943a-4cb4-96d9-72c184c337d6",
+            "is_incremental": true,
+            "has_dependent_backups": false
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/backups-list-response.json b/api-ref/v2/source/samples/backups-list-response.json
new file mode 100644
index 00000000000..8dd7d785abd
--- /dev/null
+++ b/api-ref/v2/source/samples/backups-list-response.json
@@ -0,0 +1,32 @@
+{
+    "backups": [
+        {
+            "id": "2ef47aee-8844-490c-804d-2a8efe561c65",
+            "links": [
+                {
+                    "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/2ef47aee-8844-490c-804d-2a8efe561c65",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "backup001"
+        },
+        {
+            "id": "4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
+            "links": [
+                {
+                    "href": "http://localhost:8776/v1/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost:8776/c95fc3e4afe248a49a28828f286a7b38/backups/4dbf0ec2-0b57-4669-9823-9f7c76f2b4f8",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "backup002"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/cgsnapshots-create-request.json b/api-ref/v2/source/samples/cgsnapshots-create-request.json
new file mode 100644
index 00000000000..36d6f45374e
--- /dev/null
+++ b/api-ref/v2/source/samples/cgsnapshots-create-request.json
@@ -0,0 +1,10 @@
+{
+    "cgsnapshot": {
+        "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814546",
+        "name": "firstcg",
+        "description": "first consistency group",
+        "user_id": "6f519a48-3183-46cf-a32f-41815f814444",
+        "project_id": "6f519a48-3183-46cf-a32f-41815f815555",
+        "status": "creating"
+    }
+}
diff --git a/api-ref/v2/source/samples/cgsnapshots-create-response.json b/api-ref/v2/source/samples/cgsnapshots-create-response.json
new file mode 100644
index 00000000000..6d24a97f134
--- /dev/null
+++ b/api-ref/v2/source/samples/cgsnapshots-create-response.json
@@ -0,0 +1,6 @@
+{
+    "cgsnapshot": {
+        "id": "6f519a48-3183-46cf-a32f-41815f816666",
+        "name": "firstcg"
+    }
+}
diff --git a/api-ref/v2/source/samples/cgsnapshots-list-detailed-response.json b/api-ref/v2/source/samples/cgsnapshots-list-detailed-response.json
new file mode 100644
index 00000000000..93ad12870a9
--- /dev/null
+++ b/api-ref/v2/source/samples/cgsnapshots-list-detailed-response.json
@@ -0,0 +1,20 @@
+{
+    "cgsnapshots": [
+        {
+            "id": "6f519a48-3183-46cf-a32f-41815f813986",
+            "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814444",
+            "status": "available",
+            "created_at": "2015-09-16T09:28:52.000000",
+            "name": "my-cg1",
+            "description": "my first consistency group"
+        },
+        {
+            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
+            "consistencygroup_id": "aed36625-a6d7-4681-ba59-c7ba3d18dddd",
+            "status": "error",
+            "created_at": "2015-09-16T09:31:15.000000",
+            "name": "my-cg2",
+            "description": "Edited description"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/cgsnapshots-list-response.json b/api-ref/v2/source/samples/cgsnapshots-list-response.json
new file mode 100644
index 00000000000..726aa803abb
--- /dev/null
+++ b/api-ref/v2/source/samples/cgsnapshots-list-response.json
@@ -0,0 +1,12 @@
+{
+    "cgsnapshots": [
+        {
+            "id": "6f519a48-3183-46cf-a32f-41815f813986",
+            "name": "my-cg1"
+        },
+        {
+            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
+            "name": "my-cg2"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/cgsnapshots-show-response.json b/api-ref/v2/source/samples/cgsnapshots-show-response.json
new file mode 100644
index 00000000000..632a5afbad5
--- /dev/null
+++ b/api-ref/v2/source/samples/cgsnapshots-show-response.json
@@ -0,0 +1,10 @@
+{
+    "cgsnapshot": {
+        "id": "6f519a48-3183-46cf-a32f-41815f813986",
+        "consistencygroup_id": "6f519a48-3183-46cf-a32f-41815f814444",
+        "status": "available",
+        "created_at": "2015-09-16T09:28:52.000000",
+        "name": "my-cg1",
+        "description": "my first consistency group"
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-group-create-from-src-request.json b/api-ref/v2/source/samples/consistency-group-create-from-src-request.json
new file mode 100644
index 00000000000..ad25c5d0221
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-create-from-src-request.json
@@ -0,0 +1,11 @@
+{
+    "consistencygroup-from-src": {
+        "name": "firstcg",
+        "description": "first consistency group",
+        "cgsnapshot_id": "6f519a48-3183-46cf-a32f-41815f813986",
+        "source_cgid": "6f519a48-3183-46cf-a32f-41815f814546",
+        "user_id": "6f519a48-3183-46cf-a32f-41815f815555",
+        "project_id": "6f519a48-3183-46cf-a32f-41815f814444",
+        "status": "creating"
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-group-create-request.json b/api-ref/v2/source/samples/consistency-group-create-request.json
new file mode 100644
index 00000000000..29c691c572e
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-create-request.json
@@ -0,0 +1,14 @@
+{
+    "consistencygroup": {
+        "name": "firstcg",
+        "description": "first consistency group",
+        "volume_types": [
+            "type1",
+            "type2"
+        ],
+        "user_id": "6f519a48-3183-46cf-a32f-41815f814546",
+        "project_id": "6f519a48-3183-46cf-a32f-41815f815555",
+        "availability_zone": "az0",
+        "status": "creating"
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-group-create-response.json b/api-ref/v2/source/samples/consistency-group-create-response.json
new file mode 100644
index 00000000000..113950ab60b
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-create-response.json
@@ -0,0 +1,6 @@
+{
+    "consistencygroup": {
+        "id": "6f519a48-3183-46cf-a32f-41815f816666",
+        "name": "firstcg"
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-group-delete-request.json b/api-ref/v2/source/samples/consistency-group-delete-request.json
new file mode 100644
index 00000000000..8ad8745e7bc
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-delete-request.json
@@ -0,0 +1,5 @@
+{
+    "consistencygroup": {
+        "force": false
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-group-show-response.json b/api-ref/v2/source/samples/consistency-group-show-response.json
new file mode 100644
index 00000000000..3cbb87d741b
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-show-response.json
@@ -0,0 +1,13 @@
+{
+    "consistencygroup": {
+        "id": "6f519a48-3183-46cf-a32f-41815f813986",
+        "status": "available",
+        "availability_zone": "az1",
+        "created_at": "2015-09-16T09:28:52.000000",
+        "name": "my-cg1",
+        "description": "my first consistency group",
+        "volume_types": [
+            "123456"
+        ]
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-group-show-response.xml b/api-ref/v2/source/samples/consistency-group-show-response.xml
new file mode 100644
index 00000000000..a9d2b4dd9ea
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-show-response.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<consistencygroups xmlns:consistencygroups="http://docs.openstack.org/volume/ext/consistencygroups/api/v1">
+    <consistencygroup
+        id="6f519a48-3183-46cf-a32f-41815f813986"
+        status="available"
+        availability_zone="az1"
+        created_at="2015-09-16T09:28:52.000000"
+        name="my-cg1"
+        description="my first consistency group">
+        <volume_types>
+            <volume_type>"123456"</volume_type>
+        </volume_types>
+    </consistencygroup>
+</consistencygroups>
diff --git a/api-ref/v2/source/samples/consistency-group-update-request.json b/api-ref/v2/source/samples/consistency-group-update-request.json
new file mode 100644
index 00000000000..94546551611
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-group-update-request.json
@@ -0,0 +1,8 @@
+{
+    "consistencygroup": {
+        "name": "my_cg",
+        "description": "My consistency group",
+        "add_volumes": "volume-uuid-1,volume-uuid-2",
+        "remove_volumes": "volume-uuid-8,volume-uuid-9"
+    }
+}
diff --git a/api-ref/v2/source/samples/consistency-groups-list-detailed-response.json b/api-ref/v2/source/samples/consistency-groups-list-detailed-response.json
new file mode 100644
index 00000000000..618c65882bc
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-groups-list-detailed-response.json
@@ -0,0 +1,26 @@
+{
+    "consistencygroups": [
+        {
+            "id": "6f519a48-3183-46cf-a32f-41815f813986",
+            "status": "available",
+            "availability_zone": "az1",
+            "created_at": "2015-09-16T09:28:52.000000",
+            "name": "my-cg1",
+            "description": "my first consistency group",
+            "volume_types": [
+                "123456"
+            ]
+        },
+        {
+            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
+            "status": "error",
+            "availability_zone": "az2",
+            "created_at": "2015-09-16T09:31:15.000000",
+            "name": "my-cg2",
+            "description": "Edited description",
+            "volume_types": [
+                "234567"
+            ]
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/consistency-groups-list-detailed-response.xml b/api-ref/v2/source/samples/consistency-groups-list-detailed-response.xml
new file mode 100644
index 00000000000..bed4f625663
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-groups-list-detailed-response.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<consistencygroups xmlns:consistencygroups="http://docs.openstack.org/volume/ext/consistencygroups/api/v1">
+    <consistencygroup
+        id="6f519a48-3183-46cf-a32f-41815f813986"
+        status="available"
+        availability_zone="az1"
+        created_at="2015-09-16T09:28:52.000000"
+        name="my-cg1"
+        description="my first consistency group">
+        <volume_types>
+            <volume_type>"123456"</volume_type>
+        </volume_types>
+    </consistencygroup>
+    <consistencygroup
+        id="aed36625-a6d7-4681-ba59-c7ba3d18c148"
+        status="error"
+        availability_zone="az2"
+        created_at="2015-09-16T09:31:15.000000"
+        name="my-cg2"
+        description="Edited description">
+        <volume_types>
+            <volume_type>"234567"</volume_type>
+        </volume_types>
+    </consistencygroup>
+</consistencygroups>
diff --git a/api-ref/v2/source/samples/consistency-groups-list-response.json b/api-ref/v2/source/samples/consistency-groups-list-response.json
new file mode 100644
index 00000000000..a53863f4372
--- /dev/null
+++ b/api-ref/v2/source/samples/consistency-groups-list-response.json
@@ -0,0 +1,12 @@
+{
+    "consistencygroups": [
+        {
+            "id": "6f519a48-3183-46cf-a32f-41815f813986",
+            "name": "my-cg1"
+        },
+        {
+            "id": "aed36625-a6d7-4681-ba59-c7ba3d18c148",
+            "name": "my-cg2"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/extensions-list-response.json b/api-ref/v2/source/samples/extensions-list-response.json
new file mode 100644
index 00000000000..55003a9066e
--- /dev/null
+++ b/api-ref/v2/source/samples/extensions-list-response.json
@@ -0,0 +1,212 @@
+{
+    "extensions": [
+        {
+            "updated": "2013-04-18T00:00:00+00:00",
+            "name": "SchedulerHints",
+            "links": [],
+            "namespace": "http://docs.openstack.org/block-service/ext/scheduler-hints/api/v2",
+            "alias": "OS-SCH-HNT",
+            "description": "Pass arbitrary key/value pairs to the scheduler."
+        },
+        {
+            "updated": "2011-06-29T00:00:00+00:00",
+            "name": "Hosts",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/hosts/api/v1.1",
+            "alias": "os-hosts",
+            "description": "Admin-only host administration."
+        },
+        {
+            "updated": "2011-11-03T00:00:00+00:00",
+            "name": "VolumeTenantAttribute",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume_tenant_attribute/api/v1",
+            "alias": "os-vol-tenant-attr",
+            "description": "Expose the internal project_id as an attribute of a volume."
+        },
+        {
+            "updated": "2011-08-08T00:00:00+00:00",
+            "name": "Quotas",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/quotas-sets/api/v1.1",
+            "alias": "os-quota-sets",
+            "description": "Quota management support."
+        },
+        {
+            "updated": "2011-08-24T00:00:00+00:00",
+            "name": "TypesManage",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/types-manage/api/v1",
+            "alias": "os-types-manage",
+            "description": "Types manage support."
+        },
+        {
+            "updated": "2013-07-10T00:00:00+00:00",
+            "name": "VolumeEncryptionMetadata",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/os-volume-encryption-metadata/api/v1",
+            "alias": "os-volume-encryption-metadata",
+            "description": "Volume encryption metadata retrieval support."
+        },
+        {
+            "updated": "2012-12-12T00:00:00+00:00",
+            "name": "Backups",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/backups/api/v1",
+            "alias": "backups",
+            "description": "Backups support."
+        },
+        {
+            "updated": "2013-07-16T00:00:00+00:00",
+            "name": "SnapshotActions",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/snapshot-actions/api/v1.1",
+            "alias": "os-snapshot-actions",
+            "description": "Enable snapshot manager actions."
+        },
+        {
+            "updated": "2012-05-31T00:00:00+00:00",
+            "name": "VolumeActions",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume-actions/api/v1.1",
+            "alias": "os-volume-actions",
+            "description": "Enable volume actions\n    "
+        },
+        {
+            "updated": "2013-10-03T00:00:00+00:00",
+            "name": "UsedLimits",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/used-limits/api/v1.1",
+            "alias": "os-used-limits",
+            "description": "Provide data on limited resources that are being used."
+        },
+        {
+            "updated": "2012-05-31T00:00:00+00:00",
+            "name": "VolumeUnmanage",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume-unmanage/api/v1.1",
+            "alias": "os-volume-unmanage",
+            "description": "Enable volume unmanage operation."
+        },
+        {
+            "updated": "2011-11-03T00:00:00+00:00",
+            "name": "VolumeHostAttribute",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume_host_attribute/api/v1",
+            "alias": "os-vol-host-attr",
+            "description": "Expose host as an attribute of a volume."
+        },
+        {
+            "updated": "2013-07-01T00:00:00+00:00",
+            "name": "VolumeTypeEncryption",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume-type-encryption/api/v1",
+            "alias": "encryption",
+            "description": "Encryption support for volume types."
+        },
+        {
+            "updated": "2013-06-27T00:00:00+00:00",
+            "name": "AvailabilityZones",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/os-availability-zone/api/v1",
+            "alias": "os-availability-zone",
+            "description": "Describe Availability Zones."
+        },
+        {
+            "updated": "2013-08-02T00:00:00+00:00",
+            "name": "Qos_specs_manage",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/qos-specs/api/v1",
+            "alias": "qos-specs",
+            "description": "QoS specs support."
+        },
+        {
+            "updated": "2011-08-24T00:00:00+00:00",
+            "name": "TypesExtraSpecs",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/types-extra-specs/api/v1",
+            "alias": "os-types-extra-specs",
+            "description": "Type extra specs support."
+        },
+        {
+            "updated": "2013-08-08T00:00:00+00:00",
+            "name": "VolumeMigStatusAttribute",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume_mig_status_attribute/api/v1",
+            "alias": "os-vol-mig-status-attr",
+            "description": "Expose migration_status as an attribute of a volume."
+        },
+        {
+            "updated": "2012-08-13T00:00:00+00:00",
+            "name": "CreateVolumeExtension",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/image-create/api/v1",
+            "alias": "os-image-create",
+            "description": "Allow creating a volume from an image in the Create Volume v1 API."
+        },
+        {
+            "updated": "2014-01-10T00:00:00-00:00",
+            "name": "ExtendedServices",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/extended_services/api/v2",
+            "alias": "os-extended-services",
+            "description": "Extended services support."
+        },
+        {
+            "updated": "2012-06-19T00:00:00+00:00",
+            "name": "ExtendedSnapshotAttributes",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/extended_snapshot_attributes/api/v1",
+            "alias": "os-extended-snapshot-attributes",
+            "description": "Extended SnapshotAttributes support."
+        },
+        {
+            "updated": "2012-12-07T00:00:00+00:00",
+            "name": "VolumeImageMetadata",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume_image_metadata/api/v1",
+            "alias": "os-vol-image-meta",
+            "description": "Show image metadata associated with the volume."
+        },
+        {
+            "updated": "2012-03-12T00:00:00+00:00",
+            "name": "QuotaClasses",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/quota-classes-sets/api/v1.1",
+            "alias": "os-quota-class-sets",
+            "description": "Quota classes management support."
+        },
+        {
+            "updated": "2013-05-29T00:00:00+00:00",
+            "name": "VolumeTransfer",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/volume-transfer/api/v1.1",
+            "alias": "os-volume-transfer",
+            "description": "Volume transfer management support."
+        },
+        {
+            "updated": "2014-02-10T00:00:00+00:00",
+            "name": "VolumeManage",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/os-volume-manage/api/v1",
+            "alias": "os-volume-manage",
+            "description": "Allows existing backend storage to be 'managed' by Cinder."
+        },
+        {
+            "updated": "2012-08-25T00:00:00+00:00",
+            "name": "AdminActions",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/admin-actions/api/v1.1",
+            "alias": "os-admin-actions",
+            "description": "Enable admin actions."
+        },
+        {
+            "updated": "2012-10-28T00:00:00-00:00",
+            "name": "Services",
+            "links": [],
+            "namespace": "http://docs.openstack.org/volume/ext/services/api/v2",
+            "alias": "os-services",
+            "description": "Services support."
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/extensions-list-response.xml b/api-ref/v2/source/samples/extensions-list-response.xml
new file mode 100644
index 00000000000..969efec6b5c
--- /dev/null
+++ b/api-ref/v2/source/samples/extensions-list-response.xml
@@ -0,0 +1,165 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<extensions xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/common/api/v1.0">
+    <extension alias="OS-SCH-HNT" updated="2013-04-18T00:00:00+00:00"
+        namespace="http://docs.openstack.org/block-service/ext/scheduler-hints/api/v2"
+        name="SchedulerHints">
+        <description>Pass arbitrary key/value pairs to the
+            scheduler.</description>
+    </extension>
+    <extension alias="os-hosts" updated="2011-06-29T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/hosts/api/v1.1"
+        name="Hosts">
+        <description>Admin-only host administration.</description>
+    </extension>
+    <extension alias="os-vol-tenant-attr"
+        updated="2011-11-03T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume_tenant_attribute/api/v1"
+        name="VolumeTenantAttribute">
+        <description>Expose the internal project_id as an attribute of
+            a volume.</description>
+    </extension>
+    <extension alias="os-quota-sets"
+        updated="2011-08-08T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/quotas-sets/api/v1.1"
+        name="Quotas">
+        <description>Quota management support.</description>
+    </extension>
+    <extension alias="os-types-manage"
+        updated="2011-08-24T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/types-manage/api/v1"
+        name="TypesManage">
+        <description>Types manage support.</description>
+    </extension>
+    <extension alias="os-volume-encryption-metadata"
+        updated="2013-07-10T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/os-volume-encryption-metadata/api/v1"
+        name="VolumeEncryptionMetadata">
+        <description>Volume encryption metadata retrieval
+            support.</description>
+    </extension>
+    <extension alias="backups" updated="2012-12-12T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/backups/api/v1"
+        name="Backups">
+        <description>Backups support.</description>
+    </extension>
+    <extension alias="os-snapshot-actions"
+        updated="2013-07-16T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/snapshot-actions/api/v1.1"
+        name="SnapshotActions">
+        <description>Enable snapshot manager actions.</description>
+    </extension>
+    <extension alias="os-volume-actions"
+        updated="2012-05-31T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume-actions/api/v1.1"
+        name="VolumeActions">
+        <description>Enable volume actions </description>
+    </extension>
+    <extension alias="os-used-limits"
+        updated="2013-10-03T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/used-limits/api/v1.1"
+        name="UsedLimits">
+        <description>Provide data on limited resources that are being
+            used.</description>
+    </extension>
+    <extension alias="os-volume-unmanage"
+        updated="2012-05-31T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume-unmanage/api/v1.1"
+        name="VolumeUnmanage">
+        <description>Enable volume unmanage operation.</description>
+    </extension>
+    <extension alias="os-vol-host-attr"
+        updated="2011-11-03T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume_host_attribute/api/v1"
+        name="VolumeHostAttribute">
+        <description>Expose host as an attribute of a
+            volume.</description>
+    </extension>
+    <extension alias="encryption" updated="2013-07-01T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume-type-encryption/api/v1"
+        name="VolumeTypeEncryption">
+        <description>Encryption support for volume
+            types.</description>
+    </extension>
+    <extension alias="os-availability-zone"
+        updated="2013-06-27T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/os-availability-zone/api/v1"
+        name="AvailabilityZones">
+        <description>Describe Availability Zones.</description>
+    </extension>
+    <extension alias="qos-specs" updated="2013-08-02T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/qos-specs/api/v1"
+        name="Qos_specs_manage">
+        <description>QoS specs support.</description>
+    </extension>
+    <extension alias="os-types-extra-specs"
+        updated="2011-08-24T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/types-extra-specs/api/v1"
+        name="TypesExtraSpecs">
+        <description>Type extra specs support.</description>
+    </extension>
+    <extension alias="os-vol-mig-status-attr"
+        updated="2013-08-08T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume_mig_status_attribute/api/v1"
+        name="VolumeMigStatusAttribute">
+        <description>Expose migration_status as an attribute of a
+            volume.</description>
+    </extension>
+    <extension alias="os-image-create"
+        updated="2012-08-13T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/image-create/api/v1"
+        name="CreateVolumeExtension">
+        <description>Allow creating a volume from an image in the
+            Create Volume v1 API.</description>
+    </extension>
+    <extension alias="os-extended-services"
+        updated="2014-01-10T00:00:00-00:00"
+        namespace="http://docs.openstack.org/volume/ext/extended_services/api/v2"
+        name="ExtendedServices">
+        <description>Extended services support.</description>
+    </extension>
+    <extension alias="os-extended-snapshot-attributes"
+        updated="2012-06-19T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/extended_snapshot_attributes/api/v1"
+        name="ExtendedSnapshotAttributes">
+        <description>Extended SnapshotAttributes
+            support.</description>
+    </extension>
+    <extension alias="os-vol-image-meta"
+        updated="2012-12-07T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume_image_metadata/api/v1"
+        name="VolumeImageMetadata">
+        <description>Show image metadata associated with the
+            volume.</description>
+    </extension>
+    <extension alias="os-quota-class-sets"
+        updated="2012-03-12T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/quota-classes-sets/api/v1.1"
+        name="QuotaClasses">
+        <description>Quota classes management support.</description>
+    </extension>
+    <extension alias="os-volume-transfer"
+        updated="2013-05-29T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/volume-transfer/api/v1.1"
+        name="VolumeTransfer">
+        <description>Volume transfer management support.</description>
+    </extension>
+    <extension alias="os-volume-manage"
+        updated="2014-02-10T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/os-volume-manage/api/v1"
+        name="VolumeManage">
+        <description>Allows existing back end storage to be 'managed'
+            by cinder.</description>
+    </extension>
+    <extension alias="os-admin-actions"
+        updated="2012-08-25T00:00:00+00:00"
+        namespace="http://docs.openstack.org/volume/ext/admin-actions/api/v1.1"
+        name="AdminActions">
+        <description>Enable admin actions.</description>
+    </extension>
+    <extension alias="os-services" updated="2012-10-28T00:00:00-00:00"
+        namespace="http://docs.openstack.org/volume/ext/services/api/v2"
+        name="Services">
+        <description>Services support.</description>
+    </extension>
+</extensions>
diff --git a/api-ref/v2/source/samples/host-attach-request.json b/api-ref/v2/source/samples/host-attach-request.json
new file mode 100644
index 00000000000..01d0644513c
--- /dev/null
+++ b/api-ref/v2/source/samples/host-attach-request.json
@@ -0,0 +1,5 @@
+{
+    "os-attach": {
+        "host_name": "my_host"
+    }
+}
diff --git a/api-ref/v2/source/samples/image-metadata-show-request.json b/api-ref/v2/source/samples/image-metadata-show-request.json
new file mode 100644
index 00000000000..f84e8261dd9
--- /dev/null
+++ b/api-ref/v2/source/samples/image-metadata-show-request.json
@@ -0,0 +1,18 @@
+{
+    "volume": {
+        "host": "geraint-VirtualBox",
+        "ref": {
+            "source-volume-name": "existingLV",
+            "source-volume-id": "1234"
+        },
+        "name": "New Volume",
+        "availability_zone": "az2",
+        "description": "Volume imported from existingLV",
+        "volume_type": null,
+        "bootable": true,
+        "metadata": {
+            "key1": "value1",
+            "key2": "value2"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/image-metadata-show-response.json b/api-ref/v2/source/samples/image-metadata-show-response.json
new file mode 100644
index 00000000000..343ca66bc71
--- /dev/null
+++ b/api-ref/v2/source/samples/image-metadata-show-response.json
@@ -0,0 +1,33 @@
+{
+    "volume": {
+        "status": "creating",
+        "user_id": "eae1472b5fc5496998a3d06550929e7e",
+        "attachments": [],
+        "links": [
+            {
+                "href": "http://10.0.2.15:8776/v2/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
+                "rel": "self"
+            },
+            {
+                "href": "http://10.0.2.15:8776/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
+                "rel": "bookmark"
+            }
+        ],
+        "availability_zone": "az2",
+        "bootable": "false",
+        "encrypted": "false",
+        "created_at": "2014-07-18T00:12:54.000000",
+        "description": "Volume imported from existingLV",
+        "os-vol-tenant-attr:tenant_id": "87c8522052ca4eed98bc672b4c1a3ddb",
+        "volume_type": null,
+        "name": "New Volume",
+        "source_volid": null,
+        "snapshot_id": null,
+        "metadata": {
+            "key2": "value2",
+            "key1": "value1"
+        },
+        "id": "23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
+        "size": 0
+    }
+}
diff --git a/api-ref/v2/source/samples/limits-show-response.json b/api-ref/v2/source/samples/limits-show-response.json
new file mode 100644
index 00000000000..38d0ccd3c1b
--- /dev/null
+++ b/api-ref/v2/source/samples/limits-show-response.json
@@ -0,0 +1,17 @@
+{
+    "limits": {
+        "rate": [],
+        "absolute": {
+            "totalSnapshotsUsed": 0,
+            "maxTotalBackups": 10,
+            "maxTotalVolumeGigabytes": 1000,
+            "maxTotalSnapshots": 10,
+            "maxTotalBackupGigabytes": 1000,
+            "totalBackupGigabytesUsed": 0,
+            "maxTotalVolumes": 10,
+            "totalVolumesUsed": 0,
+            "totalBackupsUsed": 0,
+            "totalGigabytesUsed": 0
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/limits-show-response.xml b/api-ref/v2/source/samples/limits-show-response.xml
new file mode 100644
index 00000000000..0f932b074d7
--- /dev/null
+++ b/api-ref/v2/source/samples/limits-show-response.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<limits xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/common/api/v1.0">
+    <rates/>
+    <absolute>
+        <limit name="totalSnapshotsUsed" value="0"/>
+        <limit name="maxTotalBackups" value="10"/>
+        <limit name="maxTotalVolumeGigabytes" value="1000"/>
+        <limit name="maxTotalSnapshots" value="10"/>
+        <limit name="maxTotalBackupGigabytes" value="1000"/>
+        <limit name="totalBackupGigabytesUsed" value="0"/>
+        <limit name="maxTotalVolumes" value="10"/>
+        <limit name="totalVolumesUsed" value="0"/>
+        <limit name="totalBackupsUsed" value="0"/>
+        <limit name="totalGigabytesUsed" value="0"/>
+    </absolute>
+</limits>
diff --git a/api-ref/v2/source/samples/pools-list-detailed-response.json b/api-ref/v2/source/samples/pools-list-detailed-response.json
new file mode 100644
index 00000000000..3fc28a2992f
--- /dev/null
+++ b/api-ref/v2/source/samples/pools-list-detailed-response.json
@@ -0,0 +1,30 @@
+{
+    "pools": [
+        {
+            "name": "pool1",
+            "capabilities": {
+                "updated": "2014-10-28T00:00:00-00:00",
+                "total_capacity": 1024,
+                "free_capacity": 100,
+                "volume_backend_name": "pool1",
+                "reserved_percentage": 0,
+                "driver_version": "1.0.0",
+                "storage_protocol": "iSCSI",
+                "QoS_support": false
+            }
+        },
+        {
+            "name": "pool2",
+            "capabilities": {
+                "updated": "2014-10-28T00:00:00-00:00",
+                "total_capacity": 512,
+                "free_capacity": 200,
+                "volume_backend_name": "pool2",
+                "reserved_percentage": 0,
+                "driver_version": "1.0.1",
+                "storage_protocol": "iSER",
+                "QoS_support": true
+            }
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/qos-create-request.json b/api-ref/v2/source/samples/qos-create-request.json
new file mode 100644
index 00000000000..c0db909bd69
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-create-request.json
@@ -0,0 +1,7 @@
+{
+    "qos_specs": {
+        "availability": "100",
+        "name": "reliability-spec",
+        "numberOfFailures": "0"
+    }
+}
diff --git a/api-ref/v2/source/samples/qos-create-request.xml b/api-ref/v2/source/samples/qos-create-request.xml
new file mode 100644
index 00000000000..ac772236cac
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-create-request.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qos_specs name="performance-spec" delay="0" throughput="100" />
diff --git a/api-ref/v2/source/samples/qos-create-response.json b/api-ref/v2/source/samples/qos-create-response.json
new file mode 100644
index 00000000000..8fbf233767c
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-create-response.json
@@ -0,0 +1,21 @@
+{
+    "qos_specs": {
+        "specs": {
+            "numberOfFailures": "0",
+            "availability": "100"
+        },
+        "consumer": "back-end",
+        "name": "reliability-spec",
+        "id": "599ef437-1c99-42ec-9fc6-239d0519fef1"
+    },
+    "links": [
+        {
+            "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/qos_specs/599ef437-1c99-42ec-9fc6-239d0519fef1",
+            "rel": "self"
+        },
+        {
+            "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/qos_specs/599ef437-1c99-42ec-9fc6-239d0519fef1",
+            "rel": "bookmark"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/qos-create-response.xml b/api-ref/v2/source/samples/qos-create-response.xml
new file mode 100644
index 00000000000..b2393248699
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-create-response.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qos_specs>
+    <qos_spec consumer="back-end" id="e1f84cf3-6b1e-4f25-8130-3244f69ec7c1" name="performance-spec">
+        <specs>
+            <delay>0</delay>
+            <throughput>100</throughput>
+        </specs>
+    </qos_spec>
+</qos_specs>
diff --git a/api-ref/v2/source/samples/qos-list-response.json b/api-ref/v2/source/samples/qos-list-response.json
new file mode 100644
index 00000000000..92f2a6216ed
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-list-response.json
@@ -0,0 +1,22 @@
+{
+    "qos_specs": [
+        {
+            "specs": {
+                "availability": "100",
+                "numberOfFailures": "0"
+            },
+            "consumer": "back-end",
+            "name": "reliability-spec",
+            "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15"
+        },
+        {
+            "specs": {
+                "delay": "0",
+                "throughput": "100"
+            },
+            "consumer": "back-end",
+            "name": "performance-spec",
+            "id": "ecfc6e2e-7117-44a4-8eec-f84d04f531a8"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/qos-list-response.xml b/api-ref/v2/source/samples/qos-list-response.xml
new file mode 100644
index 00000000000..c77e7847ff3
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-list-response.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<qos_specs>
+    <qos_spec consumer="back-end"
+        id="0388d6c6-d5d4-42a3-b289-95205c50dd15"
+        name="reliability-spec">
+        <specs>
+            <availability>100</availability>
+            <numberOfFailures>0</numberOfFailures>
+        </specs>
+    </qos_spec>
+    <qos_spec consumer="back-end"
+        id="ecfc6e2e-7117-44a4-8eec-f84d04f531a8"
+        name="performance-spec">
+        <specs>
+            <delay>0</delay>
+            <throughput>100</throughput>
+        </specs>
+    </qos_spec>
+</qos_specs>
diff --git a/api-ref/v2/source/samples/qos-show-response.json b/api-ref/v2/source/samples/qos-show-response.json
new file mode 100644
index 00000000000..d9a1dc1912a
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-show-response.json
@@ -0,0 +1,21 @@
+{
+    "qos_specs": {
+        "specs": {
+            "availability": "100",
+            "numberOfFailures": "0"
+        },
+        "consumer": "back-end",
+        "name": "reliability-spec",
+        "id": "0388d6c6-d5d4-42a3-b289-95205c50dd15"
+    },
+    "links": [
+        {
+            "href": "http://23.253.228.211:8776/v2/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15",
+            "rel": "self"
+        },
+        {
+            "href": "http://23.253.228.211:8776/e1cf63117ae74309a5bcc2002a23be8b/qos_specs/0388d6c6-d5d4-42a3-b289-95205c50dd15",
+            "rel": "bookmark"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/qos-show-response.xml b/api-ref/v2/source/samples/qos-show-response.xml
new file mode 100644
index 00000000000..7aee8126ce8
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-show-response.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<qos_specs>
+    <qos_spec consumer="back-end"
+        id="0388d6c6-d5d4-42a3-b289-95205c50dd15"
+        name="reliability-spec">
+        <specs>
+            <availability>100</availability>
+            <numberOfFailures>0</numberOfFailures>
+        </specs>
+    </qos_spec>
+</qos_specs>
diff --git a/api-ref/v2/source/samples/qos-unset-request.json b/api-ref/v2/source/samples/qos-unset-request.json
new file mode 100644
index 00000000000..4193b73921a
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-unset-request.json
@@ -0,0 +1,5 @@
+{
+    "keys": [
+        "key1"
+    ]
+}
diff --git a/api-ref/v2/source/samples/qos-unset-request.xml b/api-ref/v2/source/samples/qos-unset-request.xml
new file mode 100644
index 00000000000..c6f10f9f37b
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-unset-request.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<keys>
+    <key/>
+</keys>
diff --git a/api-ref/v2/source/samples/qos-unset-response.json b/api-ref/v2/source/samples/qos-unset-response.json
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/api-ref/v2/source/samples/qos-update-request.json b/api-ref/v2/source/samples/qos-update-request.json
new file mode 100644
index 00000000000..1d398770584
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-update-request.json
@@ -0,0 +1,5 @@
+{
+    "qos_specs": {
+        "delay": "1"
+    }
+}
diff --git a/api-ref/v2/source/samples/qos-update-request.xml b/api-ref/v2/source/samples/qos-update-request.xml
new file mode 100644
index 00000000000..78524c7cadb
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-update-request.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qos_specs delay="2" throughput="100"/>
diff --git a/api-ref/v2/source/samples/qos-update-response.json b/api-ref/v2/source/samples/qos-update-response.json
new file mode 100644
index 00000000000..1d398770584
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-update-response.json
@@ -0,0 +1,5 @@
+{
+    "qos_specs": {
+        "delay": "1"
+    }
+}
diff --git a/api-ref/v2/source/samples/qos-update-response.xml b/api-ref/v2/source/samples/qos-update-response.xml
new file mode 100644
index 00000000000..ed8dd0578d9
--- /dev/null
+++ b/api-ref/v2/source/samples/qos-update-response.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<qos_specs>
+    <qos_spec/>
+</qos_specs>
diff --git a/api-ref/v2/source/samples/qos_show_response.json b/api-ref/v2/source/samples/qos_show_response.json
new file mode 100644
index 00000000000..4a5d9db6aae
--- /dev/null
+++ b/api-ref/v2/source/samples/qos_show_response.json
@@ -0,0 +1,9 @@
+{
+    "qos_associations": [
+        {
+            "association_type": "volume_type",
+            "name": "reliability-type",
+            "id": "a12983c2-83bd-4afa-be9f-ad796573ead6"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/qos_show_response.xml b/api-ref/v2/source/samples/qos_show_response.xml
new file mode 100644
index 00000000000..e208b8a2085
--- /dev/null
+++ b/api-ref/v2/source/samples/qos_show_response.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<qos_associations>
+    <associations association_type="volume_type"
+        name="reliability-type"
+        id="a12983c2-83bd-4afa-be9f-ad796573ead6"/>
+</qos_associations>
diff --git a/api-ref/v2/source/samples/quotas-defaults-show-response.xml b/api-ref/v2/source/samples/quotas-defaults-show-response.xml
new file mode 100644
index 00000000000..76a9292c137
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-defaults-show-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <cores>20</cores>
+  <fixed_ips>-1</fixed_ips>
+  <floating_ips>10</floating_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>10</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v2/source/samples/quotas-delete-response.json b/api-ref/v2/source/samples/quotas-delete-response.json
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/api-ref/v2/source/samples/quotas-show-defaults-response.json b/api-ref/v2/source/samples/quotas-show-defaults-response.json
new file mode 100644
index 00000000000..6c267112cea
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-show-defaults-response.json
@@ -0,0 +1,7 @@
+{
+    "quota_set": {
+        "gigabytes": 5,
+        "snapshots": 10,
+        "volumes": 20
+    }
+}
diff --git a/api-ref/v2/source/samples/quotas-show-defaults-response.xml b/api-ref/v2/source/samples/quotas-show-defaults-response.xml
new file mode 100644
index 00000000000..b63b30b08f7
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-show-defaults-response.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <gigabytes>5</gigabytes>
+  <snapshots>10</snapshots>
+  <volumes>20</volumes>
+</quota_set>
diff --git a/api-ref/v2/source/samples/quotas-show-response.json b/api-ref/v2/source/samples/quotas-show-response.json
new file mode 100644
index 00000000000..6c267112cea
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-show-response.json
@@ -0,0 +1,7 @@
+{
+    "quota_set": {
+        "gigabytes": 5,
+        "snapshots": 10,
+        "volumes": 20
+    }
+}
diff --git a/api-ref/v2/source/samples/quotas-show-response.xml b/api-ref/v2/source/samples/quotas-show-response.xml
new file mode 100644
index 00000000000..b63b30b08f7
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-show-response.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <gigabytes>5</gigabytes>
+  <snapshots>10</snapshots>
+  <volumes>20</volumes>
+</quota_set>
diff --git a/api-ref/v2/source/samples/quotas-update-request.json b/api-ref/v2/source/samples/quotas-update-request.json
new file mode 100644
index 00000000000..9ab32c11ca5
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-update-request.json
@@ -0,0 +1,5 @@
+{
+    "quota_set": {
+        "snapshots": 45
+    }
+}
diff --git a/api-ref/v2/source/samples/quotas-update-request.xml b/api-ref/v2/source/samples/quotas-update-request.xml
new file mode 100644
index 00000000000..ccf34efa0ab
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <snapshots>45</snapshots>
+</quota_set>
diff --git a/api-ref/v2/source/samples/quotas-update-response.json b/api-ref/v2/source/samples/quotas-update-response.json
new file mode 100644
index 00000000000..9ab32c11ca5
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-update-response.json
@@ -0,0 +1,5 @@
+{
+    "quota_set": {
+        "snapshots": 45
+    }
+}
diff --git a/api-ref/v2/source/samples/quotas-update-response.xml b/api-ref/v2/source/samples/quotas-update-response.xml
new file mode 100644
index 00000000000..b63b30b08f7
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-update-response.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <gigabytes>5</gigabytes>
+  <snapshots>10</snapshots>
+  <volumes>20</volumes>
+</quota_set>
diff --git a/api-ref/v2/source/samples/quotas-user-show-detailed-response.json b/api-ref/v2/source/samples/quotas-user-show-detailed-response.json
new file mode 100644
index 00000000000..79609eb84a3
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-user-show-detailed-response.json
@@ -0,0 +1,19 @@
+{
+    "quota_set": {
+        "gigabytes": {
+            "in_use": 100,
+            "limit": -1,
+            "reserved": 0
+        },
+        "snapshots": {
+            "in_use": 12,
+            "limit": -1,
+            "reserved": 0
+        },
+        "volumes": {
+            "in_use": 1,
+            "limit": -1,
+            "reserved": 0
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/quotas-user-show-response.json b/api-ref/v2/source/samples/quotas-user-show-response.json
new file mode 100644
index 00000000000..6c267112cea
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-user-show-response.json
@@ -0,0 +1,7 @@
+{
+    "quota_set": {
+        "gigabytes": 5,
+        "snapshots": 10,
+        "volumes": 20
+    }
+}
diff --git a/api-ref/v2/source/samples/quotas-user-show-response.xml b/api-ref/v2/source/samples/quotas-user-show-response.xml
new file mode 100644
index 00000000000..b63b30b08f7
--- /dev/null
+++ b/api-ref/v2/source/samples/quotas-user-show-response.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <gigabytes>5</gigabytes>
+  <snapshots>10</snapshots>
+  <volumes>20</volumes>
+</quota_set>
diff --git a/api-ref/v2/source/samples/snapshot-create-request.json b/api-ref/v2/source/samples/snapshot-create-request.json
new file mode 100644
index 00000000000..3c0fe5d888f
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-create-request.json
@@ -0,0 +1,8 @@
+{
+    "snapshot": {
+        "name": "snap-001",
+        "description": "Daily backup",
+        "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+        "force": true
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-create-request.xml b/api-ref/v2/source/samples/snapshot-create-request.xml
new file mode 100644
index 00000000000..2b56fde55da
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-create-request.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot
+    xmlns="http://docs.openstack.org/openstack-block-storage/2.0/content"
+    name="snap-001" description="Daily backup"
+    volume_id="5aa119a8-d25b-45a7-8d1b-88e127885635" force="true"/>
diff --git a/api-ref/v2/source/samples/snapshot-create-response.json b/api-ref/v2/source/samples/snapshot-create-response.json
new file mode 100644
index 00000000000..d8901e88dec
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-create-response.json
@@ -0,0 +1,12 @@
+{
+    "snapshot": {
+        "status": "creating",
+        "description": "Daily backup",
+        "created_at": "2013-02-25T03:56:53.081642",
+        "metadata": {},
+        "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+        "size": 1,
+        "id": "ffa9bc5e-1172-4021-acaf-cdcd78a9584d",
+        "name": "snap-001"
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-create-response.xml b/api-ref/v2/source/samples/snapshot-create-response.xml
new file mode 100644
index 00000000000..1f72e69934c
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-create-response.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<snapshot status="creating" description="Daily backup"
+    created_at="2013-02-25T03:56:53.081642"
+    volume_id="5aa119a8-d25b-45a7-8d1b-88e127885635" size="1"
+    id="ffa9bc5e-1172-4021-acaf-cdcd78a9584d" name="snap-001">
+    <metadata/>
+</snapshot>
diff --git a/api-ref/v2/source/samples/snapshot-metadata-show-response.json b/api-ref/v2/source/samples/snapshot-metadata-show-response.json
new file mode 100644
index 00000000000..cbfe4ef7a8e
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-metadata-show-response.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "name": "test"
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-metadata-show-response.xml b/api-ref/v2/source/samples/snapshot-metadata-show-response.xml
new file mode 100644
index 00000000000..f62f5b6b9c3
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-metadata-show-response.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+    <meta key="name">test</meta>
+</metadata>
diff --git a/api-ref/v2/source/samples/snapshot-metadata-update-request.json b/api-ref/v2/source/samples/snapshot-metadata-update-request.json
new file mode 100644
index 00000000000..4373b0018da
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-metadata-update-request.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "key": "v2"
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-metadata-update-request.xml b/api-ref/v2/source/samples/snapshot-metadata-update-request.xml
new file mode 100644
index 00000000000..ceeb8f0314b
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-metadata-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata>
+    <meta key="key">v2</meta>
+</metadata>
diff --git a/api-ref/v2/source/samples/snapshot-metadata-update-response.json b/api-ref/v2/source/samples/snapshot-metadata-update-response.json
new file mode 100644
index 00000000000..4373b0018da
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-metadata-update-response.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "key": "v2"
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-metadata-update-response.xml b/api-ref/v2/source/samples/snapshot-metadata-update-response.xml
new file mode 100644
index 00000000000..6d00cdef115
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-metadata-update-response.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+    <meta key="key">v2</meta>
+</metadata>
diff --git a/api-ref/v2/source/samples/snapshot-show-response.json b/api-ref/v2/source/samples/snapshot-show-response.json
new file mode 100644
index 00000000000..25a8c6c9def
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-show-response.json
@@ -0,0 +1,14 @@
+{
+    "snapshot": {
+        "status": "available",
+        "os-extended-snapshot-attributes:progress": "100%",
+        "description": "Daily backup",
+        "created_at": "2013-02-25T04:13:17.000000",
+        "metadata": {},
+        "volume_id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+        "os-extended-snapshot-attributes:project_id": "0c2eba2c5af04d3f9e9d0d410b371fde",
+        "size": 1,
+        "id": "2bb856e1-b3d8-4432-a858-09e4ce939389",
+        "name": "snap-001"
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-show-response.xml b/api-ref/v2/source/samples/snapshot-show-response.xml
new file mode 100644
index 00000000000..5863aa554f4
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-show-response.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<snapshot
+  xmlns:os-extended-snapshot-attributes="http://docs.openstack.org/openstack-block-storage/2.0/content/Extended_Snapshot_Attributes.html"
+  status="available" description="Very important"
+  created_at="2013-02-25 04:13:17"
+  volume_id="5aa119a8-d25b-45a7-8d1b-88e127885635" size="1"
+  id="2bb856e1-b3d8-4432-a858-09e4ce939389" name="snap-001"
+  os-extended-snapshot-attributes:project_id="0c2eba2c5af04d3f9e9d0d410b371fde"
+  os-extended-snapshot-attributes:progress="100%">
+  <metadata/>
+</snapshot>
diff --git a/api-ref/v2/source/samples/snapshot-update-request.json b/api-ref/v2/source/samples/snapshot-update-request.json
new file mode 100644
index 00000000000..0e08957178e
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-update-request.json
@@ -0,0 +1,6 @@
+{
+    "snapshot": {
+        "name": "snap-002",
+        "description": "This is yet, another snapshot."
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-update-request.xml b/api-ref/v2/source/samples/snapshot-update-request.xml
new file mode 100644
index 00000000000..670f6e68231
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot
+    xmlns="http://docs.openstack.org/openstack-block-storage/2.0/content"
+    name="snap-002" description="This is yet, another snapshot."/>
diff --git a/api-ref/v2/source/samples/snapshot-update-response.json b/api-ref/v2/source/samples/snapshot-update-response.json
new file mode 100644
index 00000000000..a2fa2779393
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-update-response.json
@@ -0,0 +1,11 @@
+{
+    "snapshot": {
+        "created_at": "2013-02-20T08:11:34.000000",
+        "description": "This is yet, another snapshot",
+        "name": "snap-002",
+        "id": "4b502fcb-1f26-45f8-9fe5-3b9a0a52eaf2",
+        "size": 1,
+        "status": "available",
+        "volume_id": "2402b902-0b7a-458c-9c07-7435a826f794"
+    }
+}
diff --git a/api-ref/v2/source/samples/snapshot-update-response.xml b/api-ref/v2/source/samples/snapshot-update-response.xml
new file mode 100644
index 00000000000..1d09541c78c
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshot-update-response.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<snapshot
+  xmlns:os-extended-snapshot-attributes="http://docs.openstack.org/openstack-block-storage/2.0/content/Extended_Snapshot_Attributes.html"
+    status="available"
+    description="This is yet, another snapshot"
+    created_at="2013-02-20T08:11:34.000000"
+    volume_id="2402b902-0b7a-458c-9c07-7435a826f794"
+    size="1"
+    id="4b502fcb-1f26-45f8-9fe5-3b9a0a52eaf2"
+    name="snap-002"
+    os-extended-snapshot-attributes:project_id="0c2eba2c5af04d3f9e9d0d410b371fde"
+    os-extended-snapshot-attributes:progress="100%">
+    <metadata/>
+</snapshot>
diff --git a/api-ref/v2/source/samples/snapshots-list-detailed-response.json b/api-ref/v2/source/samples/snapshots-list-detailed-response.json
new file mode 100644
index 00000000000..463b98ec12d
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshots-list-detailed-response.json
@@ -0,0 +1,18 @@
+{
+    "snapshots": [
+        {
+            "status": "available",
+            "metadata": {
+                "name": "test"
+            },
+            "os-extended-snapshot-attributes:progress": "100%",
+            "name": "test-volume-snapshot",
+            "volume_id": "173f7b48-c4c1-4e70-9acc-086b39073506",
+            "os-extended-snapshot-attributes:project_id": "bab7d5c60cd041a0a36f7c4b6e1dd978",
+            "created_at": "2015-11-29T02:25:51.000000",
+            "size": 1,
+            "id": "b1323cda-8e4b-41c1-afc5-2fc791809c8c",
+            "description": "volume snapshot"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/snapshots-list-detailed-response.xml b/api-ref/v2/source/samples/snapshots-list-detailed-response.xml
new file mode 100644
index 00000000000..2114e0069ca
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshots-list-detailed-response.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshots
+    xmlns:os-extended-snapshot-attributes="http://docs.openstack.org/volume/ext/extended_snapshot_attributes/api/v1">
+    <snapshot status="available"
+        description="volume snapshot"
+        created_at="2015-11-29 02:25:51+00:00"
+        volume_id="173f7b48-c4c1-4e70-9acc-086b39073506"
+        size="1" id="b1323cda-8e4b-41c1-afc5-2fc791809c8c"
+        name="test-volume-snapshot"
+        os-extended-snapshot-attributes:project_id="bab7d5c60cd041a0a36f7c4b6e1dd978"
+        os-extended-snapshot-attributes:progress="100%">
+        <metadata>
+            <meta key="name">test</meta>
+        </metadata>
+    </snapshot>
+</snapshots>
diff --git a/api-ref/v2/source/samples/snapshots-list-response.json b/api-ref/v2/source/samples/snapshots-list-response.json
new file mode 100644
index 00000000000..8d7e4973acb
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshots-list-response.json
@@ -0,0 +1,16 @@
+{
+    "snapshots": [
+        {
+            "status": "available",
+            "metadata": {
+                "name": "test"
+            },
+            "name": "test-volume-snapshot",
+            "volume_id": "173f7b48-c4c1-4e70-9acc-086b39073506",
+            "created_at": "2015-11-29T02:25:51.000000",
+            "size": 1,
+            "id": "b1323cda-8e4b-41c1-afc5-2fc791809c8c",
+            "description": "volume snapshot"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/snapshots-list-response.xml b/api-ref/v2/source/samples/snapshots-list-response.xml
new file mode 100644
index 00000000000..654189455fb
--- /dev/null
+++ b/api-ref/v2/source/samples/snapshots-list-response.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshots>
+    <snapshot status="available"
+        description="volume snapshot"
+        created_at="2015-11-29 02:25:51+00:00"
+        volume_id="173f7b48-c4c1-4e70-9acc-086b39073506"
+        size="1" id="b1323cda-8e4b-41c1-afc5-2fc791809c8c"
+        name="test-volume-snapshot">
+        <metadata>
+            <meta key="name">test</meta>
+        </metadata>
+    </snapshot>
+</snapshots>
diff --git a/api-ref/v2/source/samples/user-quotas-show-response.json b/api-ref/v2/source/samples/user-quotas-show-response.json
new file mode 100644
index 00000000000..239c64d23d4
--- /dev/null
+++ b/api-ref/v2/source/samples/user-quotas-show-response.json
@@ -0,0 +1,17 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "fixed_ips": -1,
+        "floating_ips": 10,
+        "id": "fake_tenant",
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 10,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 10
+    }
+}
diff --git a/api-ref/v2/source/samples/user-quotas-show-response.xml b/api-ref/v2/source/samples/user-quotas-show-response.xml
new file mode 100644
index 00000000000..76a9292c137
--- /dev/null
+++ b/api-ref/v2/source/samples/user-quotas-show-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <cores>20</cores>
+  <fixed_ips>-1</fixed_ips>
+  <floating_ips>10</floating_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>10</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v2/source/samples/user-quotas-update-request.json b/api-ref/v2/source/samples/user-quotas-update-request.json
new file mode 100644
index 00000000000..6e5195f9ac8
--- /dev/null
+++ b/api-ref/v2/source/samples/user-quotas-update-request.json
@@ -0,0 +1,6 @@
+{
+    "quota_set": {
+        "force": true,
+        "instances": 9
+    }
+}
diff --git a/api-ref/v2/source/samples/user-quotas-update-request.xml b/api-ref/v2/source/samples/user-quotas-update-request.xml
new file mode 100644
index 00000000000..dd58ed24d0c
--- /dev/null
+++ b/api-ref/v2/source/samples/user-quotas-update-request.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set id="fake_tenant">
+  <force>true</force>
+  <instances>9</instances>
+</quota_set>
diff --git a/api-ref/v2/source/samples/user-quotas-update-response.json b/api-ref/v2/source/samples/user-quotas-update-response.json
new file mode 100644
index 00000000000..5539332927e
--- /dev/null
+++ b/api-ref/v2/source/samples/user-quotas-update-response.json
@@ -0,0 +1,16 @@
+{
+    "quota_set": {
+        "cores": 20,
+        "floating_ips": 10,
+        "fixed_ips": -1,
+        "injected_file_content_bytes": 10240,
+        "injected_file_path_bytes": 255,
+        "injected_files": 5,
+        "instances": 9,
+        "key_pairs": 100,
+        "metadata_items": 128,
+        "ram": 51200,
+        "security_group_rules": 20,
+        "security_groups": 10
+    }
+}
diff --git a/api-ref/v2/source/samples/user-quotas-update-response.xml b/api-ref/v2/source/samples/user-quotas-update-response.xml
new file mode 100644
index 00000000000..43c36c7da31
--- /dev/null
+++ b/api-ref/v2/source/samples/user-quotas-update-response.xml
@@ -0,0 +1,15 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<quota_set>
+  <cores>20</cores>
+  <floating_ips>10</floating_ips>
+  <fixed_ips>-1</fixed_ips>
+  <injected_file_content_bytes>10240</injected_file_content_bytes>
+  <injected_file_path_bytes>255</injected_file_path_bytes>
+  <injected_files>5</injected_files>
+  <instances>9</instances>
+  <key_pairs>100</key_pairs>
+  <metadata_items>128</metadata_items>
+  <ram>51200</ram>
+  <security_group_rules>20</security_group_rules>
+  <security_groups>10</security_groups>
+</quota_set>
diff --git a/api-ref/v2/source/samples/version-show-response.json b/api-ref/v2/source/samples/version-show-response.json
new file mode 100644
index 00000000000..06ba84d077d
--- /dev/null
+++ b/api-ref/v2/source/samples/version-show-response.json
@@ -0,0 +1,33 @@
+{
+    "version": {
+        "status": "CURRENT",
+        "updated": "2012-01-04T11:33:21Z",
+        "media-types": [
+            {
+                "base": "application/xml",
+                "type": "application/vnd.openstack.volume+xml;version=1"
+            },
+            {
+                "base": "application/json",
+                "type": "application/vnd.openstack.volume+json;version=1"
+            }
+        ],
+        "id": "v1.0",
+        "links": [
+            {
+                "href": "http://23.253.228.211:8776/v1/",
+                "rel": "self"
+            },
+            {
+                "href": "http://jorgew.github.com/block-storage-api/content/os-block-storage-1.0.pdf",
+                "type": "application/pdf",
+                "rel": "describedby"
+            },
+            {
+                "href": "http://docs.rackspacecloud.com/servers/api/v1.1/application.wadl",
+                "type": "application/vnd.sun.wadl+xml",
+                "rel": "describedby"
+            }
+        ]
+    }
+}
diff --git a/api-ref/v2/source/samples/version-show-response.xml b/api-ref/v2/source/samples/version-show-response.xml
new file mode 100644
index 00000000000..38cecbc616b
--- /dev/null
+++ b/api-ref/v2/source/samples/version-show-response.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<choices xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom">
+    <version status="SUPPORTED" id="v1.0">
+        <media-types>
+            <media-type base="application/xml" type="application/vnd.openstack.volume+xml;version=1" />
+            <media-type base="application/json" type="application/vnd.openstack.volume+json;version=1" />
+        </media-types>
+        <atom:link href="http://23.253.248.171:8776/v1/v2.xml" rel="self" />
+    </version>
+    <version status="CURRENT" id="v2.0">
+        <media-types>
+            <media-type base="application/xml" type="application/vnd.openstack.volume+xml;version=1" />
+            <media-type base="application/json" type="application/vnd.openstack.volume+json;version=1" />
+        </media-types>
+        <atom:link href="http://23.253.248.171:8776/v2/v2.xml" rel="self" />
+    </version>
+</choices>
diff --git a/api-ref/v2/source/samples/version-v2-show-response.json b/api-ref/v2/source/samples/version-v2-show-response.json
new file mode 100644
index 00000000000..2719a8135a1
--- /dev/null
+++ b/api-ref/v2/source/samples/version-v2-show-response.json
@@ -0,0 +1,44 @@
+{
+    "choices": [
+        {
+            "status": "SUPPORTED",
+            "media-types": [
+                {
+                    "base": "application/xml",
+                    "type": "application/vnd.openstack.volume+xml;version=1"
+                },
+                {
+                    "base": "application/json",
+                    "type": "application/vnd.openstack.volume+json;version=1"
+                }
+            ],
+            "id": "v1.0",
+            "links": [
+                {
+                    "href": "http://23.253.248.171:8776/v1/v2.json",
+                    "rel": "self"
+                }
+            ]
+        },
+        {
+            "status": "CURRENT",
+            "media-types": [
+                {
+                    "base": "application/xml",
+                    "type": "application/vnd.openstack.volume+xml;version=1"
+                },
+                {
+                    "base": "application/json",
+                    "type": "application/vnd.openstack.volume+json;version=1"
+                }
+            ],
+            "id": "v2.0",
+            "links": [
+                {
+                    "href": "http://23.253.248.171:8776/v2/v2.json",
+                    "rel": "self"
+                }
+            ]
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/versions-resp.json b/api-ref/v2/source/samples/versions-resp.json
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/api-ref/v2/source/samples/versions-response.json b/api-ref/v2/source/samples/versions-response.json
new file mode 100644
index 00000000000..d8a0c6a63c7
--- /dev/null
+++ b/api-ref/v2/source/samples/versions-response.json
@@ -0,0 +1,76 @@
+{
+    "versions": [
+        {
+            "status": "DEPRECATED",
+            "updated": "2014-06-28T12:20:21Z",
+            "links": [
+                {
+                    "href": "http://docs.openstack.org/",
+                    "type": "text/html",
+                    "rel": "describedby"
+                },
+                {
+                    "href": "http://10.0.2.15:8776/v1/",
+                    "rel": "self"
+                }
+            ],
+            "min_version": "",
+            "version": "",
+            "media-types": [
+                {
+                    "base": "application/json",
+                    "type": "application/vnd.openstack.volume+json;version=1"
+                }
+            ],
+            "id": "v1.0"
+        },
+        {
+            "status": "SUPPORTED",
+            "updated": "2014-06-28T12:20:21Z",
+            "links": [
+                {
+                    "href": "http://docs.openstack.org/",
+                    "type": "text/html",
+                    "rel": "describedby"
+                },
+                {
+                    "href": "http://10.0.2.15:8776/v2/",
+                    "rel": "self"
+                }
+            ],
+            "min_version": "",
+            "version": "",
+            "media-types": [
+                {
+                    "base": "application/json",
+                    "type": "application/vnd.openstack.volume+json;version=1"
+                }
+            ],
+            "id": "v2.0"
+        },
+        {
+            "status": "CURRENT",
+            "updated": "2016-02-08T12:20:21Z",
+            "links": [
+                {
+                    "href": "http://docs.openstack.org/",
+                    "type": "text/html",
+                    "rel": "describedby"
+                },
+                {
+                    "href": "http://10.0.2.15:8776/v3/",
+                    "rel": "self"
+                }
+            ],
+            "min_version": "3.0",
+            "version": "{Current_Max_Version}",
+            "media-types": [
+                {
+                    "base": "application/json",
+                    "type": "application/vnd.openstack.volume+json;version=1"
+                }
+            ],
+            "id": "v3.0"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/versions-response.xml b/api-ref/v2/source/samples/versions-response.xml
new file mode 100644
index 00000000000..a09fac7165b
--- /dev/null
+++ b/api-ref/v2/source/samples/versions-response.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<choices xmlns="http://docs.openstack.org/common/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom">
+    <version status="DEPRECATED" id="v1.0">
+        <media-types>
+            <media-type base="application/xml" type="application/vnd.openstack.volume+xml;version=1" />
+            <media-type base="application/json" type="application/vnd.openstack.volume+json;version=1" />
+        </media-types>
+        <atom:link href="http://23.253.248.171:8776/v1/.xml" rel="self" />
+    </version>
+    <version status="SUPPORTED" id="v2.0">
+        <media-types>
+            <media-type base="application/xml" type="application/vnd.openstack.volume+xml;version=1" />
+            <media-type base="application/json" type="application/vnd.openstack.volume+json;version=1" />
+        </media-types>
+        <atom:link href="http://23.253.248.171:8776/v2/.xml" rel="self" />
+    </version>
+    <version status="CURRENT" id="v3.0">
+        <media-types>
+            <media-type base="application/xml" type="application/vnd.openstack.volume+xml;version=1" />
+            <media-type base="application/json" type="application/vnd.openstack.volume+json;version=1" />
+        </media-types>
+        <atom:link href="http://23.253.248.171:8776/v3/.xml" rel="self" />
+    </version>
+</choices>
+
diff --git a/api-ref/v2/source/samples/volume-attach-request.json b/api-ref/v2/source/samples/volume-attach-request.json
new file mode 100644
index 00000000000..a779f9fbf71
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-attach-request.json
@@ -0,0 +1,6 @@
+{
+    "os-attach": {
+        "instance_uuid": "95D9EF50-507D-11E5-B970-0800200C9A66",
+        "mountpoint": "/dev/vdc"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-create-request.json b/api-ref/v2/source/samples/volume-create-request.json
new file mode 100644
index 00000000000..38c12d9a779
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-create-request.json
@@ -0,0 +1,16 @@
+{
+    "volume": {
+        "size": 10,
+        "availability_zone": null,
+        "source_volid": null,
+        "description": null,
+        "multiattach ": false,
+        "snapshot_id": null,
+        "name": null,
+        "imageRef": null,
+        "volume_type": null,
+        "metadata": {},
+        "source_replica": null,
+        "consistencygroup_id": null
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-create-request.xml b/api-ref/v2/source/samples/volume-create-request.xml
new file mode 100644
index 00000000000..5b655e92e9f
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-create-request.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume
+    xmlns="http://docs.openstack.org/openstack-block-storage/2.0/content"
+    name="vol-001" description="Another volume."
+    size="2"/>
diff --git a/api-ref/v2/source/samples/volume-create-response.json b/api-ref/v2/source/samples/volume-create-response.json
new file mode 100644
index 00000000000..a4f4de88b60
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-create-response.json
@@ -0,0 +1,34 @@
+{
+    "volume": {
+        "status": "creating",
+        "migration_status": null,
+        "user_id": "0eea4eabcf184061a3b6db1e0daaf010",
+        "attachments": [],
+        "links": [
+            {
+                "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+                "rel": "self"
+            },
+            {
+                "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+                "rel": "bookmark"
+            }
+        ],
+        "availability_zone": "nova",
+        "bootable": "false",
+        "encrypted": false,
+        "created_at": "2015-11-29T03:01:44.000000",
+        "description": null,
+        "updated_at": null,
+        "volume_type": "lvmdriver-1",
+        "name": "test-volume-attachments",
+        "replication_status": "disabled",
+        "consistencygroup_id": null,
+        "source_volid": null,
+        "snapshot_id": null,
+        "multiattach": false,
+        "metadata": {},
+        "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+        "size": 2
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-create-response.xml b/api-ref/v2/source/samples/volume-create-response.xml
new file mode 100644
index 00000000000..9be3c5e3943
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-create-response.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<volume xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/volume/api/v1" status="creating"
+    name="vol-001" availability_zone="nova" bootable="false"
+    created_at="2014-02-21 20:18:33.122452"
+    description="Another volume." volume_type="None"
+    snapshot_id="None" source_volid="None"
+    id="83960a54-8dad-4fd8-bc41-33c71e098e04" size="2">
+    <attachments/>
+    <metadata/>
+</volume>
diff --git a/api-ref/v2/source/samples/volume-extend-request.json b/api-ref/v2/source/samples/volume-extend-request.json
new file mode 100644
index 00000000000..a051cb3cb1c
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-extend-request.json
@@ -0,0 +1,5 @@
+{
+    "os-extend": {
+        "new_size": 3
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-force-detach-request.json b/api-ref/v2/source/samples/volume-force-detach-request.json
new file mode 100644
index 00000000000..277849d8cd6
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-force-detach-request.json
@@ -0,0 +1,8 @@
+{
+    "os-force_detach": {
+        "attachment_id": "d8777f54-84cf-4809-a679-468ffed56cf1",
+        "connector": {
+            "initiator": "iqn.2012-07.org.fake:01"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-image-metadata-set-request.json b/api-ref/v2/source/samples/volume-image-metadata-set-request.json
new file mode 100644
index 00000000000..1f2be3d6efd
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-image-metadata-set-request.json
@@ -0,0 +1,10 @@
+{
+    "os-set_image_metadata": {
+        "metadata": {
+            "image_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
+            "image_name": "image",
+            "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6",
+            "ramdisk_id": "somedisk"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-image-metadata-unset-request.json b/api-ref/v2/source/samples/volume-image-metadata-unset-request.json
new file mode 100644
index 00000000000..49d3295c5ae
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-image-metadata-unset-request.json
@@ -0,0 +1,5 @@
+{
+    "os-unset_image_metadata": {
+        "key": "ramdisk_id"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-manage-request.json b/api-ref/v2/source/samples/volume-manage-request.json
new file mode 100644
index 00000000000..f84e8261dd9
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-manage-request.json
@@ -0,0 +1,18 @@
+{
+    "volume": {
+        "host": "geraint-VirtualBox",
+        "ref": {
+            "source-volume-name": "existingLV",
+            "source-volume-id": "1234"
+        },
+        "name": "New Volume",
+        "availability_zone": "az2",
+        "description": "Volume imported from existingLV",
+        "volume_type": null,
+        "bootable": true,
+        "metadata": {
+            "key1": "value1",
+            "key2": "value2"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-manage-response.json b/api-ref/v2/source/samples/volume-manage-response.json
new file mode 100644
index 00000000000..343ca66bc71
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-manage-response.json
@@ -0,0 +1,33 @@
+{
+    "volume": {
+        "status": "creating",
+        "user_id": "eae1472b5fc5496998a3d06550929e7e",
+        "attachments": [],
+        "links": [
+            {
+                "href": "http://10.0.2.15:8776/v2/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
+                "rel": "self"
+            },
+            {
+                "href": "http://10.0.2.15:8776/87c8522052ca4eed98bc672b4c1a3ddb/volumes/23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
+                "rel": "bookmark"
+            }
+        ],
+        "availability_zone": "az2",
+        "bootable": "false",
+        "encrypted": "false",
+        "created_at": "2014-07-18T00:12:54.000000",
+        "description": "Volume imported from existingLV",
+        "os-vol-tenant-attr:tenant_id": "87c8522052ca4eed98bc672b4c1a3ddb",
+        "volume_type": null,
+        "name": "New Volume",
+        "source_volid": null,
+        "snapshot_id": null,
+        "metadata": {
+            "key2": "value2",
+            "key1": "value1"
+        },
+        "id": "23cf872b-c781-4cd4-847d-5f2ec8cbd91c",
+        "size": 0
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-metadata-create-request.json b/api-ref/v2/source/samples/volume-metadata-create-request.json
new file mode 100644
index 00000000000..1ff9aae2788
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-create-request.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "name": "metadata0"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-metadata-create-response.json b/api-ref/v2/source/samples/volume-metadata-create-response.json
new file mode 100644
index 00000000000..1ff9aae2788
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-create-response.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "name": "metadata0"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-metadata-show-response.json b/api-ref/v2/source/samples/volume-metadata-show-response.json
new file mode 100644
index 00000000000..5937a866595
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-show-response.json
@@ -0,0 +1,3 @@
+{
+    "metadata": {}
+}
diff --git a/api-ref/v2/source/samples/volume-metadata-show-response.xml b/api-ref/v2/source/samples/volume-metadata-show-response.xml
new file mode 100644
index 00000000000..ba106077a94
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-show-response.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1"/>
diff --git a/api-ref/v2/source/samples/volume-metadata-update-request.json b/api-ref/v2/source/samples/volume-metadata-update-request.json
new file mode 100644
index 00000000000..4d96ad8484a
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-update-request.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "name": "metadata1"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-metadata-update-request.xml b/api-ref/v2/source/samples/volume-metadata-update-request.xml
new file mode 100644
index 00000000000..ceeb8f0314b
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata>
+    <meta key="key">v2</meta>
+</metadata>
diff --git a/api-ref/v2/source/samples/volume-metadata-update-response.json b/api-ref/v2/source/samples/volume-metadata-update-response.json
new file mode 100644
index 00000000000..4d96ad8484a
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-update-response.json
@@ -0,0 +1,5 @@
+{
+    "metadata": {
+        "name": "metadata1"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-metadata-update-response.xml b/api-ref/v2/source/samples/volume-metadata-update-response.xml
new file mode 100644
index 00000000000..6d00cdef115
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-metadata-update-response.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+    <meta key="key">v2</meta>
+</metadata>
diff --git a/api-ref/v2/source/samples/volume-replica-promote-request.json b/api-ref/v2/source/samples/volume-replica-promote-request.json
new file mode 100644
index 00000000000..9ed522325bb
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-replica-promote-request.json
@@ -0,0 +1,3 @@
+{
+    "os-promote-replica": {}
+}
diff --git a/api-ref/v2/source/samples/volume-replica-reenable-request.json b/api-ref/v2/source/samples/volume-replica-reenable-request.json
new file mode 100644
index 00000000000..d622b08ca7b
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-replica-reenable-request.json
@@ -0,0 +1,3 @@
+{
+    "os-reenable-replica": {}
+}
diff --git a/api-ref/v2/source/samples/volume-show-response.json b/api-ref/v2/source/samples/volume-show-response.json
new file mode 100644
index 00000000000..f9d73aae8f5
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-show-response.json
@@ -0,0 +1,33 @@
+{
+    "volume": {
+        "status": "available",
+        "attachments": [],
+        "links": [
+            {
+                "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
+                "rel": "bookmark"
+            }
+        ],
+        "availability_zone": "nova",
+        "bootable": "false",
+        "os-vol-host-attr:host": "ip-10-168-107-25",
+        "source_volid": null,
+        "snapshot_id": null,
+        "id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+        "description": "Super volume.",
+        "name": "vol-002",
+        "created_at": "2013-02-25T02:40:21.000000",
+        "volume_type": "None",
+        "os-vol-tenant-attr:tenant_id": "0c2eba2c5af04d3f9e9d0d410b371fde",
+        "size": 1,
+        "os-volume-replication:driver_data": null,
+        "os-volume-replication:extended_status": null,
+        "metadata": {
+            "contents": "not junk"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-show-response.xml b/api-ref/v2/source/samples/volume-show-response.xml
new file mode 100644
index 00000000000..17632dfcb80
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-show-response.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<volume
+    xmlns:os-vol-image-meta="http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Image_Metadata.html"
+    xmlns:os-vol-tenant-attr="http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Tenant_Attribute.html"
+    xmlns:os-vol-host-attr="http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Host_Attribute.html"
+    xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/api/openstack-block-storage/2.0/content"
+    status="available" name="vol-003" availability_zone="nova"
+    bootable="false" created_at="2013-02-25 02:40:21"
+    description="This is yet, another volume." volume_type="None"
+    source_volid="None" snapshot_id="None"
+    id="5aa119a8-d25b-45a7-8d1b-88e127885635" size="1"
+    os-vol-tenant-attr:tenant_id="0c2eba2c5af04d3f9e9d0d410b371fde"
+    os-vol-host-attr:host="ip-10-168-107-25">
+    <attachments/>
+    <metadata>
+        <meta key="contents">not junk</meta>
+    </metadata>
+</volume>
diff --git a/api-ref/v2/source/samples/volume-status-reset-request.json b/api-ref/v2/source/samples/volume-status-reset-request.json
new file mode 100644
index 00000000000..506b610190a
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-status-reset-request.json
@@ -0,0 +1,7 @@
+{
+    "os-reset_status": {
+        "status": "available",
+        "attach_status": "detached",
+        "migration_status": "migrating"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-transfer-accept-request.json b/api-ref/v2/source/samples/volume-transfer-accept-request.json
new file mode 100644
index 00000000000..3399f1e0ca4
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfer-accept-request.json
@@ -0,0 +1,5 @@
+{
+    "accept": {
+        "auth_key": "9266c59563c84664"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-transfer-accept-response.json b/api-ref/v2/source/samples/volume-transfer-accept-response.json
new file mode 100644
index 00000000000..bee4d4ae2a1
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfer-accept-response.json
@@ -0,0 +1,17 @@
+{
+    "transfer": {
+        "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
+        "name": "first volume transfer",
+        "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
+        "links": [
+            {
+                "href": "http://localhost/v2/firstproject/volumes/1",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost/firstproject/volumes/1",
+                "rel": "bookmark"
+            }
+        ]
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-transfer-create-request.json b/api-ref/v2/source/samples/volume-transfer-create-request.json
new file mode 100644
index 00000000000..f517b7498de
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfer-create-request.json
@@ -0,0 +1,6 @@
+{
+    "transfer": {
+        "volume_id": "c86b9af4-151d-4ead-b62c-5fb967af0e37",
+        "name": "first volume"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-transfer-create-response.json b/api-ref/v2/source/samples/volume-transfer-create-response.json
new file mode 100644
index 00000000000..4a5fb16cae4
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfer-create-response.json
@@ -0,0 +1,19 @@
+{
+    "transfer": {
+        "id": "1a7059f5-8ed7-45b7-8d05-2811e5d09f24",
+        "created_at": "2015-02-25T03:56:53.081642",
+        "name": "first volume",
+        "volume_id": "c86b9af4-151d-4ead-b62c-5fb967af0e37",
+        "auth_key": "9266c59563c84664",
+        "links": [
+            {
+                "href": "http://localhost/v2/firstproject/volumes/3",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost/firstproject/volumes/3",
+                "rel": "bookmark"
+            }
+        ]
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-transfer-show-response.json b/api-ref/v2/source/samples/volume-transfer-show-response.json
new file mode 100644
index 00000000000..c73b62cc106
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfer-show-response.json
@@ -0,0 +1,18 @@
+{
+    "transfer": {
+        "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
+        "created_at": "2015-02-25T03:56:53.081642",
+        "name": "first volume transfer",
+        "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
+        "links": [
+            {
+                "href": "http://localhost/v2/firstproject/volumes/1",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost/firstproject/volumes/1",
+                "rel": "bookmark"
+            }
+        ]
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-transfers-list-detailed-response.json b/api-ref/v2/source/samples/volume-transfers-list-detailed-response.json
new file mode 100644
index 00000000000..9e5d8c0a1b1
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfers-list-detailed-response.json
@@ -0,0 +1,36 @@
+{
+    "transfers": [
+        {
+            "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
+            "created_at": "2015-02-25T03:56:53.081642",
+            "name": "first volume transfer",
+            "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
+            "links": [
+                {
+                    "href": "http://localhost/v2/firstproject/volumes/1",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost/firstproject/volumes/1",
+                    "rel": "bookmark"
+                }
+            ]
+        },
+        {
+            "id": "f26c0dee-d20d-4e80-8dee-a8d91b9742a1",
+            "created_at": "2015-03-25T03:56:53.081642",
+            "name": "second volume transfer",
+            "volume_id": "673db275-379f-41af-8371-e1652132b4c1",
+            "links": [
+                {
+                    "href": "http://localhost/v2/firstproject/volumes/2",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost/firstproject/volumes/2",
+                    "rel": "bookmark"
+                }
+            ]
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/volume-transfers-list-response.json b/api-ref/v2/source/samples/volume-transfers-list-response.json
new file mode 100644
index 00000000000..02711d1ede4
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-transfers-list-response.json
@@ -0,0 +1,34 @@
+{
+    "transfers": [
+        {
+            "id": "cac5c677-73a9-4288-bb9c-b2ebfb547377",
+            "name": "first volume transfer",
+            "volume_id": "894623a6-e901-4312-aa06-4275e6321cce",
+            "links": [
+                {
+                    "href": "http://localhost/v2/firstproject/volumes/1",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost/firstproject/volumes/1",
+                    "rel": "bookmark"
+                }
+            ]
+        },
+        {
+            "id": "f26c0dee-d20d-4e80-8dee-a8d91b9742a1",
+            "name": "second volume transfer",
+            "volume_id": "673db275-379f-41af-8371-e1652132b4c1",
+            "links": [
+                {
+                    "href": "http://localhost/v2/firstproject/volumes/2",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost/firstproject/volumes/2",
+                    "rel": "bookmark"
+                }
+            ]
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/volume-type-access-add-request.json b/api-ref/v2/source/samples/volume-type-access-add-request.json
new file mode 100644
index 00000000000..b7481edbbf3
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-access-add-request.json
@@ -0,0 +1,5 @@
+{
+    "addProjectAccess": {
+        "project": "f270b245cb11498ca4031deb7e141cfa"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-access-add-request.xml b/api-ref/v2/source/samples/volume-type-access-add-request.xml
new file mode 100644
index 00000000000..fdf06a0c2c1
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-access-add-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<addProjectAccess id="bb4f8f7f-fc38-4807-bd78-5710792205e1">
+  <project>"f270b245cb11498ca4031deb7e141cfa"</project>
+</addProjectAccess>
diff --git a/api-ref/v2/source/samples/volume-type-access-delete-request.json b/api-ref/v2/source/samples/volume-type-access-delete-request.json
new file mode 100644
index 00000000000..144997bfcc0
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-access-delete-request.json
@@ -0,0 +1,5 @@
+{
+    "removeProjectAccess": {
+        "project": "f270b245cb11498ca4031deb7e141cfa"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-access-delete-request.xml b/api-ref/v2/source/samples/volume-type-access-delete-request.xml
new file mode 100644
index 00000000000..dcde1b2e4e7
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-access-delete-request.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<removeProjectAccess id="bb4f8f7f-fc38-4807-bd78-5710792205e1">
+  <project>"f270b245cb11498ca4031deb7e141cfa"</project>
+</removeProjectAccess>
diff --git a/api-ref/v2/source/samples/volume-type-access-list-response.json b/api-ref/v2/source/samples/volume-type-access-list-response.json
new file mode 100644
index 00000000000..afcffb0810b
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-access-list-response.json
@@ -0,0 +1,6 @@
+{
+    "volume_type_access": {
+        "volume_type_id": "3c67e124-39ad-4ace-a507-8bb7bf510c26",
+        "project_id": "f270b245cb11498ca4031deb7e141cfa"
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-create-request.json b/api-ref/v2/source/samples/volume-type-create-request.json
new file mode 100644
index 00000000000..13d86bfdf5b
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-create-request.json
@@ -0,0 +1,10 @@
+{
+    "volume_type": {
+        "name": "vol-type-001",
+        "description": "volume type 0001",
+        "os-volume-type-access:is_public": true,
+        "extra_specs": {
+            "capabilities": "gpu"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-create-request.xml b/api-ref/v2/source/samples/volume-type-create-request.xml
new file mode 100644
index 00000000000..817e446d768
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-create-request.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_type xmlns="http://docs.openstack.org/volume/api/v1" xmlns:os-volume-type-access="http://docs.openstack.org/openstack-block-storage/2.0/ext/os-volume-type-access/api/v2.0" name="vol-type-001" description="volume type 0001" os-volume-type-access:is_public="true">
+        <extra_specs>
+            <extra_spec key="capabilities">gpu</extra_spec>
+        </extra_specs>
+</volume_type>
diff --git a/api-ref/v2/source/samples/volume-type-show-request.json b/api-ref/v2/source/samples/volume-type-show-request.json
new file mode 100644
index 00000000000..a91f2e94d63
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-show-request.json
@@ -0,0 +1,9 @@
+{
+    "volume_type": {
+        "id": "289da7f8-6440-407c-9fb4-7db01ec49164",
+        "name": "vol-type-001",
+        "extra_specs": {
+            "capabilities": "gpu"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-show-request.xml b/api-ref/v2/source/samples/volume-type-show-request.xml
new file mode 100644
index 00000000000..1c4291d08f1
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-show-request.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_type xmlns="http://docs.openstack.org/volume/api/v1"
+             id="289da7f8-6440-407c-9fb4-7db01ec49164"
+             name="vol-type-001">
+    <extra_specs>
+        <extra_spec key="capabilities">gpu</extra_spec>
+    </extra_specs>
+</volume_type>
diff --git a/api-ref/v2/source/samples/volume-type-show-response.json b/api-ref/v2/source/samples/volume-type-show-response.json
new file mode 100644
index 00000000000..7a0420f201a
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-show-response.json
@@ -0,0 +1,11 @@
+{
+    "volume_type": {
+        "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
+        "name": "vol-type-001",
+        "description": "volume type 001",
+        "is_public": "true",
+        "extra_specs": {
+            "capabilities": "gpu"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-show-response.xml b/api-ref/v2/source/samples/volume-type-show-response.xml
new file mode 100644
index 00000000000..f5935c74a1b
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-show-response.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_type
+    xmlns="http://docs.openstack.org/openstack-block-storage/2.0/content"
+    id="6685584b-1eac-4da6-b5c3-555430cf68ff" name="vol-type-001"
+    description="volume type 001" is_public="true">
+    <extra_specs>
+        <extra_spec key="capabilities">gpu</extra_spec>
+    </extra_specs>
+</volume_type>
diff --git a/api-ref/v2/source/samples/volume-type-update-request.json b/api-ref/v2/source/samples/volume-type-update-request.json
new file mode 100644
index 00000000000..8bdc5befb3b
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-update-request.json
@@ -0,0 +1,10 @@
+{
+    "volume_type": {
+        "name": "vol-type-001",
+        "description": "volume type 0001",
+        "is_public": true,
+        "extra_specs": {
+            "capabilities": "gpu"
+        }
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-type-update-request.xml b/api-ref/v2/source/samples/volume-type-update-request.xml
new file mode 100644
index 00000000000..dddddf66920
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-type-update-request.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_type xmlns="http://docs.openstack.org/volume/api/v1" xmlns:os-volume-type-access="http://docs.openstack.org/openstack-block-storage/2.0/ext/os-volume-type-access/api/v2.0" name="vol-type-001" description="volume type 0001" is_public="true">
+        <extra_specs>
+            <extra_spec key="capabilities">gpu</extra_spec>
+        </extra_specs>
+</volume_type>
diff --git a/api-ref/v2/source/samples/volume-types-list-response.json b/api-ref/v2/source/samples/volume-types-list-response.json
new file mode 100644
index 00000000000..1d72f923e23
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-types-list-response.json
@@ -0,0 +1,16 @@
+{
+    "volume_types": [
+        {
+            "extra_specs": {
+                "capabilities": "gpu"
+            },
+            "id": "6685584b-1eac-4da6-b5c3-555430cf68ff",
+            "name": "SSD"
+        },
+        {
+            "extra_specs": {},
+            "id": "8eb69a46-df97-4e41-9586-9a40a7533803",
+            "name": "SATA"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/volume-types-list-response.xml b/api-ref/v2/source/samples/volume-types-list-response.xml
new file mode 100644
index 00000000000..e227787da51
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-types-list-response.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<volume_types
+    xmlns="http://docs.openstack.org/openstack-block-storage/2.0/content">
+    <volume_type id="6685584b-1eac-4da6-b5c3-555430cf68ff" name="SSD">
+        <extra_specs>
+            <extra_spec key="capabilities">gpu</extra_spec>
+        </extra_specs>
+    </volume_type>
+    <volume_type id="8eb69a46-df97-4e41-9586-9a40a7533803" name="SATA"
+    />
+</volume_types>
diff --git a/api-ref/v2/source/samples/volume-unmanage-request.json b/api-ref/v2/source/samples/volume-unmanage-request.json
new file mode 100644
index 00000000000..a75950bb9e0
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-unmanage-request.json
@@ -0,0 +1,3 @@
+{
+    "os-unmanage": {}
+}
diff --git a/api-ref/v2/source/samples/volume-update-request.json b/api-ref/v2/source/samples/volume-update-request.json
new file mode 100644
index 00000000000..8e52dacb6d4
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-update-request.json
@@ -0,0 +1,6 @@
+{
+    "volume": {
+        "name": "vol-003",
+        "description": "This is yet, another volume."
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-update-request.xml b/api-ref/v2/source/samples/volume-update-request.xml
new file mode 100644
index 00000000000..d03ed193032
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-update-request.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<snapshot
+    xmlns="http://docs.openstack.org/openstack-block-storage/2.0/content"
+    name="vol-003" description="This is yet, another volume."/>
diff --git a/api-ref/v2/source/samples/volume-update-response.json b/api-ref/v2/source/samples/volume-update-response.json
new file mode 100644
index 00000000000..f87bcd2ce4f
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-update-response.json
@@ -0,0 +1,36 @@
+{
+    "volume": {
+        "status": "available",
+        "migration_status": null,
+        "user_id": "0eea4eabcf184061a3b6db1e0daaf010",
+        "attachments": [],
+        "links": [
+            {
+                "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
+                "rel": "self"
+            },
+            {
+                "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
+                "rel": "bookmark"
+            }
+        ],
+        "availability_zone": "nova",
+        "bootable": "false",
+        "encrypted": false,
+        "created_at": "2015-11-29T03:01:44.000000",
+        "description": "This is yet, another volume.",
+        "updated_at": null,
+        "volume_type": "lvmdriver-1",
+        "name": "vol-003",
+        "replication_status": "disabled",
+        "consistencygroup_id": null,
+        "source_volid": null,
+        "snapshot_id": null,
+        "multiattach": false,
+        "metadata": {
+            "contents": "not junk"
+        },
+        "id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+        "size": 1
+    }
+}
diff --git a/api-ref/v2/source/samples/volume-update-response.xml b/api-ref/v2/source/samples/volume-update-response.xml
new file mode 100644
index 00000000000..0524361acba
--- /dev/null
+++ b/api-ref/v2/source/samples/volume-update-response.xml
@@ -0,0 +1,13 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<volume xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/api/openstack-block-storage/2.0/content"
+    status="available" name="vol-003" availability_zone="nova"
+    created_at="2013-02-25 02:40:21"
+    description="This is yet, another volume." volume_type="None"
+    source_volid="None" snapshot_id="None"
+    id="5aa119a8-d25b-45a7-8d1b-88e127885635" size="1">
+    <attachments/>
+    <metadata>
+        <meta key="contents">not junk</meta>
+    </metadata>
+</volume>
diff --git a/api-ref/v2/source/samples/volumes-list-detailed-response.json b/api-ref/v2/source/samples/volumes-list-detailed-response.json
new file mode 100644
index 00000000000..e91029c14da
--- /dev/null
+++ b/api-ref/v2/source/samples/volumes-list-detailed-response.json
@@ -0,0 +1,102 @@
+{
+    "volumes": [
+        {
+            "migration_status": null,
+            "attachments": [
+                {
+                    "server_id": "f4fda93b-06e0-4743-8117-bc8bcecd651b",
+                    "attachment_id": "3b4db356-253d-4fab-bfa0-e3626c0b8405",
+                    "host_name": null,
+                    "volume_id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+                    "device": "/dev/vdb",
+                    "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38"
+                }
+            ],
+            "links": [
+                {
+                    "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+                    "rel": "bookmark"
+                }
+            ],
+            "availability_zone": "nova",
+            "os-vol-host-attr:host": "difleming@lvmdriver-1#lvmdriver-1",
+            "encrypted": false,
+            "os-volume-replication:extended_status": null,
+            "replication_status": "disabled",
+            "snapshot_id": null,
+            "id": "6edbc2f4-1507-44f8-ac0d-eed1d2608d38",
+            "size": 2,
+            "user_id": "32779452fcd34ae1a53a797ac8a1e064",
+            "os-vol-tenant-attr:tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978",
+            "os-vol-mig-status-attr:migstat": null,
+            "metadata": {
+                "readonly": false,
+                "attached_mode": "rw"
+            },
+            "status": "in-use",
+            "description": null,
+            "multiattach": true,
+            "os-volume-replication:driver_data": null,
+            "source_volid": null,
+            "consistencygroup_id": null,
+            "os-vol-mig-status-attr:name_id": null,
+            "name": "test-volume-attachments",
+            "bootable": "false",
+            "created_at": "2015-11-29T03:01:44.000000",
+            "volume_type": "lvmdriver-1"
+        },
+        {
+            "migration_status": null,
+            "attachments": [],
+            "links": [
+                {
+                    "href": "http://23.253.248.171:8776/v2/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/173f7b48-c4c1-4e70-9acc-086b39073506",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://23.253.248.171:8776/bab7d5c60cd041a0a36f7c4b6e1dd978/volumes/173f7b48-c4c1-4e70-9acc-086b39073506",
+                    "rel": "bookmark"
+                }
+            ],
+            "availability_zone": "nova",
+            "os-vol-host-attr:host": "difleming@lvmdriver-1#lvmdriver-1",
+            "encrypted": false,
+            "os-volume-replication:extended_status": null,
+            "replication_status": "disabled",
+            "snapshot_id": null,
+            "id": "173f7b48-c4c1-4e70-9acc-086b39073506",
+            "size": 1,
+            "user_id": "32779452fcd34ae1a53a797ac8a1e064",
+            "os-vol-tenant-attr:tenant_id": "bab7d5c60cd041a0a36f7c4b6e1dd978",
+            "os-vol-mig-status-attr:migstat": null,
+            "metadata": {},
+            "status": "available",
+            "volume_image_metadata": {
+                "kernel_id": "8a55f5f1-78f7-4477-8168-977d8519342c",
+                "checksum": "eb9139e4942121f22bbc2afc0400b2a4",
+                "min_ram": "0",
+                "ramdisk_id": "5f6bdf8a-92db-4988-865b-60bdd808d9ef",
+                "disk_format": "ami",
+                "image_name": "cirros-0.3.4-x86_64-uec",
+                "image_id": "b48c53e1-9a96-4a5a-a630-2e74ec54ddcc",
+                "container_format": "ami",
+                "min_disk": "0",
+                "size": "25165824"
+            },
+            "description": "",
+            "multiattach": false,
+            "os-volume-replication:driver_data": null,
+            "source_volid": null,
+            "consistencygroup_id": null,
+            "os-vol-mig-status-attr:name_id": null,
+            "name": "test-volume",
+            "bootable": "true",
+            "created_at": "2015-11-29T02:25:18.000000",
+            "volume_type": "lvmdriver-1"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/volumes-list-detailed-response.xml b/api-ref/v2/source/samples/volumes-list-detailed-response.xml
new file mode 100644
index 00000000000..36bbffd0ab8
--- /dev/null
+++ b/api-ref/v2/source/samples/volumes-list-detailed-response.xml
@@ -0,0 +1,31 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<volumes
+    xmlns:os-vol-image-meta="http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Image_Metadata.html"
+    xmlns:os-vol-tenant-attr="http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Tenant_Attribute.html"
+    xmlns:os-vol-host-attr="http://docs.openstack.org/openstack-block-storage/2.0/content/Volume_Host_Attribute.html"
+    xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/api/openstack-block-storage/2.0/content">
+    <volume status="available" name="vol-004" availability_zone="nova"
+        created_at="2013-02-25 06:36:28" description="Another volume."
+        volume_type="None" source_volid="None" snapshot_id="None"
+        id="45baf976-c20a-4894-a7c3-c94b7376bf55" size="1"
+        os-vol-tenant-attr:tenant_id="0c2eba2c5af04d3f9e9d0d410b371fde"
+        os-vol-host-attr:host="ip-10-168-107-25">
+        <attachments/>
+        <metadata>
+            <meta key="contents">junk</meta>
+        </metadata>
+    </volume>
+    <volume status="available" name="vol-003" availability_zone="nova"
+        created_at="2013-02-25 02:40:21"
+        description="This is yet, another volume." volume_type="None"
+        source_volid="None" snapshot_id="None"
+        id="5aa119a8-d25b-45a7-8d1b-88e127885635" size="1"
+        os-vol-tenant-attr:tenant_id="0c2eba2c5af04d3f9e9d0d410b371fde"
+        os-vol-host-attr:host="ip-10-168-107-25">
+        <attachments/>
+        <metadata>
+            <meta key="contents">not junk</meta>
+        </metadata>
+    </volume>
+</volumes>
diff --git a/api-ref/v2/source/samples/volumes-list-response.json b/api-ref/v2/source/samples/volumes-list-response.json
new file mode 100644
index 00000000000..b3c7cc05164
--- /dev/null
+++ b/api-ref/v2/source/samples/volumes-list-response.json
@@ -0,0 +1,32 @@
+{
+    "volumes": [
+        {
+            "id": "45baf976-c20a-4894-a7c3-c94b7376bf55",
+            "links": [
+                {
+                    "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/45baf976-c20a-4894-a7c3-c94b7376bf55",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/45baf976-c20a-4894-a7c3-c94b7376bf55",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "vol-004"
+        },
+        {
+            "id": "5aa119a8-d25b-45a7-8d1b-88e127885635",
+            "links": [
+                {
+                    "href": "http://localhost:8776/v2/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
+                    "rel": "self"
+                },
+                {
+                    "href": "http://localhost:8776/0c2eba2c5af04d3f9e9d0d410b371fde/volumes/5aa119a8-d25b-45a7-8d1b-88e127885635",
+                    "rel": "bookmark"
+                }
+            ],
+            "name": "vol-003"
+        }
+    ]
+}
diff --git a/api-ref/v2/source/samples/volumes-list-response.xml b/api-ref/v2/source/samples/volumes-list-response.xml
new file mode 100644
index 00000000000..024608615ad
--- /dev/null
+++ b/api-ref/v2/source/samples/volumes-list-response.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<volumes xmlns:atom="http://www.w3.org/2005/Atom"
+    xmlns="http://docs.openstack.org/api/openstack-block-storage/2.0/content">
+    <volume name="vol-004" id="45baf976-c20a-4894-a7c3-c94b7376bf55">
+        <attachments/>
+        <metadata/>
+    </volume>
+    <volume name="vol-003" id="5aa119a8-d25b-45a7-8d1b-88e127885635">
+        <attachments/>
+        <metadata/>
+    </volume>
+</volumes>
diff --git a/api-ref/v2/source/volume-manage.inc b/api-ref/v2/source/volume-manage.inc
new file mode 100644
index 00000000000..42151651b15
--- /dev/null
+++ b/api-ref/v2/source/volume-manage.inc
@@ -0,0 +1,50 @@
+.. -*- rst -*-
+
+==========================================
+Volume manage extension (os-volume-manage)
+==========================================
+
+Creates volumes by using existing storage instead of allocating new
+storage.
+
+
+Manage existing volume
+======================
+
+.. rest_method::  POST /v2/{tenant_id}/os-volume-manage
+
+Creates a Block Storage volume by using existing storage rather than allocating new storage.
+
+The caller must specify a reference to an existing storage volume
+in the ref parameter in the request. Although each storage driver
+might interpret this reference differently, the driver should
+accept a reference structure that contains either a source-volume-
+id or source-volume-name element, if possible.
+
+The API chooses the size of the volume by rounding up the size of
+the existing storage volume to the next gibibyte (GiB).
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - description: description
+   - availability_zone: availability_zone
+   - bootable: bootable
+   - volume_type: volume_type
+   - name: name
+   - volume: volume
+   - host: host
+   - ref: ref
+   - metadata: metadata
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-manage-request.json
+   :language: javascript
diff --git a/api-ref/v2/source/volume-type-access.inc b/api-ref/v2/source/volume-type-access.inc
new file mode 100644
index 00000000000..b92b5e790fa
--- /dev/null
+++ b/api-ref/v2/source/volume-type-access.inc
@@ -0,0 +1,103 @@
+.. -*- rst -*-
+
+============================
+Volume type access (volumes)
+============================
+
+Private volume type access to project.
+
+By default, volumes types are public. To create a private volume
+type, set the ``is_public`` boolean field to ``false`` at volume
+type creation time. To control access to a private volume type,
+user needs to add a project to or remove a project from the volume
+type. Private volume types without projects are only accessible by
+users with the administrative role and context.
+
+
+Add private volume type access
+==============================
+
+.. rest_method::  POST /v2/{tenant_id}/types/{volume_type}/action
+
+Adds private volume type access to a project.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - project: project
+   - tenant_id: tenant_id
+   - volume_type: volume_type
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-access-add-request.json
+   :language: javascript
+
+
+Remove private volume type access
+=================================
+
+.. rest_method::  POST /v2/{tenant_id}/types/{volume_type}/action
+
+Removes private volume type access from a project.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - project: project
+   - tenant_id: tenant_id
+   - volume_type: volume_type
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-access-delete-request.json
+   :language: javascript
+
+
+List private volume type access details
+=======================================
+
+.. rest_method::  GET /v2/{tenant_id}/types/{volume_type}/os-volume-type-access
+
+Lists project IDs that have access to private volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_type: volume_type
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - project_id: project_id
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-access-list-response.json
+   :language: javascript
diff --git a/api-ref/v2/source/volumes-v2-extensions.inc b/api-ref/v2/source/volumes-v2-extensions.inc
new file mode 100644
index 00000000000..6d647d79f5c
--- /dev/null
+++ b/api-ref/v2/source/volumes-v2-extensions.inc
@@ -0,0 +1,52 @@
+.. -*- rst -*-
+
+===========================
+API extensions (extensions)
+===========================
+
+
+
+
+List API extensions
+===================
+
+.. rest_method::  GET /v2/{tenant_id}/extensions
+
+Lists Block Storage API extensions.
+
+
+Normal response codes: 200
+Error response codes:300,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - updated: updated
+   - description: description
+   - links: links
+   - namespace: namespace
+   - alias: alias
+   - name: name
+
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/extensions-list-response.json
+   :language: javascript
+
+
+
diff --git a/api-ref/v2/source/volumes-v2-snapshots.inc b/api-ref/v2/source/volumes-v2-snapshots.inc
new file mode 100644
index 00000000000..099394c7fe8
--- /dev/null
+++ b/api-ref/v2/source/volumes-v2-snapshots.inc
@@ -0,0 +1,359 @@
+.. -*- rst -*-
+
+============================
+Volume snapshots (snapshots)
+============================
+
+A snapshot is a point-in-time copy of the data that a volume
+contains.
+
+When you create, list, or delete snapshots, these status values are
+possible:
+
+**Snapshot statuses**
+
++----------------+-------------------------------------+
+| Status         | Description                         |
++----------------+-------------------------------------+
+| creating       | The snapshot is being created.      |
++----------------+-------------------------------------+
+| available      | The snapshot is ready to use.       |
++----------------+-------------------------------------+
+| deleting       | The snapshot is being deleted.      |
++----------------+-------------------------------------+
+| error          | A snapshot creation error occurred. |
++----------------+-------------------------------------+
+| error_deleting | A snapshot deletion error occurred. |
++----------------+-------------------------------------+
+
+
+List snapshots with details
+===========================
+
+.. rest_method::  GET /v2/{tenant_id}/snapshots/detail
+
+Lists all Block Storage snapshots, with details, that the tenant can access.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - os-extended-snapshot-attributes:progress: os-extended-snapshot-attributes:progress
+   - description: description
+   - created_at: created_at
+   - name: name
+   - volume_id: volume_id
+   - os-extended-snapshot-attributes:project_id: os-extended-snapshot-attributes:project_id
+   - size: size
+   - id: id
+   - metadata: metadata
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshots-list-detailed-response.json
+   :language: javascript
+
+
+Create snapshot
+===============
+
+.. rest_method::  POST /v2/{tenant_id}/snapshots
+
+Creates a volume snapshot, which is a point-in-time, complete copy of a volume. You can create a volume from a snapshot.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - snapshot: snapshot
+   - volume_id: volume_id
+   - force: force
+   - description: description
+   - name: name
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/snapshot-create-request.json
+   :language: javascript
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - created_at: created_at
+   - name: name
+   - snapshot: snapshot
+   - volume_id: volume_id
+   - metadata: metadata
+   - id: id
+   - size: size
+
+
+List snapshots
+==============
+
+.. rest_method::  GET /v2/{tenant_id}/snapshots
+
+Lists all Block Storage snapshots, with summary information, that the tenant can access.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - created_at: created_at
+   - name: name
+   - volume_id: volume_id
+   - metadata: metadata
+   - id: id
+   - size: size
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshots-list-response.json
+   :language: javascript
+
+
+Show snapshot metadata
+======================
+
+.. rest_method::  GET /v2/{tenant_id}/snapshots/{snapshot_id}/metadata
+
+Shows metadata for a snapshot.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - os-extended-snapshot-attributes:progress: os-extended-snapshot-attributes:progress
+   - description: description
+   - created_at: created_at
+   - name: name
+   - snapshot: snapshot
+   - volume_id: volume_id
+   - os-extended-snapshot-attributes:project_id: os-extended-snapshot-attributes:project_id
+   - size: size
+   - id: id
+   - metadata: metadata
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-metadata-show-response.json
+   :language: javascript
+
+
+Update snapshot metadata
+========================
+
+.. rest_method::  PUT /v2/{tenant_id}/snapshots/{snapshot_id}/metadata
+
+Updates metadata for a snapshot.
+
+Replaces metadata items that match keys. Does not modify items that
+are not in the request.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/snapshot-metadata-update-request.json
+   :language: javascript
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-metadata-update-response.json
+   :language: javascript
+
+
+Show snapshot details
+=====================
+
+.. rest_method::  GET /v2/{tenant_id}/snapshots/{snapshot_id}
+
+Shows details for a snapshot.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - os-extended-snapshot-attributes:progress: os-extended-snapshot-attributes:progress
+   - description: description
+   - created_at: created_at
+   - name: name
+   - snapshot: snapshot
+   - volume_id: volume_id
+   - os-extended-snapshot-attributes:project_id: os-extended-snapshot-attributes:project_id
+   - size: size
+   - id: id
+   - metadata: metadata
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-show-response.json
+   :language: javascript
+
+
+Update snapshot
+===============
+
+.. rest_method::  PUT /v2/{tenant_id}/snapshots/{snapshot_id}
+
+Updates a snapshot.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - snapshot: snapshot
+   - description: description
+   - name: name
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/snapshot-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - description: description
+   - created_at: created_at
+   - name: name
+   - snapshot: snapshot
+   - volume_id: volume_id
+   - metadata: metadata
+   - id: id
+   - size: size
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/snapshot-update-response.json
+   :language: javascript
+
+
+Delete snapshot
+===============
+
+.. rest_method::  DELETE /v2/{tenant_id}/snapshots/{snapshot_id}
+
+Deletes a snapshot.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - snapshot_id: snapshot_id
diff --git a/api-ref/v2/source/volumes-v2-types.inc b/api-ref/v2/source/volumes-v2-types.inc
new file mode 100644
index 00000000000..8a0d97d48d5
--- /dev/null
+++ b/api-ref/v2/source/volumes-v2-types.inc
@@ -0,0 +1,273 @@
+.. -*- rst -*-
+
+====================
+Volume types (types)
+====================
+
+
+Update volume type
+==================
+
+.. rest_method::  PUT /v2/{tenant_id}/types/{volume_type_id}
+
+Updates a volume type.
+
+To create an environment with multiple-storage back ends, you must
+specify a volume type. The API spawns Block Storage volume back
+ends as children to ``cinder-volume``, and keys them from a unique
+queue. The API names the back ends ``cinder-volume.HOST.BACKEND``.
+For example, ``cinder-volume.ubuntu.lvmdriver``. When you create a
+volume, the scheduler chooses an appropriate back end for the
+volume type to handle the request.
+
+For information about how to use volume types to create multiple-
+storage back ends, see `Configure multiple-storage back ends
+<http://docs.openstack.org/admin-
+guide/blockstorage_multi_backend.html>`_.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_type: volume_type
+   - volume_type_id: volume_type_id
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - is_public: is_public
+   - extra_specs: extra_specs
+   - description: description
+   - volume_type: volume_type
+   - name: name
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Update extra specs for a volume type
+====================================
+
+.. rest_method::  PUT /v2/{tenant_id}/types/{volume_type_id}
+
+Updates the extra specifications that are assigned to a volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - extra_specs: extra_specs
+   - volume_type: volume_type
+   - volume_type_id: volume_type_id
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - is_public: is_public
+   - extra_specs: extra_specs
+   - description: description
+   - volume_type: volume_type
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Show volume type details
+========================
+
+.. rest_method::  GET /v2/{tenant_id}/types/{volume_type_id}
+
+Shows details for a volume type.
+
+
+Normal response codes: 200
+Error response codes:
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_type_id: volume_type_id
+   - tenant_id: tenant_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - is_public: is_public
+   - extra_specs: extra_specs
+   - description: description
+   - volume_type: volume_type
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
+
+Delete volume type
+==================
+
+.. rest_method::  DELETE /v2/{tenant_id}/types/{volume_type_id}
+
+Deletes a volume type.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_type_id: volume_type_id
+   - tenant_id: tenant_id
+
+
+List volume types
+=================
+
+.. rest_method::  GET /v2/{tenant_id}/types
+
+Lists volume types.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort_key: sort_key
+   - sort_dir: sort_dir
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_types: volume_types
+   - extra_specs: extra_specs
+   - name: name
+   - volume_type: volume_type
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-types-list-response.json
+   :language: javascript
+
+
+Create volume type
+==================
+
+.. rest_method::  POST /v2/{tenant_id}/types
+
+Creates a volume type.
+
+To create an environment with multiple-storage back ends, you must
+specify a volume type. Block Storage volume back ends are spawned
+as children to ``cinder-volume``, and they are keyed from a unique
+queue. They are named ``cinder-volume.HOST.BACKEND``. For example,
+``cinder-volume.ubuntu.lvmdriver``. When a volume is created, the
+scheduler chooses an appropriate back end to handle the request
+based on the volume type.
+
+For information about how to use volume types to create multiple-
+storage back ends, see `Configure multiple-storage back ends
+<http://docs.openstack.org/admin-
+guide/blockstorage_multi_backend.html>`_.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume_type: volume_type
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-type-create-request.json
+   :language: javascript
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - is_public: is_public
+   - extra_specs: extra_specs
+   - description: description
+   - volume_type: volume_type
+   - name: name
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-type-show-response.json
+   :language: javascript
+
diff --git a/api-ref/v2/source/volumes-v2-versions.inc b/api-ref/v2/source/volumes-v2-versions.inc
new file mode 100644
index 00000000000..9f8ba539123
--- /dev/null
+++ b/api-ref/v2/source/volumes-v2-versions.inc
@@ -0,0 +1,67 @@
+.. -*- rst -*-
+
+============
+API versions
+============
+
+
+
+
+List API versions
+=================
+
+.. rest_method::  GET /
+
+Lists information for all Block Storage API versions.
+
+
+Normal response codes: 200
+Error response codes:300,
+
+
+Request
+-------
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/versions-response.json
+   :language: javascript
+
+
+
+
+Show API v2 details
+===================
+
+.. rest_method::  GET /v2
+
+Shows details for Block Storage API v2.
+
+
+Normal response codes: 200
+Error response codes:203,
+
+
+Request
+-------
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - location: location
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/version-v2-show-response.json
+   :language: javascript
+
+
diff --git a/api-ref/v2/source/volumes-v2-volumes-actions.inc b/api-ref/v2/source/volumes-v2-volumes-actions.inc
new file mode 100644
index 00000000000..f0b25ae8258
--- /dev/null
+++ b/api-ref/v2/source/volumes-v2-volumes-actions.inc
@@ -0,0 +1,333 @@
+.. -*- rst -*-
+
+================================
+Volume actions (volumes, action)
+================================
+
+Extends the size of, resets statuses for, sets image metadata for,
+and removes image metadata from a volume. Attaches a volume to a
+server, detaches a volume from a server, and removes a volume from
+Block Storage management without actually removing the back-end
+storage object associated with it.
+
+
+Extend volume size
+==================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Extends the size of a volume to a requested size, in gibibytes (GiB). Specify the ``os-extend`` action in the request body.
+
+Preconditions
+
+- Volume status must be ``available``.
+
+- Sufficient amount of storage must exist to extend the volume.
+
+- The user quota must have sufficient volume storage.
+
+Troubleshooting
+
+- An ``error_extending`` volume status indicates that the request
+  failed. Ensure that you meet the preconditions and retry the
+  request. If the request fails again, investigate the storage back
+  end.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-extend: os-extend
+   - new_size: new_size
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-extend-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Reset volume statuses
+=====================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Resets the status, attach status, and migration status for a volume. Specify the ``os-reset_status`` action in the request body.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - status: status
+   - migration_status: migration_status
+   - os-reset_status: os-reset_status
+   - attach_status: attach_status
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-status-reset-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Set image metadata for volume
+=============================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Sets the image metadata for a volume. Specify the ``os-set_image_metadata`` action in the request body.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-set_image_metadata: os-set_image_metadata
+   - metadata: metadata
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-image-metadata-set-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Remove image metadata from volume
+=================================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Removes image metadata, by key, from a volume. Specify the ``os-unset_image_metadata`` action in the request body and the ``key`` for the metadata key and value pair that you want to remove.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-unset_image_metadata: os-unset_image_metadata
+   - key: key
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-image-metadata-unset-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Attach volume to server
+=======================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Attaches a volume to a server. Specify the ``os-attach`` action in the request body.
+
+Preconditions
+
+- Volume status must be ``available``.
+
+- You should set ``instance_uuid`` or ``host_name``.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - instance_uuid: instance_uuid
+   - mountpoint: mountpoint
+   - host_name: host_name
+   - os-attach: os-attach
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-attach-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Unmanage volume
+===============
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Removes a volume from Block Storage management without removing the back-end storage object that is associated with it. Specify the ``os-unmanage`` action in the request body.
+
+Preconditions
+
+- Volume status must be ``available``.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-unmanage: os-unmanage
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-unmanage-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Force detach volume
+===================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Forces a volume to detach. Specify the ``os-force_detach`` action in the request body.
+
+Rolls back an unsuccessful detach operation after you disconnect
+the volume.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - connector: connector
+   - attachment_id: attachment_id
+   - os-force_detach: os-force_detach
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-force-detach-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Promote replicated volume
+=========================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Promotes a replicated volume. Specify the ``os-promote-replica`` action in the request body.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-promote-replica: os-promote-replica
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-replica-promote-request.json
+   :language: javascript
+
+
+
+
+
+
+
+Reenable volume replication
+===========================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/action
+
+Re-enables replication of a volume. Specify the ``volume-replica-reenable`` action in the request body.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - os-reenable-replica: os-reenable-replica
+   - size: size
+   - os-volume-replication:driver_data: os-volume-replication:driver_data
+   - os-volume-replication:extended_status: os-volume-replication:extended_status
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-replica-reenable-request.json
+   :language: javascript
+
+
+
+
+
+
diff --git a/api-ref/v2/source/volumes-v2-volumes.inc b/api-ref/v2/source/volumes-v2-volumes.inc
new file mode 100644
index 00000000000..cb8da961d1c
--- /dev/null
+++ b/api-ref/v2/source/volumes-v2-volumes.inc
@@ -0,0 +1,570 @@
+.. -*- rst -*-
+
+=================
+Volumes (volumes)
+=================
+
+A volume is a detachable block storage device similar to a USB hard
+drive. You can attach a volume to one instance at a time.
+
+The ``snapshot_id`` and ``source_volid`` parameters specify the ID
+of the snapshot or volume from which this volume originates. If the
+volume was not created from a snapshot or source volume, these
+values are null.
+
+When you create, list, update, or delete volumes, the possible
+status values are:
+
+**Volume statuses**
+
++------------------+--------------------------------------------------------+
+| Status           | Description                                            |
++------------------+--------------------------------------------------------+
+| creating         | The volume is being created.                           |
++------------------+--------------------------------------------------------+
+| available        | The volume is ready to attach to an instance.          |
++------------------+--------------------------------------------------------+
+| attaching        | The volume is attaching to an instance.                |
++------------------+--------------------------------------------------------+
+| in-use           | The volume is attached to an instance.                 |
++------------------+--------------------------------------------------------+
+| deleting         | The volume is being deleted.                           |
++------------------+--------------------------------------------------------+
+| error            | A volume creation error occurred.                      |
++------------------+--------------------------------------------------------+
+| error_deleting   | A volume deletion error occurred.                      |
++------------------+--------------------------------------------------------+
+| backing-up       | The volume is being backed up.                         |
++------------------+--------------------------------------------------------+
+| restoring-backup | A backup is being restored to the volume.              |
++------------------+--------------------------------------------------------+
+| error_restoring  | A backup restoration error occurred.                   |
++------------------+--------------------------------------------------------+
+| error_extending  | An error occurred while attempting to extend a volume. |
++------------------+--------------------------------------------------------+
+
+
+List volumes with details
+=========================
+
+.. rest_method::  GET /v2/{tenant_id}/volumes/detail
+
+Lists all Block Storage volumes, with details, that the tenant can access.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort: sort
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - migration_status: migration_status
+   - attachments: attachments
+   - links: links
+   - availability_zone: availability_zone
+   - os-vol-host-attr:host: os-vol-host-attr:host
+   - encrypted: encrypted
+   - updated_at: updated_at
+   - os-volume-replication:extended_status: os-volume-replication:extended_status
+   - replication_status: replication_status
+   - snapshot_id: snapshot_id
+   - id: id
+   - size: size
+   - user_id: user_id
+   - os-vol-tenant-attr:tenant_id: os-vol-tenant-attr:tenant_id
+   - os-vol-mig-status-attr:migstat: os-vol-mig-status-attr:migstat
+   - metadata: metadata
+   - status: status
+   - description: description
+   - multiattach: multiattach
+   - source_volid: source_volid
+   - consistencygroup_id: consistencygroup_id
+   - os-vol-mig-status-attr:name_id: os-vol-mig-status-attr:name_id
+   - name: name
+   - bootable: bootable
+   - created_at: created_at
+   - os-volume-replication:driver_data: os-volume-replication:driver_data
+   - volumes: volumes
+   - volume_type: volume_type
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volumes-list-detailed-response.json
+   :language: javascript
+
+
+
+
+Create volume
+=============
+
+.. rest_method::  POST /v2/{tenant_id}/volumes
+
+Creates a volume.
+
+To create a bootable volume, include the UUID of the image from
+which you want to create the volume in the ``imageRef`` attribute
+in the request body.
+
+Preconditions
+
+- You must have enough volume storage quota remaining to create a
+  volume of size requested.
+
+Asynchronous Postconditions
+
+- With correct permissions, you can see the volume status as
+  ``available`` through API calls.
+
+- With correct access, you can see the created volume in the storage
+  system that OpenStack Block Storage manages.
+
+Troubleshooting
+
+- If volume status remains ``creating`` or shows another error
+  status, the request failed. Ensure you meet the preconditions
+  then investigate the storage back end.
+
+- Volume is not created in the storage system that OpenStack Block
+  Storage manages.
+
+- The storage node needs enough free storage space to match the size
+  of the volume creation request.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - size: size
+   - description: description
+   - imageRef: imageRef
+   - multiattach: multiattach
+   - availability_zone: availability_zone
+   - source_volid: source_volid
+   - name: name
+   - volume: volume
+   - consistencygroup_id: consistencygroup_id
+   - volume_type: volume_type
+   - snapshot_id: snapshot_id
+   - scheduler_hints: scheduler_hints
+   - source_replica: source_replica
+   - metadata: metadata
+   - tenant_id: tenant_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-create-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - migration_status: migration_status
+   - attachments: attachments
+   - links: links
+   - availability_zone: availability_zone
+   - encrypted: encrypted
+   - updated_at: updated_at
+   - replication_status: replication_status
+   - snapshot_id: snapshot_id
+   - id: id
+   - size: size
+   - user_id: user_id
+   - metadata: metadata
+   - status: status
+   - description: description
+   - multiattach: multiattach
+   - source_volid: source_volid
+   - volume: volume
+   - consistencygroup_id: consistencygroup_id
+   - name: name
+   - bootable: bootable
+   - created_at: created_at
+   - volume_type: volume_type
+
+
+
+
+
+List volumes
+============
+
+.. rest_method::  GET /v2/{tenant_id}/volumes
+
+Lists summary information for all Block Storage volumes that the tenant can access.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - sort: sort
+   - limit: limit
+   - marker: marker
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - volumes: volumes
+   - id: id
+   - links: links
+   - name: name
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volumes-list-response.json
+   :language: javascript
+
+
+
+
+Show volume details
+===================
+
+.. rest_method::  GET /v2/{tenant_id}/volumes/{volume_id}
+
+Shows details for a volume.
+
+Preconditions
+
+- The volume must exist.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - migration_status: migration_status
+   - attachments: attachments
+   - links: links
+   - availability_zone: availability_zone
+   - os-vol-host-attr:host: os-vol-host-attr:host
+   - encrypted: encrypted
+   - updated_at: updated_at
+   - os-volume-replication:extended_status: os-volume-replication:extended_status
+   - replication_status: replication_status
+   - snapshot_id: snapshot_id
+   - id: id
+   - size: size
+   - user_id: user_id
+   - os-vol-tenant-attr:tenant_id: os-vol-tenant-attr:tenant_id
+   - os-vol-mig-status-attr:migstat: os-vol-mig-status-attr:migstat
+   - metadata: metadata
+   - status: status
+   - description: description
+   - multiattach: multiattach
+   - source_volid: source_volid
+   - volume: volume
+   - consistencygroup_id: consistencygroup_id
+   - os-vol-mig-status-attr:name_id: os-vol-mig-status-attr:name_id
+   - name: name
+   - bootable: bootable
+   - created_at: created_at
+   - os-volume-replication:driver_data: os-volume-replication:driver_data
+   - volume_type: volume_type
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-show-response.json
+   :language: javascript
+
+
+
+
+Update volume
+=============
+
+.. rest_method::  PUT /v2/{tenant_id}/volumes/{volume_id}
+
+Updates a volume.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - volume: volume
+   - description: description
+   - name: name
+   - metadata: metadata
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - migration_status: migration_status
+   - attachments: attachments
+   - links: links
+   - availability_zone: availability_zone
+   - encrypted: encrypted
+   - updated_at: updated_at
+   - replication_status: replication_status
+   - snapshot_id: snapshot_id
+   - id: id
+   - size: size
+   - user_id: user_id
+   - metadata: metadata
+   - status: status
+   - description: description
+   - multiattach: multiattach
+   - source_volid: source_volid
+   - volume: volume
+   - consistencygroup_id: consistencygroup_id
+   - name: name
+   - bootable: bootable
+   - created_at: created_at
+   - volume_type: volume_type
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-update-response.json
+   :language: javascript
+
+
+
+
+Delete volume
+=============
+
+.. rest_method::  DELETE /v2/{tenant_id}/volumes/{volume_id}
+
+Deletes a volume.
+
+Preconditions
+
+- Volume status must be ``available``, ``in-use``, ``error``, or
+  ``error_restoring``.
+
+- You cannot already have a snapshot of the volume.
+
+- You cannot delete a volume that is in a migration.
+
+Asynchronous Postconditions
+
+- The volume is deleted in volume index.
+
+- The volume managed by OpenStack Block Storage is deleted in
+  storage node.
+
+Troubleshooting
+
+- If volume status remains in ``deleting`` or becomes
+  ``error_deleting`` the request failed. Ensure you meet the
+  preconditions then investigate the storage back end.
+
+- The volume managed by OpenStack Block Storage is not deleted from
+  the storage system.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+
+
+
+
+
+Create volume metadata
+======================
+
+.. rest_method::  POST /v2/{tenant_id}/volumes/{volume_id}/metadata
+
+Creates metadata for a volume.
+
+Error response codes:202,
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-metadata-create-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+
+
+
+
+
+Show volume metadata
+====================
+
+.. rest_method::  GET /v2/{tenant_id}/volumes/{volume_id}/metadata
+
+Shows metadata for a volume.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-metadata-show-response.json
+   :language: javascript
+
+
+
+
+Update volume metadata
+======================
+
+.. rest_method::  PUT /v2/{tenant_id}/volumes/{volume_id}/metadata
+
+Updates metadata for a volume.
+
+Replaces metadata items that match keys. Does not modify items that
+are not in the request.
+
+
+Normal response codes: 200
+Error response codes:
+
+
+Request
+-------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+   - tenant_id: tenant_id
+   - volume_id: volume_id
+
+Request Example
+---------------
+
+.. literalinclude:: ./samples/volume-metadata-update-request.json
+   :language: javascript
+
+
+
+Response Parameters
+-------------------
+
+.. rest_parameters:: parameters.yaml
+
+   - metadata: metadata
+
+
+
+Response Example
+----------------
+
+.. literalinclude:: ./samples/volume-metadata-update-response.json
+   :language: javascript
diff --git a/tox.ini b/tox.ini
index 326a1a5f633..b65b018c864 100644
--- a/tox.ini
+++ b/tox.ini
@@ -25,6 +25,15 @@ commands = ostestr {posargs}
 whitelist_externals = bash
 passenv = *_proxy *_PROXY
 
+[testenv:api-ref]
+# (sheel)This environment is called from CI scripts to test and publish
+# the API Ref to developer.openstack.org.
+install_command = pip install -U --force-reinstall {opts} {packages}
+commands =
+  rm -rf cinder/api-ref/build
+  sphinx-build -W -b html -d api-ref/build/doctrees/v1 api-ref/v1/source api-ref/build/html/v1
+  sphinx-build -W -b html -d api-ref/build/doctrees/v2 api-ref/v2/source api-ref/build/html/v2
+
 [testenv:releasenotes]
 # NOTE(jaegerandi): This target does not use constraints because
 # upstream infra does not yet support it. Once that's fixed, we can