]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard/api: generate offline API docs 36016/head
authorCourtney Caldwell <ccaldwel@redhat.com>
Tue, 8 Sep 2020 15:06:33 +0000 (11:06 -0400)
committerErnesto Puerta <epuertat@redhat.com>
Mon, 28 Sep 2020 10:03:03 +0000 (12:03 +0200)
Generate Sphinx documentation from OpenAPI YAML spec:
- Fixed Docs controller doc generation
- Now dashboard Python doesn't fails if dashboard/frontend/dist doesn't exist
- OpenAPI added to @ceph/api CODEOWNERS
- Renamed Ceph-Dashboard API to Ceph REST or RESTful API.
- OpenAPI Docs: fixed decorators and docstrings.
- Sphinx Docs: updated dashboard and dev ones.

Co-authored-by: Ernesto Puerta <epuertat@redhat.com>
Fixes: https://tracker.ceph.com/issues/45863
Signed-off-by: Courtney Caldwell <ccaldwel@redhat.com>
Signed-off-by: Ernesto Puerta <epuertat@redhat.com>
23 files changed:
.github/CODEOWNERS
admin/doc-requirements.txt
doc/api/index.rst
doc/conf.py
doc/dev/developer_guide/dash-devel.rst
doc/mgr/ceph_api/index.rst [new file with mode: 0644]
doc/mgr/dashboard.rst
doc/mgr/index.rst
src/pybind/mgr/dashboard/CMakeLists.txt
src/pybind/mgr/dashboard/__init__.py
src/pybind/mgr/dashboard/controllers/__init__.py
src/pybind/mgr/dashboard/controllers/cephfs.py
src/pybind/mgr/dashboard/controllers/docs.py
src/pybind/mgr/dashboard/controllers/home.py
src/pybind/mgr/dashboard/controllers/orchestrator.py
src/pybind/mgr/dashboard/controllers/rbd.py
src/pybind/mgr/dashboard/controllers/settings.py
src/pybind/mgr/dashboard/controllers/telemetry.py
src/pybind/mgr/dashboard/controllers/user.py
src/pybind/mgr/dashboard/openapi.yaml [new file with mode: 0644]
src/pybind/mgr/dashboard/requirements-extra.txt [new file with mode: 0644]
src/pybind/mgr/dashboard/requirements.txt
src/pybind/mgr/dashboard/tox.ini

index 1049333d8218c46e36da5bef3cb5f2084058e589..3ceb08090423e16c602383153d7d2b2b057191f6 100644 (file)
@@ -8,6 +8,7 @@
 /doc/mgr/dashboard.rst                          @ceph/dashboard
 
 # Dashboard API team
+/src/pybind/mgr/dashboard/openapi.yaml                 @ceph/api
 /src/pybind/mgr/dashboard/controllers                  @ceph/api
 /src/pybind/mgr/dashboard/frontend/src/app/shared/api  @ceph/api
 /src/pybind/mgr/dashboard/run-backend-api-tests.sh     @ceph/api
index 85302022d40eab043c11f92b84cdf3d5ec01ac60..8e149e70b856d1a0934a0152fab5ed41372148fb 100644 (file)
@@ -8,3 +8,4 @@ sphinx-autodoc-typehints
 sphinx-prompt
 Sphinx-Substitution-Extensions
 typed-ast
+sphinxcontrib-openapi
index 50f7b068b62ebba78524f3df0fb61e0cfa8869ca..e359b87f86c792d789b43a680c8ba83f66772820 100644 (file)
@@ -2,6 +2,12 @@
  API Documentation
 ===================
 
+Ceph RESTful API
+================
+
+See `Ceph REST API`_.
+
+.. _Ceph REST API: ../mgr/ceph_api/
 
 Ceph Storage Cluster APIs
 =========================
index 797000d1bc86a534215924be1c08f2685e1b5407..42b9d20bf54784fcfb5c6eefee04e195705b2626 100644 (file)
@@ -60,6 +60,7 @@ extensions = [
     'breathe',
     'edit_on_github',
     'ceph_releases',
+    'sphinxcontrib.openapi'
     ]
 
 ditaa = shutil.which("ditaa")
index 70522d3c9eadecd7535b5992b86fa1bf3f4c972f..29a84f683d3d074a93cd13f1d0363247b712190b 100644 (file)
@@ -1996,9 +1996,30 @@ Usage example:
 
 REST API documentation
 ~~~~~~~~~~~~~~~~~~~~~~
-There is an automatically generated Swagger UI page for documentation of the REST
-API endpoints.However, by default it is not very detailed. There are two
-decorators that can be used to add more information:
+Ceph-Dashboard provides two types of documentation for the **Ceph RESTful API**:
+
+* **Static documentation**: available at :ref:`mgr-ceph-api`. This comes from a versioned specification located at ``src/pybind/mgr/dashboard/openapi.yaml``.
+* **Interactive documentation**: available from a running Ceph-Dashboard instance (top-right ``?`` icon > API Docs).
+
+If changes are made to the ``controllers/`` directory, it's very likely that
+they will result in changes to the generated OpenAPI specification. For that
+reason, a checker has been implemented to block unintended changes. This check
+is automatically triggered by the Pull Request CI (``make check``) and can be
+also manually invoked: ``tox -e openapi-check``.
+
+If that checker failed, it means that the current Pull Request is modifying the
+Ceph API and therefore:
+
+#. The versioned OpenAPI specification should be updated explicitly: ``tox -e openapi-fix``.
+#. The team @ceph/api will be requested for reviews (this is automated via Github CODEOWNERS), in order to asses the impact of changes.
+
+Additionally, Sphinx documentation can be generated from the OpenAPI
+specification with ``tox -e openapi-doc``.
+
+The Ceph RESTful OpenAPI specification is dynamically generated from the
+``Controllers`` in ``controllers/`` directory.  However, by default it is not
+very detailed, so there are two decorators that can and should be used to add
+more information:
 
 * ``@EndpointDoc()`` for documentation of endpoints. It has four optional arguments
   (explained below): ``description``, ``group``, ``parameters`` and
@@ -2312,5 +2333,3 @@ plugin could be rewritten like this:
           return self.mute
 
       return [MuteController]
-
-
diff --git a/doc/mgr/ceph_api/index.rst b/doc/mgr/ceph_api/index.rst
new file mode 100644 (file)
index 0000000..f4e6836
--- /dev/null
@@ -0,0 +1,90 @@
+.. _mgr-ceph-api:
+
+================
+Ceph RESTful API
+================
+
+Introduction
+============
+The **Ceph RESTful API** (henceforth **Ceph API**) is provided by the
+:ref:`mgr-dashboard` module. The Ceph API
+service is available at the same URL as the regular Ceph Dashboard, under the
+``/api`` base path (please refer to :ref:`dashboard-host-name-and-port`)::
+
+  http://<server_addr>:<server_port>/api
+
+or, if HTTPS is enabled (please refer to :ref:`dashboard-ssl-tls-support`)::
+
+  https://<server_addr>:<ssl_server_port>/api
+
+The Ceph API leverages the following standards:
+
+* `HTTP 1.1 <https://tools.ietf.org/html/rfc7231>`_ for API syntax and semantics,
+* `JSON <https://tools.ietf.org/html/rfc8259>`_ for content encoding,
+* `HTTP Content Negotiation <https://tools.ietf.org/html/rfc2295>`_ and `MIME <https://tools.ietf.org/html/rfc2045>`_ for versioning,
+* `OAuth 2.0 <https://tools.ietf.org/html/rfc6750>`_ and `JWT <https://tools.ietf.org/html/rfc7519>`_ for authentication and authorization.
+
+.. warning::
+  Some endpoints are still under active development, and should be carefully
+  used since new Ceph releases could bring backward incompatible changes.
+
+
+Authentication and Authorization
+================================
+
+Requests to the Ceph API pass through two access control checkpoints:
+
+* **Authentication**: ensures that the request is performed on behalf of an existing and valid user account.
+* **Authorization**: ensures that the previously authenticated user can in fact perform a specific action (create, read, update or delete) on the target endpoint.
+
+So, prior to start consuming the Ceph API, a valid JSON Web Token (JWT) has to
+be obtained, and it may then be reused for subsequent requests. The
+``/api/auth`` endpoint will provide the valid token:
+
+.. code-block:: sh
+
+  $ curl -X POST "https://example.com:8443/api/auth" \
+    -H  "Accept: application/vnd.ceph.api.v1.0+json" \
+    -H  "Content-Type: application/json" \
+    -d '{"username": <username>, "password": <password>}'
+
+  { "token": "<redacted_token>", ...}
+
+The token obtained must be passed together with every API request in the
+``Authorization`` HTTP header::
+
+  curl -H "Authorization: Bearer <token>" ...
+
+Authentication and authorization can be further configured from the
+Ceph CLI, the Ceph-Dashboard UI and the Ceph API itself (please refer to
+:ref:`dashboard-user-role-management`).
+
+Versioning
+==========
+
+One of the main goals of the Ceph API is to keep a stable interface. For this
+purpose, Ceph API is built upon the following principles:
+
+* **Mandatory**: in order to avoid implicit defaults, all endpoints require an explicit default version (starting with ``1.0``).
+* **Per-endpoint**: as this API wraps many different Ceph components, this allows for a finer-grained change control.
+   * **Content/MIME Type**: the version expected from a specific endpoint is stated by the ``Accept: application/vnd.ceph.api.v<major>.<minor>+json`` HTTP header. If the current Ceph API server is not able to address that specific major version, a `415 - Unsupported Media Type <https://tools.ietf.org/html/rfc7231#section-6.5.13>`_ response will be returned.
+* **Semantic Versioning**: with a ``major.minor`` version:
+   * Major changes are backward incompatible: they might result in non-additive changes to the request and/or response formats of a specific endpoint.
+   * Minor changes are backward/forward compatible: they basically consists of additive changes to the request or response formats of a specific endpoint.
+
+An example:
+
+.. code-block:: bash
+
+  $ curl -X GET "https://example.com:8443/api/osd" \
+    -H  "Accept: application/vnd.ceph.api.v1.0+json" \
+    -H  "Authorization: Bearer <token>"
+
+
+Specification
+=============
+
+.. openapi:: ../../../src/pybind/mgr/dashboard/openapi.yaml
+    :group:
+    :examples:
+    :encoding: utf-8
index cff1e4060901ca4b7453309ddc1b421ed7a89e34..cfa5454f0d6347df47537b7aff6326b6a00442b2 100644 (file)
@@ -149,7 +149,7 @@ Status
   subpage containing a list of all OSDs and related management actions.
 * **Managers**: Displays the total number of active and standby Ceph Manager
   daemons (ceph-mgr) running alongside monitor daemons.
-* **Object Gateway**: Displays the total number of active object gateways and 
+* **Object Gateway**: Displays the total number of active object gateways and
   provides a link to the subpage displaying a list of all object gateway daemons.
 * **Metadata Servers**: Displays total number of active and standby metadata
   servers daemons for CephFS (ceph-mds).
@@ -290,6 +290,8 @@ wanted or required. See :ref:`dashboard-proxy-configuration` for more details.
     $ ceph mgr module disable dashboard
     $ ceph mgr module enable dashboard
 
+.. _dashboard-host-name-and-port:
+
 Host Name and Port
 ^^^^^^^^^^^^^^^^^^
 
index 2c92e43c644780cd30a9ecf753145499faef6fc9..0dad31e929fb531039c6282c9be525c58a236686 100644 (file)
@@ -29,6 +29,7 @@ sensible.
     Writing modules <modules>
     Writing orchestrator plugins <orchestrator_modules>
     Dashboard module <dashboard>
+    Ceph RESTful API <ceph_api/index>
     Alerts module <alerts>
     DiskPrediction module <diskprediction>
     Local pool module <localpool>
index e94817d4fa1385c216cbdd0028dcef51c7769786..ea454f5ec0e1686c1d39f7ce3401e1c6c4c5bd99 100644 (file)
@@ -107,5 +107,5 @@ add_dependencies(tests mgr-dashboard-frontend-build)
 
 if(WITH_TESTS)
   include(AddCephTest)
-  add_tox_test(mgr-dashboard TOX_ENVS lint check)
+  add_tox_test(mgr-dashboard TOX_ENVS lint check openapi-check)
 endif()
index 548d401238f58d36c0047110586f974162d7e197..b05da375c8af5e0ce08903ec7e549c448ec9dfab 100644 (file)
@@ -37,6 +37,11 @@ else:
     logging.root.handlers[0].setLevel(logging.DEBUG)
     os.environ['PATH'] = '{}:{}'.format(os.path.abspath('../../../../build/bin'),
                                         os.environ['PATH'])
+    import sys
+
+    # Used to allow the running of a tox-based yml doc generator from the dashboard directory
+    if os.path.abspath(sys.path[0]) == os.getcwd():
+        sys.path.pop(0)
 
     from tests import mock  # type: ignore
 
index 092e55c1a10074a7e043da9f9a2656fe6a88c480..6a45c2f9c9ccf111da0a3f8557340926f144f16d 100644 (file)
@@ -188,6 +188,11 @@ class UiApiController(Controller):
                                               security_scope=security_scope,
                                               secure=secure)
 
+    def __call__(self, cls):
+        cls = super(UiApiController, self).__call__(cls)
+        cls._api_endpoint = False
+        return cls
+
 
 def Endpoint(method=None, path=None, path_params=None, query_params=None,  # noqa: N802
              json_response=True, proxy=False, xml=False):
@@ -582,7 +587,8 @@ class BaseController(object):
 
         @property
         def is_api(self):
-            return hasattr(self.ctrl, '_api_endpoint')
+            # changed from hasattr to getattr: some ui-based api inherit _api_endpoint
+            return getattr(self.ctrl, '_api_endpoint', False)
 
         @property
         def is_secure(self):
index 41708f93d2daab254a740aabba78711a64f3eb26..272feda0b8206954fb7488efd97d953909924dbc 100644 (file)
@@ -359,7 +359,7 @@ class CephFS(RESTController):
         List directories of specified path.
         :param fs_id: The filesystem identifier.
         :param path: The path where to start listing the directory content.
-          Defaults to '/' if not set.
+        Defaults to '/' if not set.
         :type path: str | bytes
         :param depth: The number of steps to go down the directory tree.
         :type depth: int | str
@@ -378,7 +378,7 @@ class CephFS(RESTController):
         """
         Transforms input path parameter of ls_dir methods (api and ui-api).
         :param path: The path where to start listing the directory content.
-          Defaults to '/' if not set.
+        Defaults to '/' if not set.
         :type path: str | bytes
         :return: Normalized path or root path
         :return: str
@@ -436,7 +436,7 @@ class CephFS(RESTController):
         :param fs_id: The filesystem identifier.
         :param path: The path of the directory/file.
         :return: Returns a dictionary containing 'max_bytes'
-            and 'max_files'.
+        and 'max_files'.
         :rtype: dict
         """
         cfs = self._cephfs_instance(fs_id)
@@ -449,9 +449,8 @@ class CephFS(RESTController):
         Create a snapshot.
         :param fs_id: The filesystem identifier.
         :param path: The path of the directory.
-        :param name: The name of the snapshot. If not specified,
-            a name using the current time in RFC3339 UTC format
-            will be generated.
+        :param name: The name of the snapshot. If not specified, a name using the
+        current time in RFC3339 UTC format will be generated.
         :return: The name of the snapshot.
         :rtype: str
         """
@@ -517,7 +516,7 @@ class CephFsUi(CephFS):
         :param fs_id: The filesystem identifier.
         :type fs_id: int | str
         :param path: The path where to start listing the directory content.
-          Defaults to '/' if not set.
+        Defaults to '/' if not set.
         :type path: str | bytes
         :param depth: The number of steps to go down the directory tree.
         :type depth: int | str
index f5888c0c4c96d580877ea2bb663f7d6fdecc0cc3..9aaeaa0c1b68022af3243b76178b7762e4237c93 100644 (file)
@@ -9,8 +9,7 @@ from . import Controller, BaseController, Endpoint, ENDPOINT_MAP, \
     allow_empty_body
 from .. import mgr
 
-from ..tools import str_to_bool
-
+NO_DESCRIPTION_AVAILABLE = "*No description available*"
 
 logger = logging.getLogger('controllers.docs')
 
@@ -44,7 +43,7 @@ class Docs(BaseController):
             if tag_name not in tag_map or not tag_map[tag_name]:
                 tag_map[tag_name] = tag_descr
 
-        tags = [{'name': k, 'description': v if v else "*No description available*"}
+        tags = [{'name': k, 'description': v if v else NO_DESCRIPTION_AVAILABLE}
                 for k, v in tag_map.items()]
         tags.sort(key=lambda e: e['name'])
         return tags
@@ -231,18 +230,15 @@ class Docs(BaseController):
                 _type = cls._type_to_str(param['type'])
             else:
                 _type = cls._gen_type(param)
-            if 'description' in param:
-                descr = param['description']
-            else:
-                descr = "*No description available*"
             res = {
                 'name': param['name'],
                 'in': location,
                 'schema': {
                     'type': _type
                 },
-                'description': descr
             }
+            if param.get('description'):
+                res['description'] = param['description']
             if param['required']:
                 res['required'] = True
             elif param['default'] is None:
@@ -273,7 +269,7 @@ class Docs(BaseController):
                 method = endpoint.method
                 func = endpoint.func
 
-                summary = "No description available"
+                summary = ''
                 resp = {}
                 p_info = []
                 if hasattr(func, 'doc_info'):
@@ -293,11 +289,12 @@ class Docs(BaseController):
 
                 methods[method.lower()] = {
                     'tags': [cls._get_tag(endpoint)],
-                    'summary': summary,
                     'description': func.__doc__,
                     'parameters': params,
                     'responses': cls._gen_responses(method, resp)
                 }
+                if summary:
+                    methods[method.lower()]['summary'] = summary
 
                 if method.lower() in ['post', 'put']:
                     if endpoint.body_params:
@@ -322,40 +319,34 @@ class Docs(BaseController):
 
         return paths
 
-    def _gen_spec(self, all_endpoints=False, base_url=""):
+    @classmethod
+    def _gen_spec(cls, all_endpoints=False, base_url="", offline=False):
         if all_endpoints:
             base_url = ""
 
-        host = cherrypy.request.base
-        host = host[host.index(':')+3:]
+        host = cherrypy.request.base.split('://', 1)[1] if not offline else 'example.com'
         logger.debug("Host: %s", host)
 
-        paths = self._gen_paths(all_endpoints)
+        paths = cls._gen_paths(all_endpoints)
 
         if not base_url:
             base_url = "/"
 
-        scheme = 'https'
-        ssl = str_to_bool(mgr.get_localized_module_option('ssl', True))
-        if not ssl:
-            scheme = 'http'
+        scheme = 'https' if offline or mgr.get_localized_module_option('ssl') else 'http'
 
         spec = {
             'openapi': "3.0.0",
             'info': {
-                'description': "Please note that this API is not an official "
-                               "Ceph REST API to be used by third-party "
-                               "applications. It's primary purpose is to serve"
-                               " the requirements of the Ceph Dashboard and is"
-                               " subject to change at any time. Use at your "
-                               "own risk.",
+                'description': "This is the official Ceph REST API",
                 'version': "v1",
-                'title': "Ceph-Dashboard REST API"
+                'title': "Ceph REST API"
             },
             'host': host,
             'basePath': base_url,
-            'servers': [{'url': "{}{}".format(cherrypy.request.base, base_url)}],
-            'tags': self._gen_tags(all_endpoints),
+            'servers': [{'url': "{}{}".format(
+                cherrypy.request.base if not offline else '',
+                base_url)}],
+            'tags': cls._gen_tags(all_endpoints),
             'schemes': [scheme],
             'paths': paths,
             'components': {
@@ -461,3 +452,30 @@ class Docs(BaseController):
     @allow_empty_body
     def _with_token(self, token, all_endpoints=False):
         return self._swagger_ui_page(all_endpoints, token)
+
+
+if __name__ == "__main__":
+    import sys
+    import yaml
+    from . import generate_routes
+
+    def fix_null_descr(obj):
+        """
+        A hot fix for errors caused by null description values when generating
+        static documentation: better fix would be default values in source
+        to be 'None' strings: however, decorator changes didn't resolve
+        """
+        return {k: fix_null_descr(v) for k, v in obj.items() if v is not None} \
+            if isinstance(obj, dict) else obj
+
+    generate_routes("/api")
+    try:
+        with open(sys.argv[1], 'w') as f:
+            # pylint: disable=protected-access
+            yaml.dump(
+                fix_null_descr(Docs._gen_spec(all_endpoints=False, base_url="/", offline=True)),
+                f)
+    except IndexError:
+        sys.exit("Output file name missing; correct syntax is: `cmd <file.yml>`")
+    except IsADirectoryError:
+        sys.exit("Specified output is a directory; correct syntax is: `cmd <file.yml>`")
index 90f976329c587db5144f486f0f642aee34ed9f21..6dcac57c8722b60d940914a54e8ae0ca32bcb3e3 100644 (file)
@@ -9,7 +9,6 @@ try:
     from functools import lru_cache
 except ImportError:
     from ..plugins.lru_cache import lru_cache
-
 import cherrypy
 from cherrypy.lib.static import serve_file
 
@@ -22,11 +21,16 @@ logger = logging.getLogger("controllers.home")
 
 class LanguageMixin(object):
     def __init__(self):
-        self.LANGUAGES = {
-            f
-            for f in os.listdir(mgr.get_frontend_path())
-            if os.path.isdir(os.path.join(mgr.get_frontend_path(), f))
-        }
+        try:
+            self.LANGUAGES = {
+                f
+                for f in os.listdir(mgr.get_frontend_path())
+                if os.path.isdir(os.path.join(mgr.get_frontend_path(), f))
+            }
+        except FileNotFoundError:
+            logger.exception("Build directory missing")
+            self.LANGUAGES = {}
+
         self.LANGUAGES_PATH_MAP = {
             f.lower(): {
                 'lang': f,
@@ -41,7 +45,7 @@ class LanguageMixin(object):
                     'lang': self.LANGUAGES_PATH_MAP[lang]['lang'],
                     'path': self.LANGUAGES_PATH_MAP[lang]['path']
                 }
-        with open("{}/../package.json".format(mgr.get_frontend_path()),
+        with open(os.path.normpath("{}/../package.json".format(mgr.get_frontend_path())),
                   "r") as f:
             config = json.load(f)
         self.DEFAULT_LANGUAGE = config['config']['locale']
index 8a6cf0f9a92b9b28c7fa10129d0bffb6813ff5d9..445fb7235a7ecf6d9249bf75b865b98fd2fe54d5 100644 (file)
@@ -103,7 +103,7 @@ class Orchestrator(RESTController):
         Identify a device by switching on the device light for N seconds.
         :param hostname: The hostname of the device to process.
         :param device: The device identifier to process, e.g. ``/dev/dm-0`` or
-          ``ABC1234DEF567-1R1234_ABC8DE0Q``.
+        ``ABC1234DEF567-1R1234_ABC8DE0Q``.
         :param duration: The duration in seconds how long the LED should flash.
         """
         orch = OrchClient.instance()
index ac2188c80156ddfe62f3709f0629f24f894a63a0..97e1f81fab37ba471e546d90be75c17fdb0318a8 100644 (file)
@@ -344,7 +344,10 @@ class RbdSnapshot(RESTController):
 @ControllerDoc("RBD Trash Management API", "RbdTrash")
 class RbdTrash(RESTController):
     RESOURCE_ID = "image_id_spec"
-    rbd_inst = rbd.RBD()
+
+    def __init__(self):
+        super().__init__()
+        self.rbd_inst = rbd.RBD()
 
     @ViewCache()
     def _trash_pool_list(self, pool_name):
@@ -432,7 +435,10 @@ class RbdTrash(RESTController):
 @ApiController('/block/pool/{pool_name}/namespace', Scope.RBD_IMAGE)
 @ControllerDoc("RBD Namespace Management API", "RbdNamespace")
 class RbdNamespace(RESTController):
-    rbd_inst = rbd.RBD()
+
+    def __init__(self):
+        super().__init__()
+        self.rbd_inst = rbd.RBD()
 
     def create(self, pool_name, namespace):
         with mgr.rados.open_ioctx(pool_name) as ioctx:
index dc35eec9561ab6f6bc382872218acb3d5550a899..417a07c7bab579e0e4b471b4216bf77d5a34f772 100644 (file)
@@ -54,7 +54,7 @@ class Settings(RESTController):
         """
         Get the list of available options.
         :param names: A comma separated list of option names that should
-          be processed. Defaults to ``None``.
+        be processed. Defaults to ``None``.
         :type names: None|str
         :return: A list of available options.
         :rtype: list[dict]
@@ -83,7 +83,7 @@ class Settings(RESTController):
         Get the given option.
         :param name: The name of the option.
         :return: Returns a dict containing the name, type,
-          default value and current value of the given option.
+        default value and current value of the given option.
         :rtype: dict
         """
         return self._get(name)
@@ -108,7 +108,7 @@ class StandardSettings(RESTController):
         """
         Get various Dashboard related settings.
         :return: Returns a dictionary containing various Dashboard
-            settings.
+        settings.
         :rtype: dict
         """
         return {  # pragma: no cover - no complexity there
index 0478ba68755241ca5185fdb6f20e6af0958d8043..34c0a30a142a989d9bcf8508d1c360c98f436364 100644 (file)
@@ -223,8 +223,8 @@ class Telemetry(RESTController):
         :param enable: Enable or disable sending data
         :type enable: bool
         :param license_name: License string e.g. 'sharing-1-0' to
-            make sure the user is aware of and accepts the license
-            for sharing Telemetry data.
+        make sure the user is aware of and accepts the license
+        for sharing Telemetry data.
         :type license_name: string
         """
         if enable:
index e44748f2ab5a9cc53d91b4b5d8ec31030f1ab754..bba47a8c4d3c7b8ebc714fa5e3dd39e78ee311e6 100644 (file)
@@ -168,9 +168,9 @@ class UserPasswordPolicy(RESTController):
         :param password: The password to validate.
         :param username: The name of the user (optional).
         :param old_password: The old password (optional).
-        :return: An object with the properties valid, credits and valuation.
-          'credits' contains the password complexity credits and
-          'valuation' the textual summary of the validation.
+        :return: An object with properties valid, credits and valuation.
+        'credits' contains the password complexity credits and
+        'valuation' the textual summary of the validation.
         """
         result = {'valid': False, 'credits': 0, 'valuation': None}
         try:
diff --git a/src/pybind/mgr/dashboard/openapi.yaml b/src/pybind/mgr/dashboard/openapi.yaml
new file mode 100644 (file)
index 0000000..bba9a05
--- /dev/null
@@ -0,0 +1,9097 @@
+basePath: /
+components:
+  securitySchemes:
+    jwt:
+      bearerFormat: JWT
+      scheme: bearer
+      type: http
+host: example.com
+info:
+  description: This is the official Ceph REST API
+  title: Ceph REST API
+  version: v1
+openapi: 3.0.0
+paths:
+  /api/auth:
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                password:
+                  type: string
+                username:
+                  type: string
+              required:
+              - username
+              - password
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      tags:
+      - Auth
+  /api/auth/check:
+    post:
+      parameters:
+      - description: Authentication Token
+        in: query
+        name: token
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                token:
+                  description: Authentication Token
+                  type: string
+              required:
+              - token
+              type: object
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                properties:
+                  permissions:
+                    description: List of permissions acquired
+                    properties:
+                      cephfs:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                    required:
+                    - cephfs
+                    type: object
+                  pwdUpdateRequired:
+                    description: Is password update required?
+                    type: boolean
+                  sso:
+                    description: Uses single sign on?
+                    type: boolean
+                  username:
+                    description: Username
+                    type: string
+                required:
+                - username
+                - permissions
+                - sso
+                - pwdUpdateRequired
+                type: object
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      summary: Check token Authentication
+      tags:
+      - Auth
+  /api/auth/logout:
+    post:
+      parameters: []
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      tags:
+      - Auth
+  /api/block/image:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        description: Pool Name
+        in: query
+        name: pool_name
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  pool_name:
+                    description: pool name
+                    type: string
+                  status:
+                    description: Status of the image
+                    type: integer
+                  value:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                required:
+                - status
+                - value
+                - pool_name
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Rbd Images
+      tags:
+      - Rbd
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                configuration:
+                  type: string
+                data_pool:
+                  type: string
+                features:
+                  type: string
+                name:
+                  type: string
+                namespace:
+                  type: string
+                obj_size:
+                  type: integer
+                pool_name:
+                  type: string
+                size:
+                  type: integer
+                stripe_count:
+                  type: integer
+                stripe_unit:
+                  type: string
+              required:
+              - name
+              - pool_name
+              - size
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+  /api/block/image/default_features:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+  /api/block/image/trash:
+    get:
+      description: List all entries from trash.
+      parameters:
+      - allowEmptyValue: true
+        description: Name of the pool
+        in: query
+        name: pool_name
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  pool_name:
+                    description: pool name
+                    type: string
+                  status:
+                    description: ''
+                    type: integer
+                  value:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                required:
+                - status
+                - value
+                - pool_name
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get RBD Trash Details by pool name
+      tags:
+      - RbdTrash
+  /api/block/image/trash/purge:
+    post:
+      description: Remove all expired images from trash.
+      parameters:
+      - allowEmptyValue: true
+        in: query
+        name: pool_name
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                pool_name:
+                  type: string
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdTrash
+  /api/block/image/trash/{image_id_spec}:
+    delete:
+      description: "Delete an image from trash.\n        If image deferment time has\
+        \ not expired you can not removed it unless use force.\n        But an actively\
+        \ in-use by clones or has snapshots can not be removed.\n        "
+      parameters:
+      - in: path
+        name: image_id_spec
+        required: true
+        schema:
+          type: string
+      - default: false
+        in: query
+        name: force
+        schema:
+          type: boolean
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdTrash
+  /api/block/image/trash/{image_id_spec}/restore:
+    post:
+      description: Restore an image from trash.
+      parameters:
+      - in: path
+        name: image_id_spec
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                new_image_name:
+                  type: string
+              required:
+              - new_image_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdTrash
+  /api/block/image/{image_spec}:
+    delete:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+    get:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+    put:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                configuration:
+                  type: string
+                features:
+                  type: string
+                name:
+                  type: string
+                size:
+                  type: integer
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+  /api/block/image/{image_spec}/copy:
+    post:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                configuration:
+                  type: string
+                data_pool:
+                  type: string
+                dest_image_name:
+                  type: string
+                dest_namespace:
+                  type: string
+                dest_pool_name:
+                  type: string
+                features:
+                  type: string
+                obj_size:
+                  type: integer
+                snapshot_name:
+                  type: string
+                stripe_count:
+                  type: integer
+                stripe_unit:
+                  type: string
+              required:
+              - dest_pool_name
+              - dest_namespace
+              - dest_image_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+  /api/block/image/{image_spec}/flatten:
+    post:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+  /api/block/image/{image_spec}/move_trash:
+    post:
+      description: "Move an image to the trash.\n        Images, even ones actively\
+        \ in-use by clones,\n        can be moved to the trash and deleted at a later\
+        \ time.\n        "
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                delay:
+                  default: 0
+                  type: integer
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Rbd
+  /api/block/image/{image_spec}/snap:
+    post:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                snapshot_name:
+                  type: string
+              required:
+              - snapshot_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdSnapshot
+  /api/block/image/{image_spec}/snap/{snapshot_name}:
+    delete:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: snapshot_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdSnapshot
+    put:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: snapshot_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                is_protected:
+                  type: boolean
+                new_snap_name:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdSnapshot
+  /api/block/image/{image_spec}/snap/{snapshot_name}/clone:
+    post:
+      description: "\n        Clones a snapshot to an image\n        "
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: snapshot_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                child_image_name:
+                  type: string
+                child_namespace:
+                  type: string
+                child_pool_name:
+                  type: string
+                configuration:
+                  type: string
+                data_pool:
+                  type: string
+                features:
+                  type: string
+                obj_size:
+                  type: integer
+                stripe_count:
+                  type: integer
+                stripe_unit:
+                  type: string
+              required:
+              - child_pool_name
+              - child_image_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdSnapshot
+  /api/block/image/{image_spec}/snap/{snapshot_name}/rollback:
+    post:
+      parameters:
+      - in: path
+        name: image_spec
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: snapshot_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdSnapshot
+  /api/block/mirroring/pool/{pool_name}:
+    get:
+      parameters:
+      - description: Pool Name
+        in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  mirror_mode:
+                    description: Mirror Mode
+                    type: string
+                required:
+                - mirror_mode
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Rbd Mirroring Summary
+      tags:
+      - RbdMirroringPoolMode
+    put:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                mirror_mode:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolMode
+  /api/block/mirroring/pool/{pool_name}/bootstrap/peer:
+    post:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                direction:
+                  type: string
+                token:
+                  type: string
+              required:
+              - direction
+              - token
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolBootstrap
+  /api/block/mirroring/pool/{pool_name}/bootstrap/token:
+    post:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolBootstrap
+  /api/block/mirroring/pool/{pool_name}/peer:
+    get:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolPeer
+    post:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                client_id:
+                  type: string
+                cluster_name:
+                  type: string
+                key:
+                  type: string
+                mon_host:
+                  type: string
+              required:
+              - cluster_name
+              - client_id
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolPeer
+  /api/block/mirroring/pool/{pool_name}/peer/{peer_uuid}:
+    delete:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: peer_uuid
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolPeer
+    get:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: peer_uuid
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolPeer
+    put:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: peer_uuid
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                client_id:
+                  type: string
+                cluster_name:
+                  type: string
+                key:
+                  type: string
+                mon_host:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroringPoolPeer
+  /api/block/mirroring/site_name:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  site_name:
+                    description: Site Name
+                    type: string
+                required:
+                - site_name
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Rbd Mirroring sitename
+      tags:
+      - RbdMirroring
+    put:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                site_name:
+                  type: string
+              required:
+              - site_name
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdMirroring
+  /api/block/mirroring/summary:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  content_data:
+                    description: ''
+                    properties:
+                      daemons:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      image_error:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      image_ready:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      image_syncing:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      pools:
+                        description: Pools
+                        items:
+                          properties:
+                            health:
+                              description: pool health
+                              type: string
+                            health_color:
+                              description: ''
+                              type: string
+                            mirror_mode:
+                              description: status
+                              type: string
+                            name:
+                              description: Pool name
+                              type: string
+                            peer_uuids:
+                              description: ''
+                              items:
+                                type: string
+                              type: array
+                          required:
+                          - name
+                          - health_color
+                          - health
+                          - mirror_mode
+                          - peer_uuids
+                          type: object
+                        type: array
+                    required:
+                    - daemons
+                    - pools
+                    - image_error
+                    - image_syncing
+                    - image_ready
+                    type: object
+                  site_name:
+                    description: site name
+                    type: string
+                  status:
+                    description: ''
+                    type: integer
+                required:
+                - site_name
+                - status
+                - content_data
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Rbd Mirroring Summary
+      tags:
+      - RbdMirroringSummary
+  /api/block/pool/{pool_name}/namespace:
+    get:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdNamespace
+    post:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                namespace:
+                  type: string
+              required:
+              - namespace
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdNamespace
+  /api/block/pool/{pool_name}/namespace/{namespace}:
+    delete:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: namespace
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RbdNamespace
+  /api/cephfs:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}:
+    get:
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/client/{client_id}:
+    delete:
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: client_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/clients:
+    get:
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/get_root_directory:
+    get:
+      description: "\n        The root directory that can't be fetched using ls_dir\
+        \ (api).\n        :param fs_id: The filesystem identifier.\n        :return:\
+        \ The root directory\n        :rtype: dict\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/ls_dir:
+    get:
+      description: "\n        List directories of specified path.\n        :param\
+        \ fs_id: The filesystem identifier.\n        :param path: The path where to\
+        \ start listing the directory content.\n        Defaults to '/' if not set.\n\
+        \        :type path: str | bytes\n        :param depth: The number of steps\
+        \ to go down the directory tree.\n        :type depth: int | str\n       \
+        \ :return: The names of the directories below the specified path.\n      \
+        \  :rtype: list\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: path
+        schema:
+          type: string
+      - default: 1
+        in: query
+        name: depth
+        schema:
+          type: integer
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/mds_counters:
+    get:
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: counters
+        schema:
+          type: integer
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/quota:
+    get:
+      description: "\n        Get the quotas of the specified path.\n        :param\
+        \ fs_id: The filesystem identifier.\n        :param path: The path of the\
+        \ directory/file.\n        :return: Returns a dictionary containing 'max_bytes'\n\
+        \        and 'max_files'.\n        :rtype: dict\n        "
+      parameters:
+      - description: File System Identifier
+        in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      - description: File System Path
+        in: query
+        name: path
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  max_bytes:
+                    description: ''
+                    type: integer
+                  max_files:
+                    description: ''
+                    type: integer
+                required:
+                - max_bytes
+                - max_files
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get Cephfs Quotas of the specified path
+      tags:
+      - Cephfs
+    put:
+      description: "\n        Set the quotas of the specified path.\n        :param\
+        \ fs_id: The filesystem identifier.\n        :param path: The path of the\
+        \ directory/file.\n        :param max_bytes: The byte limit.\n        :param\
+        \ max_files: The file limit.\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                max_bytes:
+                  type: string
+                max_files:
+                  type: string
+                path:
+                  type: string
+              required:
+              - path
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/snapshot:
+    delete:
+      description: "\n        Remove a snapshot.\n        :param fs_id: The filesystem\
+        \ identifier.\n        :param path: The path of the directory.\n        :param\
+        \ name: The name of the snapshot.\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      - in: query
+        name: path
+        required: true
+        schema:
+          type: string
+      - in: query
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+    post:
+      description: "\n        Create a snapshot.\n        :param fs_id: The filesystem\
+        \ identifier.\n        :param path: The path of the directory.\n        :param\
+        \ name: The name of the snapshot. If not specified, a name using the\n   \
+        \     current time in RFC3339 UTC format will be generated.\n        :return:\
+        \ The name of the snapshot.\n        :rtype: str\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                name:
+                  type: string
+                path:
+                  type: string
+              required:
+              - path
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cephfs/{fs_id}/tree:
+    delete:
+      description: "\n        Remove a directory.\n        :param fs_id: The filesystem\
+        \ identifier.\n        :param path: The path of the directory.\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      - in: query
+        name: path
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+    post:
+      description: "\n        Create a directory.\n        :param fs_id: The filesystem\
+        \ identifier.\n        :param path: The path of the directory.\n        "
+      parameters:
+      - in: path
+        name: fs_id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                path:
+                  type: string
+              required:
+              - path
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Cephfs
+  /api/cluster_conf:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ClusterConfiguration
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                name:
+                  type: string
+                value:
+                  type: string
+              required:
+              - name
+              - value
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ClusterConfiguration
+    put:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                options:
+                  type: string
+              required:
+              - options
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ClusterConfiguration
+  /api/cluster_conf/filter:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        description: Config option names
+        in: query
+        name: names
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  can_update_at_runtime:
+                    description: Check if can update at runtime
+                    type: boolean
+                  daemon_default:
+                    description: Daemon specific default value
+                    type: string
+                  default:
+                    description: Default value for the config option
+                    type: string
+                  desc:
+                    description: Description of the configuration
+                    type: string
+                  enum_values:
+                    description: List of enums allowed
+                    items:
+                      type: string
+                    type: array
+                  flags:
+                    description: List of flags associated
+                    items:
+                      type: string
+                    type: array
+                  level:
+                    description: Config option level
+                    type: string
+                  long_desc:
+                    description: Elaborated description
+                    type: string
+                  max:
+                    description: Maximum value
+                    type: string
+                  min:
+                    description: Minimum value
+                    type: string
+                  name:
+                    description: Name of the config option
+                    type: string
+                  see_also:
+                    description: Related config options
+                    items:
+                      type: string
+                    type: array
+                  services:
+                    description: Services associated with the config option
+                    items:
+                      type: string
+                    type: array
+                  tags:
+                    description: Tags associated with the cluster
+                    items:
+                      type: string
+                    type: array
+                  type:
+                    description: Config option type
+                    type: string
+                required:
+                - name
+                - type
+                - level
+                - desc
+                - long_desc
+                - default
+                - daemon_default
+                - tags
+                - services
+                - see_also
+                - enum_values
+                - min
+                - max
+                - can_update_at_runtime
+                - flags
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get Cluster Configuration by name
+      tags:
+      - ClusterConfiguration
+  /api/cluster_conf/{name}:
+    delete:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      - in: query
+        name: section
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ClusterConfiguration
+    get:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ClusterConfiguration
+  /api/crush_rule:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  max_size:
+                    description: Maximum size of Rule
+                    type: integer
+                  min_size:
+                    description: Minimum size of Rule
+                    type: integer
+                  rule_id:
+                    description: Rule ID
+                    type: integer
+                  rule_name:
+                    description: Rule Name
+                    type: string
+                  ruleset:
+                    description: RuleSet related to the rule
+                    type: integer
+                  steps:
+                    description: Steps included in the rule
+                    items:
+                      type: object
+                    type: array
+                  type:
+                    description: Type of Rule
+                    type: integer
+                required:
+                - rule_id
+                - rule_name
+                - ruleset
+                - type
+                - min_size
+                - max_size
+                - steps
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List Crush Rule Configuration
+      tags:
+      - CrushRule
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                device_class:
+                  type: string
+                failure_domain:
+                  type: string
+                name:
+                  type: string
+                root:
+                  type: string
+              required:
+              - name
+              - root
+              - failure_domain
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - CrushRule
+  /api/crush_rule/{name}:
+    delete:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - CrushRule
+    get:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - CrushRule
+  /api/erasure_code_profile:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  crush-failure-domain:
+                    description: ''
+                    type: string
+                  k:
+                    description: Number of data chunks
+                    type: integer
+                  m:
+                    description: Number of coding chunks
+                    type: integer
+                  name:
+                    description: Name of the profile
+                    type: string
+                  plugin:
+                    description: Plugin Info
+                    type: string
+                  technique:
+                    description: ''
+                    type: string
+                required:
+                - crush-failure-domain
+                - k
+                - m
+                - plugin
+                - technique
+                - name
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List Erasure Code Profile Information
+      tags:
+      - ErasureCodeProfile
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                name:
+                  type: string
+              required:
+              - name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ErasureCodeProfile
+  /api/erasure_code_profile/{name}:
+    delete:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ErasureCodeProfile
+    get:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - ErasureCodeProfile
+  /api/feature_toggles:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  cephfs:
+                    description: ''
+                    type: boolean
+                  iscsi:
+                    description: ''
+                    type: boolean
+                  mirroring:
+                    description: ''
+                    type: boolean
+                  nfs:
+                    description: ''
+                    type: boolean
+                  rbd:
+                    description: ''
+                    type: boolean
+                  rgw:
+                    description: ''
+                    type: boolean
+                required:
+                - rbd
+                - mirroring
+                - iscsi
+                - cephfs
+                - rgw
+                - nfs
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get List Of Features
+      tags:
+      - FeatureTogglesEndpoint
+  /api/grafana/dashboards:
+    post:
+      parameters: []
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Grafana
+  /api/grafana/url:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  instance:
+                    description: grafana instance
+                    type: string
+                required:
+                - instance
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List Grafana URL Instance
+      tags:
+      - Grafana
+  /api/grafana/validation/{params}:
+    get:
+      parameters:
+      - in: path
+        name: params
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Grafana
+  /api/health/full:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Health
+  /api/health/minimal:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  client_perf:
+                    description: ''
+                    properties:
+                      read_bytes_sec:
+                        description: ''
+                        type: integer
+                      read_op_per_sec:
+                        description: ''
+                        type: integer
+                      recovering_bytes_per_sec:
+                        description: ''
+                        type: integer
+                      write_bytes_sec:
+                        description: ''
+                        type: integer
+                      write_op_per_sec:
+                        description: ''
+                        type: integer
+                    required:
+                    - read_bytes_sec
+                    - read_op_per_sec
+                    - recovering_bytes_per_sec
+                    - write_bytes_sec
+                    - write_op_per_sec
+                    type: object
+                  df:
+                    description: ''
+                    properties:
+                      stats:
+                        description: ''
+                        properties:
+                          total_avail_bytes:
+                            description: ''
+                            type: integer
+                          total_bytes:
+                            description: ''
+                            type: integer
+                          total_used_raw_bytes:
+                            description: ''
+                            type: integer
+                        required:
+                        - total_avail_bytes
+                        - total_bytes
+                        - total_used_raw_bytes
+                        type: object
+                    required:
+                    - stats
+                    type: object
+                  fs_map:
+                    description: ''
+                    properties:
+                      filesystems:
+                        description: ''
+                        items:
+                          properties:
+                            mdsmap:
+                              description: ''
+                              properties:
+                                balancer:
+                                  description: ''
+                                  type: string
+                                compat:
+                                  description: ''
+                                  properties:
+                                    compat:
+                                      description: ''
+                                      type: string
+                                    incompat:
+                                      description: ''
+                                      type: string
+                                    ro_compat:
+                                      description: ''
+                                      type: string
+                                  required:
+                                  - compat
+                                  - ro_compat
+                                  - incompat
+                                  type: object
+                                created:
+                                  description: ''
+                                  type: string
+                                damaged:
+                                  description: ''
+                                  items:
+                                    type: integer
+                                  type: array
+                                data_pools:
+                                  description: ''
+                                  items:
+                                    type: integer
+                                  type: array
+                                enabled:
+                                  description: ''
+                                  type: boolean
+                                epoch:
+                                  description: ''
+                                  type: integer
+                                ever_allowed_features:
+                                  description: ''
+                                  type: integer
+                                explicitly_allowed_features:
+                                  description: ''
+                                  type: integer
+                                failed:
+                                  description: ''
+                                  items:
+                                    type: integer
+                                  type: array
+                                flags:
+                                  description: ''
+                                  type: integer
+                                fs_name:
+                                  description: ''
+                                  type: string
+                                in:
+                                  description: ''
+                                  items:
+                                    type: integer
+                                  type: array
+                                info:
+                                  description: ''
+                                  type: string
+                                last_failure:
+                                  description: ''
+                                  type: integer
+                                last_failure_osd_epoch:
+                                  description: ''
+                                  type: integer
+                                max_file_size:
+                                  description: ''
+                                  type: integer
+                                max_mds:
+                                  description: ''
+                                  type: integer
+                                metadata_pool:
+                                  description: ''
+                                  type: integer
+                                modified:
+                                  description: ''
+                                  type: string
+                                required_client_features:
+                                  description: ''
+                                  type: string
+                                root:
+                                  description: ''
+                                  type: integer
+                                session_autoclose:
+                                  description: ''
+                                  type: integer
+                                session_timeout:
+                                  description: ''
+                                  type: integer
+                                standby_count_wanted:
+                                  description: ''
+                                  type: integer
+                                stopped:
+                                  description: ''
+                                  items:
+                                    type: integer
+                                  type: array
+                                tableserver:
+                                  description: ''
+                                  type: integer
+                                up:
+                                  description: ''
+                                  type: string
+                              required:
+                              - session_autoclose
+                              - balancer
+                              - up
+                              - last_failure_osd_epoch
+                              - in
+                              - last_failure
+                              - max_file_size
+                              - explicitly_allowed_features
+                              - damaged
+                              - tableserver
+                              - failed
+                              - metadata_pool
+                              - epoch
+                              - stopped
+                              - max_mds
+                              - compat
+                              - required_client_features
+                              - data_pools
+                              - info
+                              - fs_name
+                              - created
+                              - standby_count_wanted
+                              - enabled
+                              - modified
+                              - session_timeout
+                              - flags
+                              - ever_allowed_features
+                              - root
+                              type: object
+                            standbys:
+                              description: ''
+                              type: string
+                          required:
+                          - mdsmap
+                          - standbys
+                          type: object
+                        type: array
+                    required:
+                    - filesystems
+                    type: object
+                  health:
+                    description: ''
+                    properties:
+                      checks:
+                        description: ''
+                        type: string
+                      mutes:
+                        description: ''
+                        type: string
+                      status:
+                        description: ''
+                        type: string
+                    required:
+                    - checks
+                    - mutes
+                    - status
+                    type: object
+                  hosts:
+                    description: ''
+                    type: integer
+                  iscsi_daemons:
+                    description: ''
+                    properties:
+                      down:
+                        description: ''
+                        type: integer
+                      up:
+                        description: ''
+                        type: integer
+                    required:
+                    - up
+                    - down
+                    type: object
+                  mgr_map:
+                    description: ''
+                    properties:
+                      active_name:
+                        description: ''
+                        type: string
+                      standbys:
+                        description: ''
+                        type: string
+                    required:
+                    - active_name
+                    - standbys
+                    type: object
+                  mon_status:
+                    description: ''
+                    properties:
+                      monmap:
+                        description: ''
+                        properties:
+                          mons:
+                            description: ''
+                            type: string
+                        required:
+                        - mons
+                        type: object
+                      quorum:
+                        description: ''
+                        items:
+                          type: integer
+                        type: array
+                    required:
+                    - monmap
+                    - quorum
+                    type: object
+                  osd_map:
+                    description: ''
+                    properties:
+                      osds:
+                        description: ''
+                        items:
+                          properties:
+                            in:
+                              description: ''
+                              type: integer
+                            up:
+                              description: ''
+                              type: integer
+                          required:
+                          - in
+                          - up
+                          type: object
+                        type: array
+                    required:
+                    - osds
+                    type: object
+                  pg_info:
+                    description: ''
+                    properties:
+                      object_stats:
+                        description: ''
+                        properties:
+                          num_object_copies:
+                            description: ''
+                            type: integer
+                          num_objects:
+                            description: ''
+                            type: integer
+                          num_objects_degraded:
+                            description: ''
+                            type: integer
+                          num_objects_misplaced:
+                            description: ''
+                            type: integer
+                          num_objects_unfound:
+                            description: ''
+                            type: integer
+                        required:
+                        - num_objects
+                        - num_object_copies
+                        - num_objects_degraded
+                        - num_objects_misplaced
+                        - num_objects_unfound
+                        type: object
+                      pgs_per_osd:
+                        description: ''
+                        type: integer
+                      statuses:
+                        description: ''
+                        type: string
+                    required:
+                    - object_stats
+                    - pgs_per_osd
+                    - statuses
+                    type: object
+                  pools:
+                    description: ''
+                    type: string
+                  rgw:
+                    description: ''
+                    type: integer
+                  scrub_status:
+                    description: ''
+                    type: string
+                required:
+                - client_perf
+                - df
+                - fs_map
+                - health
+                - hosts
+                - iscsi_daemons
+                - mgr_map
+                - mon_status
+                - osd_map
+                - pg_info
+                - pools
+                - rgw
+                - scrub_status
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get Cluster's minimal health report
+      tags:
+      - Health
+  /api/host:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        description: Host Sources
+        in: query
+        name: sources
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  addr:
+                    description: Host address
+                    type: string
+                  ceph_version:
+                    description: Ceph version
+                    type: string
+                  hostname:
+                    description: Hostname
+                    type: string
+                  labels:
+                    description: Labels related to the host
+                    items:
+                      type: string
+                    type: array
+                  service_type:
+                    description: ''
+                    type: string
+                  services:
+                    description: Services related to the host
+                    items:
+                      properties:
+                        id:
+                          description: Service Id
+                          type: string
+                        type:
+                          description: type of service
+                          type: string
+                      required:
+                      - type
+                      - id
+                      type: object
+                    type: array
+                  sources:
+                    description: Host Sources
+                    properties:
+                      ceph:
+                        description: ''
+                        type: boolean
+                      orchestrator:
+                        description: ''
+                        type: boolean
+                    required:
+                    - ceph
+                    - orchestrator
+                    type: object
+                  status:
+                    description: ''
+                    type: string
+                required:
+                - hostname
+                - services
+                - ceph_version
+                - addr
+                - labels
+                - service_type
+                - sources
+                - status
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List Host Specifications
+      tags:
+      - Host
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                hostname:
+                  type: string
+              required:
+              - hostname
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+  /api/host/{hostname}:
+    delete:
+      parameters:
+      - in: path
+        name: hostname
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+    get:
+      description: "\n        Get the specified host.\n        :raises: cherrypy.HTTPError:\
+        \ If host not found.\n        "
+      parameters:
+      - in: path
+        name: hostname
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+    put:
+      description: "\n        Update the specified host.\n        Note, this is only\
+        \ supported when Ceph Orchestrator is enabled.\n        :param hostname: The\
+        \ name of the host to be processed.\n        :param labels: List of labels.\n\
+        \        "
+      parameters:
+      - in: path
+        name: hostname
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                labels:
+                  type: string
+              required:
+              - labels
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+  /api/host/{hostname}/daemons:
+    get:
+      parameters:
+      - in: path
+        name: hostname
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+  /api/host/{hostname}/devices:
+    get:
+      parameters:
+      - in: path
+        name: hostname
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+  /api/host/{hostname}/smart:
+    get:
+      parameters:
+      - in: path
+        name: hostname
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Host
+  /api/iscsi/discoveryauth:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  mutual_password:
+                    description: ''
+                    type: string
+                  mutual_user:
+                    description: ''
+                    type: string
+                  password:
+                    description: password
+                    type: string
+                  user:
+                    description: username
+                    type: string
+                required:
+                - user
+                - password
+                - mutual_user
+                - mutual_password
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get Iscsi discoveryauth Details
+      tags:
+      - Iscsi
+    put:
+      parameters:
+      - description: Username
+        in: query
+        name: user
+        required: true
+        schema:
+          type: string
+      - description: Password
+        in: query
+        name: password
+        required: true
+        schema:
+          type: string
+      - description: Mutual UserName
+        in: query
+        name: mutual_user
+        required: true
+        schema:
+          type: string
+      - description: Mutual Password
+        in: query
+        name: mutual_password
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                mutual_password:
+                  description: Mutual Password
+                  type: string
+                mutual_user:
+                  description: Mutual UserName
+                  type: string
+                password:
+                  description: Password
+                  type: string
+                user:
+                  description: Username
+                  type: string
+              required:
+              - user
+              - password
+              - mutual_user
+              - mutual_password
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Set Iscsi discoveryauth
+      tags:
+      - Iscsi
+  /api/iscsi/target:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - IscsiTarget
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                acl_enabled:
+                  type: string
+                auth:
+                  type: string
+                clients:
+                  type: string
+                disks:
+                  type: string
+                groups:
+                  type: string
+                portals:
+                  type: string
+                target_controls:
+                  type: string
+                target_iqn:
+                  type: string
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - IscsiTarget
+  /api/iscsi/target/{target_iqn}:
+    delete:
+      parameters:
+      - in: path
+        name: target_iqn
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - IscsiTarget
+    get:
+      parameters:
+      - in: path
+        name: target_iqn
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - IscsiTarget
+    put:
+      parameters:
+      - in: path
+        name: target_iqn
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                acl_enabled:
+                  type: string
+                auth:
+                  type: string
+                clients:
+                  type: string
+                disks:
+                  type: string
+                groups:
+                  type: string
+                new_target_iqn:
+                  type: string
+                portals:
+                  type: string
+                target_controls:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - IscsiTarget
+  /api/logs/all:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  audit_log:
+                    description: Audit log
+                    items:
+                      properties:
+                        addrs:
+                          description: ''
+                          properties:
+                            addrvec:
+                              description: ''
+                              items:
+                                properties:
+                                  addr:
+                                    description: IP Address
+                                    type: string
+                                  nonce:
+                                    description: ''
+                                    type: integer
+                                  type:
+                                    description: ''
+                                    type: string
+                                required:
+                                - type
+                                - addr
+                                - nonce
+                                type: object
+                              type: array
+                          required:
+                          - addrvec
+                          type: object
+                        channel:
+                          description: ''
+                          type: string
+                        message:
+                          description: ''
+                          type: string
+                        name:
+                          description: ''
+                          type: string
+                        priority:
+                          description: ''
+                          type: string
+                        rank:
+                          description: ''
+                          type: string
+                        seq:
+                          description: ''
+                          type: integer
+                        stamp:
+                          description: ''
+                          type: string
+                      required:
+                      - name
+                      - rank
+                      - addrs
+                      - stamp
+                      - seq
+                      - channel
+                      - priority
+                      - message
+                      type: object
+                    type: array
+                  clog:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                required:
+                - clog
+                - audit_log
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Logs Configuration
+      tags:
+      - Logs
+  /api/mgr/module:
+    get:
+      description: "\n        Get the list of managed modules.\n        :return: A\
+        \ list of objects with the fields 'enabled', 'name' and 'options'.\n     \
+        \   :rtype: list\n        "
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  always_on:
+                    description: Is it an always on module?
+                    type: boolean
+                  enabled:
+                    description: Is Module Enabled
+                    type: boolean
+                  name:
+                    description: Module Name
+                    type: string
+                  options:
+                    description: Module Options
+                    properties:
+                      Option_name:
+                        description: Options
+                        properties:
+                          default_value:
+                            description: Default value for the option
+                            type: integer
+                          desc:
+                            description: Description of the option
+                            type: string
+                          enum_allowed:
+                            description: ''
+                            items:
+                              type: string
+                            type: array
+                          flags:
+                            description: List of flags associated
+                            type: integer
+                          level:
+                            description: Option level
+                            type: string
+                          long_desc:
+                            description: Elaborated description
+                            type: string
+                          max:
+                            description: Maximum value
+                            type: string
+                          min:
+                            description: Minimum value
+                            type: string
+                          name:
+                            description: Name of the option
+                            type: string
+                          see_also:
+                            description: Related options
+                            items:
+                              type: string
+                            type: array
+                          tags:
+                            description: Tags associated with the option
+                            items:
+                              type: string
+                            type: array
+                          type:
+                            description: Type of the option
+                            type: string
+                        required:
+                        - name
+                        - type
+                        - level
+                        - flags
+                        - default_value
+                        - min
+                        - max
+                        - enum_allowed
+                        - desc
+                        - long_desc
+                        - tags
+                        - see_also
+                        type: object
+                    required:
+                    - Option_name
+                    type: object
+                required:
+                - name
+                - enabled
+                - always_on
+                - options
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List Mgr modules
+      tags:
+      - MgrModule
+  /api/mgr/module/{module_name}:
+    get:
+      description: "\n        Retrieve the values of the persistent configuration\
+        \ settings.\n        :param module_name: The name of the Ceph Mgr module.\n\
+        \        :type module_name: str\n        :return: The values of the module\
+        \ options.\n        :rtype: dict\n        "
+      parameters:
+      - in: path
+        name: module_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MgrModule
+    put:
+      description: "\n        Set the values of the persistent configuration settings.\n\
+        \        :param module_name: The name of the Ceph Mgr module.\n        :type\
+        \ module_name: str\n        :param config: The values of the module options\
+        \ to be stored.\n        :type config: dict\n        "
+      parameters:
+      - in: path
+        name: module_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                config:
+                  type: string
+              required:
+              - config
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MgrModule
+  /api/mgr/module/{module_name}/disable:
+    post:
+      description: "\n        Disable the specified Ceph Mgr module.\n        :param\
+        \ module_name: The name of the Ceph Mgr module.\n        :type module_name:\
+        \ str\n        "
+      parameters:
+      - in: path
+        name: module_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MgrModule
+  /api/mgr/module/{module_name}/enable:
+    post:
+      description: "\n        Enable the specified Ceph Mgr module.\n        :param\
+        \ module_name: The name of the Ceph Mgr module.\n        :type module_name:\
+        \ str\n        "
+      parameters:
+      - in: path
+        name: module_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MgrModule
+  /api/mgr/module/{module_name}/options:
+    get:
+      description: "\n        Get the module options of the specified Ceph Mgr module.\n\
+        \        :param module_name: The name of the Ceph Mgr module.\n        :type\
+        \ module_name: str\n        :return: The module options as list of dicts.\n\
+        \        :rtype: list\n        "
+      parameters:
+      - in: path
+        name: module_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MgrModule
+  /api/monitor:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  in_quorum:
+                    description: ''
+                    items:
+                      properties:
+                        addr:
+                          description: ''
+                          type: string
+                        name:
+                          description: ''
+                          type: string
+                        priority:
+                          description: ''
+                          type: integer
+                        public_addr:
+                          description: ''
+                          type: string
+                        public_addrs:
+                          description: ''
+                          properties:
+                            addrvec:
+                              description: ''
+                              items:
+                                properties:
+                                  addr:
+                                    description: ''
+                                    type: string
+                                  nonce:
+                                    description: ''
+                                    type: integer
+                                  type:
+                                    description: ''
+                                    type: string
+                                required:
+                                - type
+                                - addr
+                                - nonce
+                                type: object
+                              type: array
+                          required:
+                          - addrvec
+                          type: object
+                        rank:
+                          description: ''
+                          type: integer
+                        stats:
+                          description: ''
+                          properties:
+                            num_sessions:
+                              description: ''
+                              items:
+                                type: integer
+                              type: array
+                          required:
+                          - num_sessions
+                          type: object
+                        weight:
+                          description: ''
+                          type: integer
+                      required:
+                      - rank
+                      - name
+                      - public_addrs
+                      - addr
+                      - public_addr
+                      - priority
+                      - weight
+                      - stats
+                      type: object
+                    type: array
+                  mon_status:
+                    description: ''
+                    properties:
+                      election_epoch:
+                        description: ''
+                        type: integer
+                      extra_probe_peers:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      feature_map:
+                        description: ''
+                        properties:
+                          client:
+                            description: ''
+                            items:
+                              properties:
+                                features:
+                                  description: ''
+                                  type: string
+                                num:
+                                  description: ''
+                                  type: integer
+                                release:
+                                  description: ''
+                                  type: string
+                              required:
+                              - features
+                              - release
+                              - num
+                              type: object
+                            type: array
+                          mds:
+                            description: ''
+                            items:
+                              properties:
+                                features:
+                                  description: ''
+                                  type: string
+                                num:
+                                  description: ''
+                                  type: integer
+                                release:
+                                  description: ''
+                                  type: string
+                              required:
+                              - features
+                              - release
+                              - num
+                              type: object
+                            type: array
+                          mgr:
+                            description: ''
+                            items:
+                              properties:
+                                features:
+                                  description: ''
+                                  type: string
+                                num:
+                                  description: ''
+                                  type: integer
+                                release:
+                                  description: ''
+                                  type: string
+                              required:
+                              - features
+                              - release
+                              - num
+                              type: object
+                            type: array
+                          mon:
+                            description: ''
+                            items:
+                              properties:
+                                features:
+                                  description: ''
+                                  type: string
+                                num:
+                                  description: ''
+                                  type: integer
+                                release:
+                                  description: ''
+                                  type: string
+                              required:
+                              - features
+                              - release
+                              - num
+                              type: object
+                            type: array
+                        required:
+                        - mon
+                        - mds
+                        - client
+                        - mgr
+                        type: object
+                      features:
+                        description: ''
+                        properties:
+                          quorum_con:
+                            description: ''
+                            type: string
+                          quorum_mon:
+                            description: ''
+                            items:
+                              type: string
+                            type: array
+                          required_con:
+                            description: ''
+                            type: string
+                          required_mon:
+                            description: ''
+                            items:
+                              type: integer
+                            type: array
+                        required:
+                        - required_con
+                        - required_mon
+                        - quorum_con
+                        - quorum_mon
+                        type: object
+                      monmap:
+                        description: ''
+                        properties:
+                          created:
+                            description: ''
+                            type: string
+                          epoch:
+                            description: ''
+                            type: integer
+                          features:
+                            description: ''
+                            properties:
+                              optional:
+                                description: ''
+                                items:
+                                  type: string
+                                type: array
+                              persistent:
+                                description: ''
+                                items:
+                                  type: string
+                                type: array
+                            required:
+                            - persistent
+                            - optional
+                            type: object
+                          fsid:
+                            description: ''
+                            type: string
+                          min_mon_release:
+                            description: ''
+                            type: integer
+                          min_mon_release_name:
+                            description: ''
+                            type: string
+                          modified:
+                            description: ''
+                            type: string
+                          mons:
+                            description: ''
+                            items:
+                              properties:
+                                addr:
+                                  description: ''
+                                  type: string
+                                name:
+                                  description: ''
+                                  type: string
+                                priority:
+                                  description: ''
+                                  type: integer
+                                public_addr:
+                                  description: ''
+                                  type: string
+                                public_addrs:
+                                  description: ''
+                                  properties:
+                                    addrvec:
+                                      description: ''
+                                      items:
+                                        properties:
+                                          addr:
+                                            description: ''
+                                            type: string
+                                          nonce:
+                                            description: ''
+                                            type: integer
+                                          type:
+                                            description: ''
+                                            type: string
+                                        required:
+                                        - type
+                                        - addr
+                                        - nonce
+                                        type: object
+                                      type: array
+                                  required:
+                                  - addrvec
+                                  type: object
+                                rank:
+                                  description: ''
+                                  type: integer
+                                stats:
+                                  description: ''
+                                  properties:
+                                    num_sessions:
+                                      description: ''
+                                      items:
+                                        type: integer
+                                      type: array
+                                  required:
+                                  - num_sessions
+                                  type: object
+                                weight:
+                                  description: ''
+                                  type: integer
+                              required:
+                              - rank
+                              - name
+                              - public_addrs
+                              - addr
+                              - public_addr
+                              - priority
+                              - weight
+                              - stats
+                              type: object
+                            type: array
+                        required:
+                        - epoch
+                        - fsid
+                        - modified
+                        - created
+                        - min_mon_release
+                        - min_mon_release_name
+                        - features
+                        - mons
+                        type: object
+                      name:
+                        description: ''
+                        type: string
+                      outside_quorum:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      quorum:
+                        description: ''
+                        items:
+                          type: integer
+                        type: array
+                      quorum_age:
+                        description: ''
+                        type: integer
+                      rank:
+                        description: ''
+                        type: integer
+                      state:
+                        description: ''
+                        type: string
+                      sync_provider:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                    required:
+                    - name
+                    - rank
+                    - state
+                    - election_epoch
+                    - quorum
+                    - quorum_age
+                    - features
+                    - outside_quorum
+                    - extra_probe_peers
+                    - sync_provider
+                    - monmap
+                    - feature_map
+                    type: object
+                  out_quorum:
+                    description: ''
+                    items:
+                      type: integer
+                    type: array
+                required:
+                - mon_status
+                - in_quorum
+                - out_quorum
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get Monitor Details
+      tags:
+      - Monitor
+  /api/nfs-ganesha/daemon:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  cluster_id:
+                    description: Cluster identifier
+                    type: string
+                  daemon_id:
+                    description: Daemon identifier
+                    type: string
+                  desc:
+                    description: Error description (if status==-1)
+                    type: string
+                  status:
+                    description: Status of daemon (1=RUNNING, 0=STOPPED, -1=ERROR
+                    type: integer
+                required:
+                - daemon_id
+                - cluster_id
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List NFS-Ganesha daemons information
+      tags:
+      - NFS-Ganesha
+  /api/nfs-ganesha/export:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  access_type:
+                    description: Export access type
+                    type: string
+                  clients:
+                    description: List of client configurations
+                    items:
+                      properties:
+                        access_type:
+                          description: Client access type
+                          type: string
+                        addresses:
+                          description: list of IP addresses
+                          items:
+                            type: string
+                          type: array
+                        squash:
+                          description: Client squash policy
+                          type: string
+                      required:
+                      - addresses
+                      - access_type
+                      - squash
+                      type: object
+                    type: array
+                  cluster_id:
+                    description: Cluster identifier
+                    type: string
+                  daemons:
+                    description: List of NFS Ganesha daemons identifiers
+                    items:
+                      type: string
+                    type: array
+                  export_id:
+                    description: Export ID
+                    type: integer
+                  fsal:
+                    description: FSAL configuration
+                    properties:
+                      filesystem:
+                        description: CephFS filesystem ID
+                        type: string
+                      name:
+                        description: name of FSAL
+                        type: string
+                      rgw_user_id:
+                        description: RGW user id
+                        type: string
+                      sec_label_xattr:
+                        description: Name of xattr for security label
+                        type: string
+                      user_id:
+                        description: CephX user id
+                        type: string
+                    required:
+                    - name
+                    type: object
+                  path:
+                    description: Export path
+                    type: string
+                  protocols:
+                    description: List of protocol types
+                    items:
+                      type: integer
+                    type: array
+                  pseudo:
+                    description: Pseudo FS path
+                    type: string
+                  security_label:
+                    description: Security label
+                    type: string
+                  squash:
+                    description: Export squash policy
+                    type: string
+                  tag:
+                    description: NFSv3 export tag
+                    type: string
+                  transports:
+                    description: List of transport types
+                    items:
+                      type: string
+                    type: array
+                required:
+                - export_id
+                - path
+                - cluster_id
+                - daemons
+                - pseudo
+                - tag
+                - access_type
+                - squash
+                - security_label
+                - protocols
+                - transports
+                - fsal
+                - clients
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: List all NFS-Ganesha exports
+      tags:
+      - NFS-Ganesha
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                access_type:
+                  description: Export access type
+                  type: string
+                clients:
+                  description: List of client configurations
+                  items:
+                    properties:
+                      access_type:
+                        description: Client access type
+                        type: string
+                      addresses:
+                        description: list of IP addresses
+                        items:
+                          type: string
+                        type: array
+                      squash:
+                        description: Client squash policy
+                        type: string
+                    required:
+                    - addresses
+                    - access_type
+                    - squash
+                    type: object
+                  type: array
+                cluster_id:
+                  description: Cluster identifier
+                  type: string
+                daemons:
+                  description: List of NFS Ganesha daemons identifiers
+                  items:
+                    type: string
+                  type: array
+                fsal:
+                  description: FSAL configuration
+                  properties:
+                    filesystem:
+                      description: CephFS filesystem ID
+                      type: string
+                    name:
+                      description: name of FSAL
+                      type: string
+                    rgw_user_id:
+                      description: RGW user id
+                      type: string
+                    sec_label_xattr:
+                      description: Name of xattr for security label
+                      type: string
+                    user_id:
+                      description: CephX user id
+                      type: string
+                  required:
+                  - name
+                  type: object
+                path:
+                  description: Export path
+                  type: string
+                protocols:
+                  description: List of protocol types
+                  items:
+                    type: integer
+                  type: array
+                pseudo:
+                  description: Pseudo FS path
+                  type: string
+                reload_daemons:
+                  default: true
+                  description: Trigger reload of NFS-Ganesha daemons configuration
+                  type: boolean
+                security_label:
+                  description: Security label
+                  type: string
+                squash:
+                  description: Export squash policy
+                  type: string
+                tag:
+                  description: NFSv3 export tag
+                  type: string
+                transports:
+                  description: List of transport types
+                  items:
+                    type: string
+                  type: array
+              required:
+              - path
+              - cluster_id
+              - daemons
+              - pseudo
+              - tag
+              - access_type
+              - squash
+              - security_label
+              - protocols
+              - transports
+              - fsal
+              - clients
+              type: object
+      responses:
+        '201':
+          content:
+            application/json:
+              schema:
+                properties:
+                  access_type:
+                    description: Export access type
+                    type: string
+                  clients:
+                    description: List of client configurations
+                    items:
+                      properties:
+                        access_type:
+                          description: Client access type
+                          type: string
+                        addresses:
+                          description: list of IP addresses
+                          items:
+                            type: string
+                          type: array
+                        squash:
+                          description: Client squash policy
+                          type: string
+                      required:
+                      - addresses
+                      - access_type
+                      - squash
+                      type: object
+                    type: array
+                  cluster_id:
+                    description: Cluster identifier
+                    type: string
+                  daemons:
+                    description: List of NFS Ganesha daemons identifiers
+                    items:
+                      type: string
+                    type: array
+                  export_id:
+                    description: Export ID
+                    type: integer
+                  fsal:
+                    description: FSAL configuration
+                    properties:
+                      filesystem:
+                        description: CephFS filesystem ID
+                        type: string
+                      name:
+                        description: name of FSAL
+                        type: string
+                      rgw_user_id:
+                        description: RGW user id
+                        type: string
+                      sec_label_xattr:
+                        description: Name of xattr for security label
+                        type: string
+                      user_id:
+                        description: CephX user id
+                        type: string
+                    required:
+                    - name
+                    type: object
+                  path:
+                    description: Export path
+                    type: string
+                  protocols:
+                    description: List of protocol types
+                    items:
+                      type: integer
+                    type: array
+                  pseudo:
+                    description: Pseudo FS path
+                    type: string
+                  security_label:
+                    description: Security label
+                    type: string
+                  squash:
+                    description: Export squash policy
+                    type: string
+                  tag:
+                    description: NFSv3 export tag
+                    type: string
+                  transports:
+                    description: List of transport types
+                    items:
+                      type: string
+                    type: array
+                required:
+                - export_id
+                - path
+                - cluster_id
+                - daemons
+                - pseudo
+                - tag
+                - access_type
+                - squash
+                - security_label
+                - protocols
+                - transports
+                - fsal
+                - clients
+                type: object
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Creates a new NFS-Ganesha export
+      tags:
+      - NFS-Ganesha
+  /api/nfs-ganesha/export/{cluster_id}/{export_id}:
+    delete:
+      parameters:
+      - description: Cluster identifier
+        in: path
+        name: cluster_id
+        required: true
+        schema:
+          type: string
+      - description: Export ID
+        in: path
+        name: export_id
+        required: true
+        schema:
+          type: integer
+      - default: true
+        description: Trigger reload of NFS-Ganesha daemons configuration
+        in: query
+        name: reload_daemons
+        schema:
+          type: boolean
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Deletes an NFS-Ganesha export
+      tags:
+      - NFS-Ganesha
+    get:
+      parameters:
+      - description: Cluster identifier
+        in: path
+        name: cluster_id
+        required: true
+        schema:
+          type: string
+      - description: Export ID
+        in: path
+        name: export_id
+        required: true
+        schema:
+          type: integer
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  access_type:
+                    description: Export access type
+                    type: string
+                  clients:
+                    description: List of client configurations
+                    items:
+                      properties:
+                        access_type:
+                          description: Client access type
+                          type: string
+                        addresses:
+                          description: list of IP addresses
+                          items:
+                            type: string
+                          type: array
+                        squash:
+                          description: Client squash policy
+                          type: string
+                      required:
+                      - addresses
+                      - access_type
+                      - squash
+                      type: object
+                    type: array
+                  cluster_id:
+                    description: Cluster identifier
+                    type: string
+                  daemons:
+                    description: List of NFS Ganesha daemons identifiers
+                    items:
+                      type: string
+                    type: array
+                  export_id:
+                    description: Export ID
+                    type: integer
+                  fsal:
+                    description: FSAL configuration
+                    properties:
+                      filesystem:
+                        description: CephFS filesystem ID
+                        type: string
+                      name:
+                        description: name of FSAL
+                        type: string
+                      rgw_user_id:
+                        description: RGW user id
+                        type: string
+                      sec_label_xattr:
+                        description: Name of xattr for security label
+                        type: string
+                      user_id:
+                        description: CephX user id
+                        type: string
+                    required:
+                    - name
+                    type: object
+                  path:
+                    description: Export path
+                    type: string
+                  protocols:
+                    description: List of protocol types
+                    items:
+                      type: integer
+                    type: array
+                  pseudo:
+                    description: Pseudo FS path
+                    type: string
+                  security_label:
+                    description: Security label
+                    type: string
+                  squash:
+                    description: Export squash policy
+                    type: string
+                  tag:
+                    description: NFSv3 export tag
+                    type: string
+                  transports:
+                    description: List of transport types
+                    items:
+                      type: string
+                    type: array
+                required:
+                - export_id
+                - path
+                - cluster_id
+                - daemons
+                - pseudo
+                - tag
+                - access_type
+                - squash
+                - security_label
+                - protocols
+                - transports
+                - fsal
+                - clients
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get an NFS-Ganesha export
+      tags:
+      - NFS-Ganesha
+    put:
+      parameters:
+      - description: Cluster identifier
+        in: path
+        name: cluster_id
+        required: true
+        schema:
+          type: string
+      - description: Export ID
+        in: path
+        name: export_id
+        required: true
+        schema:
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                access_type:
+                  description: Export access type
+                  type: string
+                clients:
+                  description: List of client configurations
+                  items:
+                    properties:
+                      access_type:
+                        description: Client access type
+                        type: string
+                      addresses:
+                        description: list of IP addresses
+                        items:
+                          type: string
+                        type: array
+                      squash:
+                        description: Client squash policy
+                        type: string
+                    required:
+                    - addresses
+                    - access_type
+                    - squash
+                    type: object
+                  type: array
+                daemons:
+                  description: List of NFS Ganesha daemons identifiers
+                  items:
+                    type: string
+                  type: array
+                fsal:
+                  description: FSAL configuration
+                  properties:
+                    filesystem:
+                      description: CephFS filesystem ID
+                      type: string
+                    name:
+                      description: name of FSAL
+                      type: string
+                    rgw_user_id:
+                      description: RGW user id
+                      type: string
+                    sec_label_xattr:
+                      description: Name of xattr for security label
+                      type: string
+                    user_id:
+                      description: CephX user id
+                      type: string
+                  required:
+                  - name
+                  type: object
+                path:
+                  description: Export path
+                  type: string
+                protocols:
+                  description: List of protocol types
+                  items:
+                    type: integer
+                  type: array
+                pseudo:
+                  description: Pseudo FS path
+                  type: string
+                reload_daemons:
+                  default: true
+                  description: Trigger reload of NFS-Ganesha daemons configuration
+                  type: boolean
+                security_label:
+                  description: Security label
+                  type: string
+                squash:
+                  description: Export squash policy
+                  type: string
+                tag:
+                  description: NFSv3 export tag
+                  type: string
+                transports:
+                  description: List of transport types
+                  items:
+                    type: string
+                  type: array
+              required:
+              - path
+              - daemons
+              - pseudo
+              - tag
+              - access_type
+              - squash
+              - security_label
+              - protocols
+              - transports
+              - fsal
+              - clients
+              type: object
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  access_type:
+                    description: Export access type
+                    type: string
+                  clients:
+                    description: List of client configurations
+                    items:
+                      properties:
+                        access_type:
+                          description: Client access type
+                          type: string
+                        addresses:
+                          description: list of IP addresses
+                          items:
+                            type: string
+                          type: array
+                        squash:
+                          description: Client squash policy
+                          type: string
+                      required:
+                      - addresses
+                      - access_type
+                      - squash
+                      type: object
+                    type: array
+                  cluster_id:
+                    description: Cluster identifier
+                    type: string
+                  daemons:
+                    description: List of NFS Ganesha daemons identifiers
+                    items:
+                      type: string
+                    type: array
+                  export_id:
+                    description: Export ID
+                    type: integer
+                  fsal:
+                    description: FSAL configuration
+                    properties:
+                      filesystem:
+                        description: CephFS filesystem ID
+                        type: string
+                      name:
+                        description: name of FSAL
+                        type: string
+                      rgw_user_id:
+                        description: RGW user id
+                        type: string
+                      sec_label_xattr:
+                        description: Name of xattr for security label
+                        type: string
+                      user_id:
+                        description: CephX user id
+                        type: string
+                    required:
+                    - name
+                    type: object
+                  path:
+                    description: Export path
+                    type: string
+                  protocols:
+                    description: List of protocol types
+                    items:
+                      type: integer
+                    type: array
+                  pseudo:
+                    description: Pseudo FS path
+                    type: string
+                  security_label:
+                    description: Security label
+                    type: string
+                  squash:
+                    description: Export squash policy
+                    type: string
+                  tag:
+                    description: NFSv3 export tag
+                    type: string
+                  transports:
+                    description: List of transport types
+                    items:
+                      type: string
+                    type: array
+                required:
+                - export_id
+                - path
+                - cluster_id
+                - daemons
+                - pseudo
+                - tag
+                - access_type
+                - squash
+                - security_label
+                - protocols
+                - transports
+                - fsal
+                - clients
+                type: object
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Updates an NFS-Ganesha export
+      tags:
+      - NFS-Ganesha
+  /api/nfs-ganesha/status:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  available:
+                    description: Is API available?
+                    type: boolean
+                  message:
+                    description: Error message
+                    type: string
+                required:
+                - available
+                - message
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Status of NFS-Ganesha management feature
+      tags:
+      - NFS-Ganesha
+  /api/orchestrator/identify_device:
+    post:
+      description: "\n        Identify a device by switching on the device light for\
+        \ N seconds.\n        :param hostname: The hostname of the device to process.\n\
+        \        :param device: The device identifier to process, e.g. ``/dev/dm-0``\
+        \ or\n        ``ABC1234DEF567-1R1234_ABC8DE0Q``.\n        :param duration:\
+        \ The duration in seconds how long the LED should flash.\n        "
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                device:
+                  type: string
+                duration:
+                  type: string
+                hostname:
+                  type: string
+              required:
+              - hostname
+              - device
+              - duration
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Orchestrator
+  /api/orchestrator/inventory:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        in: query
+        name: hostname
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: refresh
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OrchestratorInventory
+  /api/orchestrator/status:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  available:
+                    description: Orchestrator status
+                    type: boolean
+                  description:
+                    description: Description
+                    type: string
+                required:
+                - available
+                - description
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Orchestrator Status
+      tags:
+      - Orchestrator
+  /api/osd:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                data:
+                  type: string
+                method:
+                  type: string
+                tracking_id:
+                  type: string
+              required:
+              - method
+              - data
+              - tracking_id
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/flags:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  list_of_flags:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                required:
+                - list_of_flags
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display OSD Flags
+      tags:
+      - OSD
+    put:
+      description: "\n        The `recovery_deletes`, `sortbitwise` and `pglog_hardlimit`\
+        \ flags cannot be unset.\n        `purged_snapshots` cannot even be set. It\
+        \ is therefore required to at\n        least include those four flags for\
+        \ a successful operation.\n        "
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                flags:
+                  type: string
+              required:
+              - flags
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/safe_to_delete:
+    get:
+      description: "\n        :type ids: int|[int]\n        "
+      parameters:
+      - in: query
+        name: svc_ids
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/safe_to_destroy:
+    get:
+      description: "\n        :type ids: int|[int]\n        "
+      parameters:
+      - description: OSD Service Identifier
+        in: query
+        name: ids
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  active:
+                    description: ''
+                    items:
+                      type: integer
+                    type: array
+                  is_safe_to_destroy:
+                    description: Is OSD safe to destroy?
+                    type: boolean
+                  missing_stats:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  safe_to_destroy:
+                    description: Is OSD safe to destroy?
+                    items:
+                      type: string
+                    type: array
+                  stored_pgs:
+                    description: Stored Pool groups in Osd
+                    items:
+                      type: string
+                    type: array
+                required:
+                - safe_to_destroy
+                - active
+                - missing_stats
+                - stored_pgs
+                - is_safe_to_destroy
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Check If OSD is Safe to Destroy
+      tags:
+      - OSD
+  /api/osd/{svc_id}:
+    delete:
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: preserve_id
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: force
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+    get:
+      description: "\n        Returns collected data about an OSD.\n\n        :return:\
+        \ Returns the requested data.\n        "
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+    put:
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                device_class:
+                  type: string
+              required:
+              - device_class
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/destroy:
+    post:
+      description: "\n        Mark osd as being destroyed. Keeps the ID intact (allowing\
+        \ reuse), but\n        removes cephx keys, config-key data and lockbox keys,\
+        \ rendering data\n        permanently unreadable.\n\n        The osd must\
+        \ be marked down before being destroyed.\n        "
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/devices:
+    get:
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/histogram:
+    get:
+      description: "\n        :return: Returns the histogram data.\n        "
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/mark:
+    put:
+      description: "\n        Note: osd must be marked `down` before marking lost.\n\
+        \        "
+      parameters:
+      - description: SVC ID
+        in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                action:
+                  type: string
+              required:
+              - action
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Mark OSD flags (out, in, down, lost, ...)
+      tags:
+      - OSD
+  /api/osd/{svc_id}/purge:
+    post:
+      description: "\n        Note: osd must be marked `down` before removal.\n  \
+        \      "
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/reweight:
+    post:
+      description: "\n        Reweights the OSD temporarily.\n\n        Note that\
+        \ \u2018ceph osd reweight\u2019 is not a persistent setting. When an OSD\n\
+        \        gets marked out, the osd weight will be set to 0. When it gets marked\n\
+        \        in again, the weight will be changed to 1.\n\n        Because of\
+        \ this \u2018ceph osd reweight\u2019 is a temporary solution. You should\n\
+        \        only use it to keep your cluster running while you\u2019re ordering\
+        \ more\n        hardware.\n\n        - Craig Lewis (http://lists.ceph.com/pipermail/ceph-users-ceph.com/2014-June/040967.html)\n\
+        \        "
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                weight:
+                  type: string
+              required:
+              - weight
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/scrub:
+    post:
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      - default: false
+        in: query
+        name: deep
+        schema:
+          type: boolean
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                deep:
+                  default: false
+                  type: boolean
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/osd/{svc_id}/smart:
+    get:
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OSD
+  /api/perf_counters:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  mon.a:
+                    description: Service ID
+                    properties:
+                      .cache_bytes:
+                        description: ''
+                        properties:
+                          description:
+                            description: ''
+                            type: string
+                          nick:
+                            description: ''
+                            type: string
+                          priority:
+                            description: ''
+                            type: integer
+                          type:
+                            description: ''
+                            type: integer
+                          units:
+                            description: ''
+                            type: integer
+                          value:
+                            description: ''
+                            type: integer
+                        required:
+                        - description
+                        - nick
+                        - type
+                        - priority
+                        - units
+                        - value
+                        type: object
+                    required:
+                    - .cache_bytes
+                    type: object
+                required:
+                - mon.a
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Perf Counters
+      tags:
+      - PerfCounters
+  /api/perf_counters/mds/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MdsPerfCounter
+  /api/perf_counters/mgr/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MgrPerfCounter
+  /api/perf_counters/mon/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - MonPerfCounter
+  /api/perf_counters/osd/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - OsdPerfCounter
+  /api/perf_counters/rbd-mirror/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwMirrorPerfCounter
+  /api/perf_counters/rgw/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwPerfCounter
+  /api/perf_counters/tcmu-runner/{service_id}:
+    get:
+      parameters:
+      - in: path
+        name: service_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - TcmuRunnerPerfCounter
+  /api/pool:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        description: Pool Attributes
+        in: query
+        name: attrs
+        schema:
+          type: string
+      - default: false
+        description: Pool Stats
+        in: query
+        name: stats
+        schema:
+          type: boolean
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  application_metadata:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  auid:
+                    description: ''
+                    type: integer
+                  cache_min_evict_age:
+                    description: ''
+                    type: integer
+                  cache_min_flush_age:
+                    description: ''
+                    type: integer
+                  cache_mode:
+                    description: ''
+                    type: string
+                  cache_target_dirty_high_ratio_micro:
+                    description: ''
+                    type: integer
+                  cache_target_dirty_ratio_micro:
+                    description: ''
+                    type: integer
+                  cache_target_full_ratio_micro:
+                    description: ''
+                    type: integer
+                  create_time:
+                    description: ''
+                    type: string
+                  crush_rule:
+                    description: ''
+                    type: string
+                  erasure_code_profile:
+                    description: ''
+                    type: string
+                  expected_num_objects:
+                    description: ''
+                    type: integer
+                  fast_read:
+                    description: ''
+                    type: boolean
+                  flags:
+                    description: ''
+                    type: integer
+                  flags_names:
+                    description: flags name
+                    type: string
+                  grade_table:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  hit_set_count:
+                    description: ''
+                    type: integer
+                  hit_set_grade_decay_rate:
+                    description: ''
+                    type: integer
+                  hit_set_params:
+                    description: ''
+                    properties:
+                      type:
+                        description: ''
+                        type: string
+                    required:
+                    - type
+                    type: object
+                  hit_set_period:
+                    description: ''
+                    type: integer
+                  hit_set_search_last_n:
+                    description: ''
+                    type: integer
+                  last_change:
+                    description: ''
+                    type: string
+                  last_force_op_resend:
+                    description: ''
+                    type: string
+                  last_force_op_resend_preluminous:
+                    description: ''
+                    type: string
+                  last_force_op_resend_prenautilus:
+                    description: ''
+                    type: string
+                  last_pg_merge_meta:
+                    description: ''
+                    properties:
+                      last_epoch_clean:
+                        description: ''
+                        type: integer
+                      last_epoch_started:
+                        description: ''
+                        type: integer
+                      ready_epoch:
+                        description: ''
+                        type: integer
+                      source_pgid:
+                        description: ''
+                        type: string
+                      source_version:
+                        description: ''
+                        type: string
+                      target_version:
+                        description: ''
+                        type: string
+                    required:
+                    - ready_epoch
+                    - last_epoch_started
+                    - last_epoch_clean
+                    - source_pgid
+                    - source_version
+                    - target_version
+                    type: object
+                  min_read_recency_for_promote:
+                    description: ''
+                    type: integer
+                  min_size:
+                    description: ''
+                    type: integer
+                  min_write_recency_for_promote:
+                    description: ''
+                    type: integer
+                  object_hash:
+                    description: ''
+                    type: integer
+                  options:
+                    description: ''
+                    properties:
+                      pg_num_min:
+                        description: ''
+                        type: integer
+                    required:
+                    - pg_num_min
+                    type: object
+                  pg_autoscale_mode:
+                    description: ''
+                    type: string
+                  pg_num:
+                    description: ''
+                    type: integer
+                  pg_num_pending:
+                    description: ''
+                    type: integer
+                  pg_num_target:
+                    description: ''
+                    type: integer
+                  pg_placement_num:
+                    description: ''
+                    type: integer
+                  pg_placement_num_target:
+                    description: ''
+                    type: integer
+                  pool:
+                    description: pool id
+                    type: integer
+                  pool_name:
+                    description: pool name
+                    type: string
+                  pool_snaps:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  quota_max_bytes:
+                    description: ''
+                    type: integer
+                  quota_max_objects:
+                    description: ''
+                    type: integer
+                  read_tier:
+                    description: ''
+                    type: integer
+                  removed_snaps:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  size:
+                    description: pool size
+                    type: integer
+                  snap_epoch:
+                    description: ''
+                    type: integer
+                  snap_mode:
+                    description: ''
+                    type: string
+                  snap_seq:
+                    description: ''
+                    type: integer
+                  stripe_width:
+                    description: ''
+                    type: integer
+                  target_max_bytes:
+                    description: ''
+                    type: integer
+                  target_max_objects:
+                    description: ''
+                    type: integer
+                  tier_of:
+                    description: ''
+                    type: integer
+                  tiers:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  type:
+                    description: type of pool
+                    type: string
+                  use_gmt_hitset:
+                    description: ''
+                    type: boolean
+                  write_tier:
+                    description: ''
+                    type: integer
+                required:
+                - pool
+                - pool_name
+                - flags
+                - flags_names
+                - type
+                - size
+                - min_size
+                - crush_rule
+                - object_hash
+                - pg_autoscale_mode
+                - pg_num
+                - pg_placement_num
+                - pg_placement_num_target
+                - pg_num_target
+                - pg_num_pending
+                - last_pg_merge_meta
+                - auid
+                - snap_mode
+                - snap_seq
+                - snap_epoch
+                - pool_snaps
+                - quota_max_bytes
+                - quota_max_objects
+                - tiers
+                - tier_of
+                - read_tier
+                - write_tier
+                - cache_mode
+                - target_max_bytes
+                - target_max_objects
+                - cache_target_dirty_ratio_micro
+                - cache_target_dirty_high_ratio_micro
+                - cache_target_full_ratio_micro
+                - cache_min_flush_age
+                - cache_min_evict_age
+                - erasure_code_profile
+                - hit_set_params
+                - hit_set_period
+                - hit_set_count
+                - use_gmt_hitset
+                - min_read_recency_for_promote
+                - min_write_recency_for_promote
+                - hit_set_grade_decay_rate
+                - hit_set_search_last_n
+                - grade_table
+                - stripe_width
+                - expected_num_objects
+                - fast_read
+                - options
+                - application_metadata
+                - create_time
+                - last_change
+                - last_force_op_resend
+                - last_force_op_resend_prenautilus
+                - last_force_op_resend_preluminous
+                - removed_snaps
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Pool List
+      tags:
+      - Pool
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                application_metadata:
+                  type: string
+                configuration:
+                  type: string
+                erasure_code_profile:
+                  type: string
+                flags:
+                  type: string
+                pg_num:
+                  type: integer
+                pool:
+                  type: string
+                pool_type:
+                  type: string
+                rule_name:
+                  type: string
+              required:
+              - pool
+              - pg_num
+              - pool_type
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Pool
+  /api/pool/{pool_name}:
+    delete:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Pool
+    get:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: attrs
+        schema:
+          type: string
+      - default: false
+        in: query
+        name: stats
+        schema:
+          type: boolean
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Pool
+    put:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                application_metadata:
+                  type: string
+                configuration:
+                  type: string
+                flags:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Pool
+  /api/pool/{pool_name}/configuration:
+    get:
+      parameters:
+      - in: path
+        name: pool_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Pool
+  /api/prometheus:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Prometheus
+  /api/prometheus/notifications:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - PrometheusNotifications
+  /api/prometheus/rules:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Prometheus
+  /api/prometheus/silence:
+    post:
+      parameters: []
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Prometheus
+  /api/prometheus/silence/{s_id}:
+    delete:
+      parameters:
+      - in: path
+        name: s_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Prometheus
+  /api/prometheus/silences:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Prometheus
+  /api/rgw/bucket:
+    get:
+      parameters:
+      - default: false
+        in: query
+        name: stats
+        schema:
+          type: boolean
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwBucket
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                bucket:
+                  type: string
+                lock_enabled:
+                  default: 'false'
+                  type: string
+                lock_mode:
+                  type: string
+                lock_retention_period_days:
+                  type: string
+                lock_retention_period_years:
+                  type: string
+                placement_target:
+                  type: string
+                uid:
+                  type: string
+                zonegroup:
+                  type: string
+              required:
+              - bucket
+              - uid
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwBucket
+  /api/rgw/bucket/{bucket}:
+    delete:
+      parameters:
+      - in: path
+        name: bucket
+        required: true
+        schema:
+          type: string
+      - default: 'true'
+        in: query
+        name: purge_objects
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwBucket
+    get:
+      parameters:
+      - in: path
+        name: bucket
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwBucket
+    put:
+      parameters:
+      - in: path
+        name: bucket
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                bucket_id:
+                  type: string
+                lock_mode:
+                  type: string
+                lock_retention_period_days:
+                  type: string
+                lock_retention_period_years:
+                  type: string
+                mfa_delete:
+                  type: string
+                mfa_token_pin:
+                  type: string
+                mfa_token_serial:
+                  type: string
+                uid:
+                  type: string
+                versioning_state:
+                  type: string
+              required:
+              - bucket_id
+              - uid
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwBucket
+  /api/rgw/daemon:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  id:
+                    description: Daemon ID
+                    type: string
+                  server_hostname:
+                    description: ''
+                    type: string
+                  version:
+                    description: Ceph Version
+                    type: string
+                required:
+                - id
+                - version
+                - server_hostname
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display RGW Daemons
+      tags:
+      - RgwDaemon
+  /api/rgw/daemon/{svc_id}:
+    get:
+      parameters:
+      - in: path
+        name: svc_id
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwDaemon
+  /api/rgw/site:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        in: query
+        name: query
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwSite
+  /api/rgw/status:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  available:
+                    description: Is RGW available?
+                    type: boolean
+                  message:
+                    description: Descriptions
+                    type: string
+                required:
+                - available
+                - message
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display RGW Status
+      tags:
+      - Rgw
+  /api/rgw/user:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  list_of_users:
+                    description: list of rgw users
+                    items:
+                      type: string
+                    type: array
+                required:
+                - list_of_users
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display RGW Users
+      tags:
+      - RgwUser
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                access_key:
+                  type: string
+                display_name:
+                  type: string
+                email:
+                  type: string
+                generate_key:
+                  type: string
+                max_buckets:
+                  type: string
+                secret_key:
+                  type: string
+                suspended:
+                  type: string
+                uid:
+                  type: string
+              required:
+              - uid
+              - display_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/get_emails:
+    get:
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/{uid}:
+    delete:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+    get:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+    put:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                display_name:
+                  type: string
+                email:
+                  type: string
+                max_buckets:
+                  type: string
+                suspended:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/{uid}/capability:
+    delete:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      - in: query
+        name: type
+        required: true
+        schema:
+          type: string
+      - in: query
+        name: perm
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+    post:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                perm:
+                  type: string
+                type:
+                  type: string
+              required:
+              - type
+              - perm
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/{uid}/key:
+    delete:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      - default: s3
+        in: query
+        name: key_type
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: subuser
+        schema:
+          type: string
+      - allowEmptyValue: true
+        in: query
+        name: access_key
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+    post:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                access_key:
+                  type: string
+                generate_key:
+                  default: 'true'
+                  type: string
+                key_type:
+                  default: s3
+                  type: string
+                secret_key:
+                  type: string
+                subuser:
+                  type: string
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/{uid}/quota:
+    get:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+    put:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                enabled:
+                  type: string
+                max_objects:
+                  type: string
+                max_size_kb:
+                  type: integer
+                quota_type:
+                  type: string
+              required:
+              - quota_type
+              - enabled
+              - max_size_kb
+              - max_objects
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/{uid}/subuser:
+    post:
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                access:
+                  type: string
+                access_key:
+                  type: string
+                generate_secret:
+                  default: 'true'
+                  type: string
+                key_type:
+                  default: s3
+                  type: string
+                secret_key:
+                  type: string
+                subuser:
+                  type: string
+              required:
+              - subuser
+              - access
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/rgw/user/{uid}/subuser/{subuser}:
+    delete:
+      description: "\n        :param purge_keys: Set to False to do not purge the\
+        \ keys.\n                           Note, this only works for s3 subusers.\n\
+        \        "
+      parameters:
+      - in: path
+        name: uid
+        required: true
+        schema:
+          type: string
+      - in: path
+        name: subuser
+        required: true
+        schema:
+          type: string
+      - default: 'true'
+        in: query
+        name: purge_keys
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - RgwUser
+  /api/role:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  description:
+                    description: Role Descriptions
+                    type: string
+                  name:
+                    description: Role Name
+                    type: string
+                  scopes_permissions:
+                    description: ''
+                    properties:
+                      cephfs:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                    required:
+                    - cephfs
+                    type: object
+                  system:
+                    description: ''
+                    type: boolean
+                required:
+                - name
+                - description
+                - scopes_permissions
+                - system
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Role list
+      tags:
+      - Role
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                description:
+                  type: string
+                name:
+                  type: string
+                scopes_permissions:
+                  type: string
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Role
+  /api/role/{name}:
+    delete:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Role
+    get:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Role
+    put:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                description:
+                  type: string
+                scopes_permissions:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Role
+  /api/role/{name}/clone:
+    post:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                new_name:
+                  type: string
+              required:
+              - new_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Role
+  /api/service:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        in: query
+        name: service_name
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
+    post:
+      description: "\n        :param service_spec: The service specification as JSON.\n\
+        \        :param service_name: The service name, e.g. 'alertmanager'.\n   \
+        \     :return: None\n        "
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                service_name:
+                  type: string
+                service_spec:
+                  type: string
+              required:
+              - service_spec
+              - service_name
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
+  /api/service/known_types:
+    get:
+      description: "\n        Get a list of known service types, e.g. 'alertmanager',\n\
+        \        'node-exporter', 'osd' or 'rgw'.\n        "
+      parameters: []
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
+  /api/service/{service_name}:
+    delete:
+      description: "\n        :param service_name: The service name, e.g. 'mds' or\
+        \ 'crash.foo'.\n        :return: None\n        "
+      parameters:
+      - in: path
+        name: service_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
+    get:
+      parameters:
+      - in: path
+        name: service_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
+  /api/service/{service_name}/daemons:
+    get:
+      parameters:
+      - in: path
+        name: service_name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Service
+  /api/settings:
+    get:
+      description: "\n        Get the list of available options.\n        :param names:\
+        \ A comma separated list of option names that should\n        be processed.\
+        \ Defaults to ``None``.\n        :type names: None|str\n        :return: A\
+        \ list of available options.\n        :rtype: list[dict]\n        "
+      parameters:
+      - allowEmptyValue: true
+        description: Name of Settings
+        in: query
+        name: names
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  default:
+                    description: Default Settings
+                    type: boolean
+                  name:
+                    description: Settings Name
+                    type: string
+                  type:
+                    description: Type of Settings
+                    type: string
+                  value:
+                    description: Settings Value
+                    type: boolean
+                required:
+                - name
+                - default
+                - type
+                - value
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Settings Information
+      tags:
+      - Settings
+    put:
+      parameters: []
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Settings
+  /api/settings/{name}:
+    delete:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Settings
+    get:
+      description: "\n        Get the given option.\n        :param name: The name\
+        \ of the option.\n        :return: Returns a dict containing the name, type,\n\
+        \        default value and current value of the given option.\n        :rtype:\
+        \ dict\n        "
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Settings
+    put:
+      parameters:
+      - in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                value:
+                  type: string
+              required:
+              - value
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Settings
+  /api/summary:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  executing_tasks:
+                    description: ''
+                    items:
+                      type: string
+                    type: array
+                  finished_tasks:
+                    description: ''
+                    items:
+                      properties:
+                        begin_time:
+                          description: ''
+                          type: string
+                        duration:
+                          description: ''
+                          type: integer
+                        end_time:
+                          description: ''
+                          type: string
+                        exception:
+                          description: ''
+                          type: string
+                        metadata:
+                          description: ''
+                          properties:
+                            pool:
+                              description: ''
+                              type: integer
+                          required:
+                          - pool
+                          type: object
+                        name:
+                          description: ''
+                          type: string
+                        progress:
+                          description: ''
+                          type: integer
+                        ret_value:
+                          description: ''
+                          type: string
+                        success:
+                          description: ''
+                          type: boolean
+                      required:
+                      - name
+                      - metadata
+                      - begin_time
+                      - end_time
+                      - duration
+                      - progress
+                      - success
+                      - ret_value
+                      - exception
+                      type: object
+                    type: array
+                  have_mon_connection:
+                    description: ''
+                    type: string
+                  health_status:
+                    description: ''
+                    type: string
+                  mgr_host:
+                    description: ''
+                    type: string
+                  mgr_id:
+                    description: ''
+                    type: string
+                  rbd_mirroring:
+                    description: ''
+                    properties:
+                      errors:
+                        description: ''
+                        type: integer
+                      warnings:
+                        description: ''
+                        type: integer
+                    required:
+                    - warnings
+                    - errors
+                    type: object
+                  version:
+                    description: ''
+                    type: string
+                required:
+                - health_status
+                - mgr_id
+                - mgr_host
+                - have_mon_connection
+                - executing_tasks
+                - finished_tasks
+                - version
+                - rbd_mirroring
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Summary
+      tags:
+      - Summary
+  /api/task:
+    get:
+      parameters:
+      - allowEmptyValue: true
+        description: Task Name
+        in: query
+        name: name
+        schema:
+          type: string
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  executing_tasks:
+                    description: ongoing executing tasks
+                    type: string
+                  finished_tasks:
+                    description: ''
+                    items:
+                      properties:
+                        begin_time:
+                          description: Task begin time
+                          type: string
+                        duration:
+                          description: ''
+                          type: integer
+                        end_time:
+                          description: Task end time
+                          type: string
+                        exception:
+                          description: ''
+                          type: boolean
+                        metadata:
+                          description: ''
+                          properties:
+                            pool:
+                              description: ''
+                              type: integer
+                          required:
+                          - pool
+                          type: object
+                        name:
+                          description: finished tasks name
+                          type: string
+                        progress:
+                          description: Progress of tasks
+                          type: integer
+                        ret_value:
+                          description: ''
+                          type: boolean
+                        success:
+                          description: ''
+                          type: boolean
+                      required:
+                      - name
+                      - metadata
+                      - begin_time
+                      - end_time
+                      - duration
+                      - progress
+                      - success
+                      - ret_value
+                      - exception
+                      type: object
+                    type: array
+                required:
+                - executing_tasks
+                - finished_tasks
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Display Tasks
+      tags:
+      - Task
+  /api/telemetry:
+    put:
+      description: "\n        Enables or disables sending data collected by the Telemetry\n\
+        \        module.\n        :param enable: Enable or disable sending data\n\
+        \        :type enable: bool\n        :param license_name: License string e.g.\
+        \ 'sharing-1-0' to\n        make sure the user is aware of and accepts the\
+        \ license\n        for sharing Telemetry data.\n        :type license_name:\
+        \ string\n        "
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                enable:
+                  default: true
+                  type: boolean
+                license_name:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - Telemetry
+  /api/telemetry/report:
+    get:
+      description: "\n        Get Ceph and device report data\n        :return: Ceph\
+        \ and device report data\n        :rtype: dict\n        "
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  device_report:
+                    description: ''
+                    type: string
+                  report:
+                    description: ''
+                    properties:
+                      balancer:
+                        description: ''
+                        properties:
+                          active:
+                            description: ''
+                            type: boolean
+                          mode:
+                            description: ''
+                            type: string
+                        required:
+                        - active
+                        - mode
+                        type: object
+                      channels:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      channels_available:
+                        description: ''
+                        items:
+                          type: string
+                        type: array
+                      config:
+                        description: ''
+                        properties:
+                          active_changed:
+                            description: ''
+                            items:
+                              type: string
+                            type: array
+                          cluster_changed:
+                            description: ''
+                            items:
+                              type: string
+                            type: array
+                        required:
+                        - cluster_changed
+                        - active_changed
+                        type: object
+                      crashes:
+                        description: ''
+                        items:
+                          type: integer
+                        type: array
+                      created:
+                        description: ''
+                        type: string
+                      crush:
+                        description: ''
+                        properties:
+                          bucket_algs:
+                            description: ''
+                            properties:
+                              straw2:
+                                description: ''
+                                type: integer
+                            required:
+                            - straw2
+                            type: object
+                          bucket_sizes:
+                            description: ''
+                            properties:
+                              '1':
+                                description: ''
+                                type: integer
+                              '3':
+                                description: ''
+                                type: integer
+                            required:
+                            - '1'
+                            - '3'
+                            type: object
+                          bucket_types:
+                            description: ''
+                            properties:
+                              '1':
+                                description: ''
+                                type: integer
+                              '11':
+                                description: ''
+                                type: integer
+                            required:
+                            - '1'
+                            - '11'
+                            type: object
+                          compat_weight_set:
+                            description: ''
+                            type: boolean
+                          device_classes:
+                            description: ''
+                            items:
+                              type: integer
+                            type: array
+                          num_buckets:
+                            description: ''
+                            type: integer
+                          num_devices:
+                            description: ''
+                            type: integer
+                          num_rules:
+                            description: ''
+                            type: integer
+                          num_types:
+                            description: ''
+                            type: integer
+                          num_weight_sets:
+                            description: ''
+                            type: integer
+                          tunables:
+                            description: ''
+                            properties:
+                              allowed_bucket_algs:
+                                description: ''
+                                type: integer
+                              choose_local_fallback_tries:
+                                description: ''
+                                type: integer
+                              choose_local_tries:
+                                description: ''
+                                type: integer
+                              choose_total_tries:
+                                description: ''
+                                type: integer
+                              chooseleaf_descend_once:
+                                description: ''
+                                type: integer
+                              chooseleaf_stable:
+                                description: ''
+                                type: integer
+                              chooseleaf_vary_r:
+                                description: ''
+                                type: integer
+                              has_v2_rules:
+                                description: ''
+                                type: integer
+                              has_v3_rules:
+                                description: ''
+                                type: integer
+                              has_v4_buckets:
+                                description: ''
+                                type: integer
+                              has_v5_rules:
+                                description: ''
+                                type: integer
+                              legacy_tunables:
+                                description: ''
+                                type: integer
+                              minimum_required_version:
+                                description: ''
+                                type: string
+                              optimal_tunables:
+                                description: ''
+                                type: integer
+                              profile:
+                                description: ''
+                                type: string
+                              require_feature_tunables:
+                                description: ''
+                                type: integer
+                              require_feature_tunables2:
+                                description: ''
+                                type: integer
+                              require_feature_tunables3:
+                                description: ''
+                                type: integer
+                              require_feature_tunables5:
+                                description: ''
+                                type: integer
+                              straw_calc_version:
+                                description: ''
+                                type: integer
+                            required:
+                            - choose_local_tries
+                            - choose_local_fallback_tries
+                            - choose_total_tries
+                            - chooseleaf_descend_once
+                            - chooseleaf_vary_r
+                            - chooseleaf_stable
+                            - straw_calc_version
+                            - allowed_bucket_algs
+                            - profile
+                            - optimal_tunables
+                            - legacy_tunables
+                            - minimum_required_version
+                            - require_feature_tunables
+                            - require_feature_tunables2
+                            - has_v2_rules
+                            - require_feature_tunables3
+                            - has_v3_rules
+                            - has_v4_buckets
+                            - require_feature_tunables5
+                            - has_v5_rules
+                            type: object
+                        required:
+                        - num_devices
+                        - num_types
+                        - num_buckets
+                        - num_rules
+                        - device_classes
+                        - tunables
+                        - compat_weight_set
+                        - num_weight_sets
+                        - bucket_algs
+                        - bucket_sizes
+                        - bucket_types
+                        type: object
+                      fs:
+                        description: ''
+                        properties:
+                          count:
+                            description: ''
+                            type: integer
+                          feature_flags:
+                            description: ''
+                            properties:
+                              enable_multiple:
+                                description: ''
+                                type: boolean
+                              ever_enabled_multiple:
+                                description: ''
+                                type: boolean
+                            required:
+                            - enable_multiple
+                            - ever_enabled_multiple
+                            type: object
+                          filesystems:
+                            description: ''
+                            items:
+                              type: integer
+                            type: array
+                          num_standby_mds:
+                            description: ''
+                            type: integer
+                          total_num_mds:
+                            description: ''
+                            type: integer
+                        required:
+                        - count
+                        - feature_flags
+                        - num_standby_mds
+                        - filesystems
+                        - total_num_mds
+                        type: object
+                      hosts:
+                        description: ''
+                        properties:
+                          num:
+                            description: ''
+                            type: integer
+                          num_with_mds:
+                            description: ''
+                            type: integer
+                          num_with_mgr:
+                            description: ''
+                            type: integer
+                          num_with_mon:
+                            description: ''
+                            type: integer
+                          num_with_osd:
+                            description: ''
+                            type: integer
+                        required:
+                        - num
+                        - num_with_mon
+                        - num_with_mds
+                        - num_with_osd
+                        - num_with_mgr
+                        type: object
+                      leaderboard:
+                        description: ''
+                        type: boolean
+                      license:
+                        description: ''
+                        type: string
+                      metadata:
+                        description: ''
+                        properties:
+                          mon:
+                            description: ''
+                            properties:
+                              arch:
+                                description: ''
+                                properties:
+                                  x86_64:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - x86_64
+                                type: object
+                              ceph_version:
+                                description: ''
+                                properties:
+                                  ceph version 16.0.0-3151-gf202994fcf:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - ceph version 16.0.0-3151-gf202994fcf
+                                type: object
+                              cpu:
+                                description: ''
+                                properties:
+                                  Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz
+                                type: object
+                              distro:
+                                description: ''
+                                properties:
+                                  centos:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - centos
+                                type: object
+                              distro_description:
+                                description: ''
+                                properties:
+                                  CentOS Linux 8 (Core):
+                                    description: ''
+                                    type: integer
+                                required:
+                                - CentOS Linux 8 (Core)
+                                type: object
+                              kernel_description:
+                                description: ''
+                                properties:
+                                  '#1 SMP Wed Jul 1 19:53:01 UTC 2020':
+                                    description: ''
+                                    type: integer
+                                required:
+                                - '#1 SMP Wed Jul 1 19:53:01 UTC 2020'
+                                type: object
+                              kernel_version:
+                                description: ''
+                                properties:
+                                  5.7.7-200.fc32.x86_64:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - 5.7.7-200.fc32.x86_64
+                                type: object
+                              os:
+                                description: ''
+                                properties:
+                                  Linux:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - Linux
+                                type: object
+                            required:
+                            - arch
+                            - ceph_version
+                            - os
+                            - cpu
+                            - kernel_description
+                            - kernel_version
+                            - distro_description
+                            - distro
+                            type: object
+                          osd:
+                            description: ''
+                            properties:
+                              arch:
+                                description: ''
+                                properties:
+                                  x86_64:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - x86_64
+                                type: object
+                              ceph_version:
+                                description: ''
+                                properties:
+                                  ceph version 16.0.0-3151-gf202994fcf:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - ceph version 16.0.0-3151-gf202994fcf
+                                type: object
+                              cpu:
+                                description: ''
+                                properties:
+                                  Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz
+                                type: object
+                              distro:
+                                description: ''
+                                properties:
+                                  centos:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - centos
+                                type: object
+                              distro_description:
+                                description: ''
+                                properties:
+                                  CentOS Linux 8 (Core):
+                                    description: ''
+                                    type: integer
+                                required:
+                                - CentOS Linux 8 (Core)
+                                type: object
+                              kernel_description:
+                                description: ''
+                                properties:
+                                  '#1 SMP Wed Jul 1 19:53:01 UTC 2020':
+                                    description: ''
+                                    type: integer
+                                required:
+                                - '#1 SMP Wed Jul 1 19:53:01 UTC 2020'
+                                type: object
+                              kernel_version:
+                                description: ''
+                                properties:
+                                  5.7.7-200.fc32.x86_64:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - 5.7.7-200.fc32.x86_64
+                                type: object
+                              os:
+                                description: ''
+                                properties:
+                                  Linux:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - Linux
+                                type: object
+                              osd_objectstore:
+                                description: ''
+                                properties:
+                                  bluestore:
+                                    description: ''
+                                    type: integer
+                                required:
+                                - bluestore
+                                type: object
+                              rotational:
+                                description: ''
+                                properties:
+                                  '1':
+                                    description: ''
+                                    type: integer
+                                required:
+                                - '1'
+                                type: object
+                            required:
+                            - osd_objectstore
+                            - rotational
+                            - arch
+                            - ceph_version
+                            - os
+                            - cpu
+                            - kernel_description
+                            - kernel_version
+                            - distro_description
+                            - distro
+                            type: object
+                        required:
+                        - osd
+                        - mon
+                        type: object
+                      mon:
+                        description: ''
+                        properties:
+                          count:
+                            description: ''
+                            type: integer
+                          features:
+                            description: ''
+                            properties:
+                              optional:
+                                description: ''
+                                items:
+                                  type: integer
+                                type: array
+                              persistent:
+                                description: ''
+                                items:
+                                  type: string
+                                type: array
+                            required:
+                            - persistent
+                            - optional
+                            type: object
+                          ipv4_addr_mons:
+                            description: ''
+                            type: integer
+                          ipv6_addr_mons:
+                            description: ''
+                            type: integer
+                          min_mon_release:
+                            description: ''
+                            type: integer
+                          v1_addr_mons:
+                            description: ''
+                            type: integer
+                          v2_addr_mons:
+                            description: ''
+                            type: integer
+                        required:
+                        - count
+                        - features
+                        - min_mon_release
+                        - v1_addr_mons
+                        - v2_addr_mons
+                        - ipv4_addr_mons
+                        - ipv6_addr_mons
+                        type: object
+                      osd:
+                        description: ''
+                        properties:
+                          cluster_network:
+                            description: ''
+                            type: boolean
+                          count:
+                            description: ''
+                            type: integer
+                          require_min_compat_client:
+                            description: ''
+                            type: string
+                          require_osd_release:
+                            description: ''
+                            type: string
+                        required:
+                        - count
+                        - require_osd_release
+                        - require_min_compat_client
+                        - cluster_network
+                        type: object
+                      pools:
+                        description: ''
+                        items:
+                          properties:
+                            cache_mode:
+                              description: ''
+                              type: string
+                            erasure_code_profile:
+                              description: ''
+                              type: string
+                            min_size:
+                              description: ''
+                              type: integer
+                            pg_autoscale_mode:
+                              description: ''
+                              type: string
+                            pg_num:
+                              description: ''
+                              type: integer
+                            pgp_num:
+                              description: ''
+                              type: integer
+                            pool:
+                              description: ''
+                              type: integer
+                            size:
+                              description: ''
+                              type: integer
+                            target_max_bytes:
+                              description: ''
+                              type: integer
+                            target_max_objects:
+                              description: ''
+                              type: integer
+                            type:
+                              description: ''
+                              type: string
+                          required:
+                          - pool
+                          - type
+                          - pg_num
+                          - pgp_num
+                          - size
+                          - min_size
+                          - pg_autoscale_mode
+                          - target_max_bytes
+                          - target_max_objects
+                          - erasure_code_profile
+                          - cache_mode
+                          type: object
+                        type: array
+                      rbd:
+                        description: ''
+                        properties:
+                          mirroring_by_pool:
+                            description: ''
+                            items:
+                              type: boolean
+                            type: array
+                          num_images_by_pool:
+                            description: ''
+                            items:
+                              type: integer
+                            type: array
+                          num_pools:
+                            description: ''
+                            type: integer
+                        required:
+                        - num_pools
+                        - num_images_by_pool
+                        - mirroring_by_pool
+                        type: object
+                      report_id:
+                        description: ''
+                        type: string
+                      report_timestamp:
+                        description: ''
+                        type: string
+                      report_version:
+                        description: ''
+                        type: integer
+                      rgw:
+                        description: ''
+                        properties:
+                          count:
+                            description: ''
+                            type: integer
+                          frontends:
+                            description: ''
+                            items:
+                              type: string
+                            type: array
+                          zonegroups:
+                            description: ''
+                            type: integer
+                          zones:
+                            description: ''
+                            type: integer
+                        required:
+                        - count
+                        - zones
+                        - zonegroups
+                        - frontends
+                        type: object
+                      services:
+                        description: ''
+                        properties:
+                          rgw:
+                            description: ''
+                            type: integer
+                        required:
+                        - rgw
+                        type: object
+                      usage:
+                        description: ''
+                        properties:
+                          pg_num:
+                            description: ''
+                            type: integer
+                          pools:
+                            description: ''
+                            type: integer
+                          total_avail_bytes:
+                            description: ''
+                            type: integer
+                          total_bytes:
+                            description: ''
+                            type: integer
+                          total_used_bytes:
+                            description: ''
+                            type: integer
+                        required:
+                        - pools
+                        - pg_num
+                        - total_used_bytes
+                        - total_bytes
+                        - total_avail_bytes
+                        type: object
+                    required:
+                    - leaderboard
+                    - report_version
+                    - report_timestamp
+                    - report_id
+                    - channels
+                    - channels_available
+                    - license
+                    - created
+                    - mon
+                    - config
+                    - rbd
+                    - pools
+                    - osd
+                    - crush
+                    - fs
+                    - metadata
+                    - hosts
+                    - usage
+                    - services
+                    - rgw
+                    - balancer
+                    - crashes
+                    type: object
+                required:
+                - report
+                - device_report
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get Detailed Telemetry report
+      tags:
+      - Telemetry
+  /api/user:
+    get:
+      parameters: []
+      responses:
+        '200':
+          content:
+            application/json:
+              schema:
+                properties:
+                  email:
+                    description: User email address
+                    type: string
+                  enabled:
+                    description: Is the user enabled?
+                    type: boolean
+                  lastUpdate:
+                    description: Details last updated
+                    type: integer
+                  name:
+                    description: User Name
+                    type: string
+                  pwdExpirationDate:
+                    description: Password Expiration date
+                    type: string
+                  pwdUpdateRequired:
+                    description: Is Password Update Required?
+                    type: boolean
+                  roles:
+                    description: User Roles
+                    items:
+                      type: string
+                    type: array
+                  username:
+                    description: Username of the user
+                    type: string
+                required:
+                - username
+                - roles
+                - name
+                - email
+                - lastUpdate
+                - enabled
+                - pwdExpirationDate
+                - pwdUpdateRequired
+                type: object
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      summary: Get List Of Users
+      tags:
+      - User
+    post:
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                email:
+                  type: string
+                enabled:
+                  default: true
+                  type: boolean
+                name:
+                  type: string
+                password:
+                  type: string
+                pwdExpirationDate:
+                  type: string
+                pwdUpdateRequired:
+                  default: true
+                  type: boolean
+                roles:
+                  type: string
+                username:
+                  type: string
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - User
+  /api/user/validate_password:
+    post:
+      description: "\n        Check if the password meets the password policy.\n \
+        \       :param password: The password to validate.\n        :param username:\
+        \ The name of the user (optional).\n        :param old_password: The old password\
+        \ (optional).\n        :return: An object with properties valid, credits and\
+        \ valuation.\n        'credits' contains the password complexity credits and\n\
+        \        'valuation' the textual summary of the validation.\n        "
+      parameters: []
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                old_password:
+                  type: string
+                password:
+                  type: string
+                username:
+                  type: string
+              required:
+              - password
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - UserPasswordPolicy
+  /api/user/{username}:
+    delete:
+      parameters:
+      - in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          description: Resource deleted.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - User
+    get:
+      parameters:
+      - in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        '200':
+          description: OK
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - User
+    put:
+      parameters:
+      - in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                email:
+                  type: string
+                enabled:
+                  type: string
+                name:
+                  type: string
+                password:
+                  type: string
+                pwdExpirationDate:
+                  type: string
+                pwdUpdateRequired:
+                  default: false
+                  type: boolean
+                roles:
+                  type: string
+              type: object
+      responses:
+        '200':
+          description: Resource updated.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - User
+  /api/user/{username}/change_password:
+    post:
+      parameters:
+      - in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              properties:
+                new_password:
+                  type: string
+                old_password:
+                  type: string
+              required:
+              - old_password
+              - new_password
+              type: object
+      responses:
+        '201':
+          description: Resource created.
+        '202':
+          description: Operation is still executing. Please check the task queue.
+        '400':
+          description: Operation exception. Please check the response body for details.
+        '401':
+          description: Unauthenticated access. Please login first.
+        '403':
+          description: Unauthorized access. Please check your permissions.
+        '500':
+          description: Unexpected error. Please check the response body for the stack
+            trace.
+      security:
+      - jwt: []
+      tags:
+      - UserChangePassword
+schemes:
+- https
+servers:
+- url: /
+tags:
+- description: Initiate a session with Ceph
+  name: Auth
+- description: Cephfs Management API
+  name: Cephfs
+- description: Manage Cluster Configurations
+  name: ClusterConfiguration
+- description: Crush Rule Management API
+  name: CrushRule
+- description: Erasure Code Profile Management API
+  name: ErasureCodeProfile
+- description: Manage Features API
+  name: FeatureTogglesEndpoint
+- description: Grafana Management API
+  name: Grafana
+- description: Display Detailed Cluster health Status
+  name: Health
+- description: Get Host Details
+  name: Host
+- description: Iscsi Management API
+  name: Iscsi
+- description: Get Iscsi Target Details
+  name: IscsiTarget
+- description: Logs Management API
+  name: Logs
+- description: Mds Perf Counters Management API
+  name: MdsPerfCounter
+- description: Get details of MGR Module
+  name: MgrModule
+- description: Mgr Perf Counters Management API
+  name: MgrPerfCounter
+- description: Mon Perf Counters Management API
+  name: MonPerfCounter
+- description: Get Monitor Details
+  name: Monitor
+- description: NFS-Ganesha Management API
+  name: NFS-Ganesha
+- description: OSD management API
+  name: OSD
+- description: Orchestrator Management API
+  name: Orchestrator
+- description: Get Orchestrator Inventory Details
+  name: OrchestratorInventory
+- description: OSD Perf Counters Management API
+  name: OsdPerfCounter
+- description: Perf Counters Management API
+  name: PerfCounters
+- description: Get pool details by pool name
+  name: Pool
+- description: Prometheus Management API
+  name: Prometheus
+- description: Prometheus Notifications Management API
+  name: PrometheusNotifications
+- description: RBD Management API
+  name: Rbd
+- description: RBD Mirroring Management API
+  name: RbdMirroring
+- description: RBD Mirroring Pool Bootstrap Management API
+  name: RbdMirroringPoolBootstrap
+- description: RBD Mirroring Pool Mode Management API
+  name: RbdMirroringPoolMode
+- description: RBD Mirroring Pool Peer Management API
+  name: RbdMirroringPoolPeer
+- description: RBD Mirroring Summary Management API
+  name: RbdMirroringSummary
+- description: RBD Namespace Management API
+  name: RbdNamespace
+- description: RBD Snapshot Management API
+  name: RbdSnapshot
+- description: RBD Trash Management API
+  name: RbdTrash
+- description: RGW Management API
+  name: Rgw
+- description: RGW Bucket Management API
+  name: RgwBucket
+- description: RGW Daemon Management API
+  name: RgwDaemon
+- description: Rgw Mirroring Perf Counters Management API
+  name: RgwMirrorPerfCounter
+- description: Rgw Perf Counters Management API
+  name: RgwPerfCounter
+- description: RGW Site Management API
+  name: RgwSite
+- description: RGW User Management API
+  name: RgwUser
+- description: Role Management API
+  name: Role
+- description: Service Management API
+  name: Service
+- description: Settings Management API
+  name: Settings
+- description: Get Ceph Summary Details
+  name: Summary
+- description: Task Management API
+  name: Task
+- description: Tcmu Runner Perf Counters Management API
+  name: TcmuRunnerPerfCounter
+- description: Display Telemetry Report
+  name: Telemetry
+- description: Display User Details
+  name: User
+- description: Change User Password
+  name: UserChangePassword
+- description: Get User Password Policy Details
+  name: UserPasswordPolicy
diff --git a/src/pybind/mgr/dashboard/requirements-extra.txt b/src/pybind/mgr/dashboard/requirements-extra.txt
new file mode 100644 (file)
index 0000000..56c37b5
--- /dev/null
@@ -0,0 +1 @@
+python3-saml
\ No newline at end of file
index eb0da8026734fb743786dde2cc3cea0882db0351..282a07573cdf543078802b1729d982f16d19d40d 100644 (file)
@@ -4,7 +4,6 @@ enum34; python_version<'3.4'
 more-itertools
 PyJWT
 pyopenssl
-python3-saml
 requests
 Routes
 -e ../../../python-common
index b147e3d8cafe5f0f4faaca933e576c0630d0a847..e45907be7a21b26a254b2d6ef3f0c3719cc4d9cc 100644 (file)
@@ -5,6 +5,8 @@ envlist =
     fix,
     check,
     run,
+    apidocs,
+    openapi-{check,fix, doc}
 skipsdist = true
 minversion = 2.9.1
 
@@ -32,6 +34,7 @@ deps =
 deps =
     {[base]deps}
     {[base-test]deps}
+    -rrequirements-extra.txt
 setenv =
     CFLAGS = -DXMLSEC_NO_SIZE_T
     PYTHONUNBUFFERED=1
@@ -47,8 +50,7 @@ deps =
     {[base]deps}
     {[base-test]deps}
     {[base-lint]deps}
-# TODO: replace with allowlist_external tox=>16.1 (https://github.com/tox-dev/tox/pull/1601)
-whitelist_externals = *
+allowlist_externals = *
 commands = {posargs}
 
 [flake8]
@@ -140,3 +142,27 @@ commands =
 [testenv:check]
 commands =
     python ci/check_grafana_uids.py frontend/src/app ../../../../monitoring/grafana/dashboards
+
+[testenv:openapi-{check,fix}]
+basepython = python3
+allowlist_externals = diff
+description =
+    check: Ensure that auto-generated OpenAPI Specification matches the current version
+    fix: Update auto-generated OpenAPI Specification with the latest changes
+deps =
+    {[base]deps}
+    {[base-test]deps}
+setenv =
+    UNITTEST = true
+    PYTHONPATH=$PYTHONPATH:..
+    OPENAPI_FILE=openapi.yaml
+    check: OPENAPI_FILE_TMP={envtmpdir}/{env:OPENAPI_FILE}
+commands =
+     python3 -m dashboard.controllers.docs {env:OPENAPI_FILE_TMP:{env:OPENAPI_FILE}}
+     check: diff {env:OPENAPI_FILE} {env:OPENAPI_FILE_TMP}
+
+[testenv:openapi-doc]
+description = Generate Sphinx documentation from OpenAPI specification
+deps = -r../../../../admin/doc-requirements.txt
+changedir = ../../../../doc
+commands = sphinx-build -W -b html -c . -D suppress_warnings=ref.* -d {envtmpdir}/doctrees mgr/ceph_api {envtmpdir}/html