You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ur...@apache.org on 2022/04/08 02:15:00 UTC

[pulsar-site] branch main updated: feat: add swagger files

This is an automated email from the ASF dual-hosted git repository.

urfree pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git


The following commit(s) were added to refs/heads/main by this push:
     new ca8c8bceea feat: add swagger files
ca8c8bceea is described below

commit ca8c8bceead50c861c20172407ae03155bd560b8
Author: Li Li <ur...@apache.org>
AuthorDate: Fri Apr 8 10:14:39 2022 +0800

    feat: add swagger files
    
    Signed-off-by: Li Li <ur...@apache.org>
---
 .gitignore                                         |     6 +-
 .../static/swagger/2.3.0/v2/swagger.json           |  9695 +++++++
 .../static/swagger/2.3.0/v3/swaggerfunctions.json  |  3734 +++
 .../static/swagger/2.3.0/v3/swaggersink.json       |  3294 +++
 .../static/swagger/2.3.0/v3/swaggersource.json     |  3294 +++
 .../static/swagger/2.3.1/v2/swagger.json           |  9695 +++++++
 .../static/swagger/2.3.1/v3/swaggerfunctions.json  |  3734 +++
 .../static/swagger/2.3.1/v3/swaggersink.json       |  3294 +++
 .../static/swagger/2.3.1/v3/swaggersource.json     |  3294 +++
 .../static/swagger/2.3.2/v2/swagger.json           |  9695 +++++++
 .../static/swagger/2.3.2/v3/swaggerfunctions.json  |  3734 +++
 .../static/swagger/2.3.2/v3/swaggersink.json       |  3294 +++
 .../static/swagger/2.3.2/v3/swaggersource.json     |  3294 +++
 .../static/swagger/2.4.0/v2/swagger.json           | 11312 ++++++++
 .../static/swagger/2.4.0/v3/swaggerfunctions.json  |  1713 ++
 .../static/swagger/2.4.0/v3/swaggersink.json       |  1077 +
 .../static/swagger/2.4.0/v3/swaggersource.json     |  1010 +
 .../static/swagger/2.4.1/v2/swagger.json           | 11363 ++++++++
 .../static/swagger/2.4.1/v3/swaggerfunctions.json  |  1713 ++
 .../static/swagger/2.4.1/v3/swaggersink.json       |  1087 +
 .../static/swagger/2.4.1/v3/swaggersource.json     |  1038 +
 .../static/swagger/2.4.2/v2/swagger.json           | 11670 ++++++++
 .../static/swagger/2.4.2/v3/swaggerfunctions.json  |  1713 ++
 .../static/swagger/2.4.2/v3/swaggersink.json       |  1094 +
 .../static/swagger/2.4.2/v3/swaggersource.json     |  1038 +
 .../static/swagger/2.5.0/v2/swagger.json           | 12000 ++++++++
 .../static/swagger/2.5.0/v3/swaggerfunctions.json  |  1716 ++
 .../static/swagger/2.5.0/v3/swaggersink.json       |  1115 +
 .../static/swagger/2.5.0/v3/swaggersource.json     |  1059 +
 .../static/swagger/2.5.1/v2/swagger.json           | 12429 +++++++++
 .../static/swagger/2.5.1/v3/swaggerfunctions.json  |  1716 ++
 .../static/swagger/2.5.1/v3/swaggersink.json       |  1115 +
 .../static/swagger/2.5.1/v3/swaggersource.json     |  1059 +
 .../static/swagger/2.5.2/v2/swagger.json           | 12584 +++++++++
 .../static/swagger/2.5.2/v3/swaggerfunctions.json  |  1720 ++
 .../static/swagger/2.5.2/v3/swaggersink.json       |  1115 +
 .../static/swagger/2.5.2/v3/swaggersource.json     |  1059 +
 .../static/swagger/2.6.0/v2/swagger.json           | 13847 +++++++++
 .../static/swagger/2.6.0/v3/swaggerfunctions.json  |  1750 ++
 .../static/swagger/2.6.0/v3/swaggersink.json       |  1235 +
 .../static/swagger/2.6.0/v3/swaggersource.json     |  1173 +
 .../static/swagger/2.6.1/v2/swagger.json           | 14010 ++++++++++
 .../static/swagger/2.6.1/v3/swaggerfunctions.json  |  1750 ++
 .../static/swagger/2.6.1/v3/swaggersink.json       |  1235 +
 .../static/swagger/2.6.1/v3/swaggersource.json     |  1173 +
 .../static/swagger/2.6.2/v2/swagger.json           | 14469 ++++++++++
 .../static/swagger/2.6.2/v3/swaggerfunctions.json  |  1750 ++
 .../static/swagger/2.6.2/v3/swaggersink.json       |  1235 +
 .../static/swagger/2.6.2/v3/swaggersource.json     |  1173 +
 .../static/swagger/2.7.0/v2/swagger.json           | 19994 +++++++++++++
 .../static/swagger/2.7.0/v3/swaggerfunctions.json  |  1878 ++
 .../static/swagger/2.7.0/v3/swaggersink.json       |  1279 +
 .../static/swagger/2.7.0/v3/swaggersource.json     |  1236 +
 .../static/swagger/2.7.1/v2/swagger.json           | 21054 ++++++++++++++
 .../static/swagger/2.7.1/v3/swaggerfunctions.json  |  1878 ++
 .../static/swagger/2.7.1/v3/swaggersink.json       |  1279 +
 .../static/swagger/2.7.1/v3/swaggersource.json     |  1236 +
 .../static/swagger/2.7.2/v2/swagger.json           | 21081 ++++++++++++++
 .../static/swagger/2.7.2/v3/swaggerfunctions.json  |  1878 ++
 .../static/swagger/2.7.2/v3/swaggersink.json       |  1279 +
 .../static/swagger/2.7.2/v3/swaggersource.json     |  1236 +
 .../static/swagger/2.7.3/v2/swagger.json           | 22071 +++++++++++++++
 .../static/swagger/2.7.3/v3/swaggerfunctions.json  |  1878 ++
 .../static/swagger/2.7.3/v3/swaggersink.json       |  1279 +
 .../static/swagger/2.7.3/v3/swaggersource.json     |  1236 +
 .../static/swagger/2.7.4/v2/swagger.json           | 22214 +++++++++++++++
 .../static/swagger/2.7.4/v3/swaggerfunctions.json  |  1878 ++
 .../static/swagger/2.7.4/v3/swaggersink.json       |  1279 +
 .../static/swagger/2.7.4/v3/swaggersource.json     |  1236 +
 .../static/swagger/2.8.0/v2/swagger.json           | 25925 +++++++++++++++++
 .../static/swagger/2.8.0/v3/swaggerfunctions.json  |  3381 +++
 .../static/swagger/2.8.0/v3/swaggerpackages.json   |  1876 ++
 .../static/swagger/2.8.0/v3/swaggersink.json       |  2682 ++
 .../static/swagger/2.8.0/v3/swaggersource.json     |  2639 ++
 .../static/swagger/2.8.1/v2/swagger.json           | 27389 ++++++++++++++++++
 .../static/swagger/2.8.1/v3/swaggerfunctions.json  |  3381 +++
 .../static/swagger/2.8.1/v3/swaggerpackages.json   |  1876 ++
 .../static/swagger/2.8.1/v3/swaggersink.json       |  2682 ++
 .../static/swagger/2.8.1/v3/swaggersource.json     |  2639 ++
 .../static/swagger/2.8.2/v2/swagger.json           | 27423 ++++++++++++++++++
 .../static/swagger/2.8.2/v3/swaggerfunctions.json  |  3381 +++
 .../static/swagger/2.8.2/v3/swaggerpackages.json   |  1876 ++
 .../static/swagger/2.8.2/v3/swaggersink.json       |  2682 ++
 .../static/swagger/2.8.2/v3/swaggersource.json     |  2639 ++
 .../static/swagger/2.9.0/v2/swagger.json           | 27794 ++++++++++++++++++
 .../static/swagger/2.9.0/v3/swaggerfunctions.json  |  3392 +++
 .../static/swagger/2.9.0/v3/swaggerpackages.json   |  1876 ++
 .../static/swagger/2.9.0/v3/swaggersink.json       |  2685 ++
 .../static/swagger/2.9.0/v3/swaggersource.json     |  2639 ++
 .../static/swagger/2.9.1/v2/swagger.json           | 27798 +++++++++++++++++++
 .../static/swagger/2.9.1/v3/swaggerfunctions.json  |  3392 +++
 .../static/swagger/2.9.1/v3/swaggerpackages.json   |  1876 ++
 .../static/swagger/2.9.1/v3/swaggersink.json       |  2685 ++
 .../static/swagger/2.9.1/v3/swaggersource.json     |  2639 ++
 .../static/swagger/restApiVersions.json            |   359 +
 95 files changed, 527354 insertions(+), 3 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5c470dfc82..e26a289538 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,9 +24,9 @@ lib/core/MetadataBlog.js
 */website-next/yarn.lock
 */website-next/node_modules
 */website-next/i18n/*
-*/website-next/static/swagger/master/*
-*/website-next/static/swagger/restApiVersions.json
-*/website-next/static/swagger/*/v*/*.json
+# */website-next/static/swagger/master/*
+# */website-next/static/swagger/restApiVersions.json
+# */website-next/static/swagger/*/v*/*.json
 */website-next/i18n/*
 */website-next/translated_docs*
 */website-next/brodocs/index.html
diff --git a/site2/website-next/static/swagger/2.3.0/v2/swagger.json b/site2/website-next/static/swagger/2.3.0/v2/swagger.json
new file mode 100644
index 0000000000..3e1911854b
--- /dev/null
+++ b/site2/website-next/static/swagger/2.3.0/v2/swagger.json
@@ -0,0 +1,9695 @@
+{
+    "swagger": "2.0",
+    "info": {
+        "description": "This provides the REST API for admin operations",
+        "version": "v2",
+        "title": "Pulsar Admin REST API",
+        "license": {
+            "name": "Apache 2.0",
+            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
+        }
+    },
+    "basePath": "/admin/v2",
+    "tags": [
+        {
+            "name": "bookies"
+        },
+        {
+            "name": "broker-stats"
+        },
+        {
+            "name": "brokers"
+        },
+        {
+            "name": "clusters"
+        },
+        {
+            "name": "namespaces"
+        },
+        {
+            "name": "non-persistent topic"
+        },
+        {
+            "name": "persistent topic"
+        },
+        {
+            "name": "resource-quotas"
+        },
+        {
+            "name": "schemas"
+        },
+        {
+            "name": "tenants"
+        }
+    ],
+    "schemes": [
+        "http",
+        "https"
+    ],
+    "paths": {
+        "/bookies/racks-info": {
+            "get": {
+                "tags": [
+                    "bookies"
+                ],
+                "summary": "Gets the rack placement information for all the bookies in the cluster",
+                "description": "",
+                "operationId": "getBookiesRackInfo",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "type": "object",
+                                "additionalProperties": {
+                                    "$ref": "#/definitions/BookieInfo"
+                                }
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/bookies/racks-info/{bookie}": {
+            "get": {
+                "tags": [
+                    "bookies"
+                ],
+                "summary": "Gets the rack placement information for a specific bookie in the cluster",
+                "description": "",
+                "operationId": "getBookieRackInfo",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "bookie",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/BookieInfo"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "bookies"
+                ],
+                "summary": "Updates the rack placement information for a specific bookie in the cluster (note. bookie address format:`address:port`)",
+                "description": "",
+                "operationId": "updateBookieRackInfo",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "bookie",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "group",
+                        "in": "query",
+                        "required": false,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "bookies"
+                ],
+                "summary": "Removed the rack placement information for a specific bookie in the cluster",
+                "description": "",
+                "operationId": "deleteBookieRackInfo",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "bookie",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/broker-stats/allocator-stats/{allocator}": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Get the stats for the Netty allocator. Available allocators are 'default' and 'ml-cache'",
+                "description": "",
+                "operationId": "getAllocatorStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "allocator",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/AllocatorStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/broker-stats/bookieops": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Get pending bookie client op stats by namesapce",
+                "description": "",
+                "operationId": "getPendingBookieOpsStats",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "$ref": "#/definitions/PendingBookieOpsStats"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/broker-stats/broker-resource-availability/{tenant}/{namespace}": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Broker availability report",
+                "description": "This API gives the current broker availability in percent, each resource percentage usage is calculated and thensum of all of the resource usage percent is called broker-resource-availability<br/><br/>THIS API IS ONLY FOR USE BY TESTING FOR CONFIRMING NAMESPACE ALLOCATION ALGORITHM",
+                "operationId": "getBrokerResourceAvailability",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "$ref": "#/definitions/ResourceUnit"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Load-manager doesn't support operation"
+                    }
+                }
+            }
+        },
+        "/broker-stats/load-report": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Get Load for this broker",
+                "description": "consists of topics stats & systemResourceUsage",
+                "operationId": "getLoadReport",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/LoadReport"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/broker-stats/mbeans": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Get all the mbean details of this broker JVM",
+                "description": "",
+                "operationId": "getMBeans",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/Metrics"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/broker-stats/metrics": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Gets the metrics for Monitoring",
+                "description": "Requested should be executed by Monitoring agent on each broker to fetch the metrics",
+                "operationId": "getMetrics",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/Metrics"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/broker-stats/topics": {
+            "get": {
+                "tags": [
+                    "broker-stats"
+                ],
+                "summary": "Get all the topic stats by namespace",
+                "description": "",
+                "operationId": "getTopics2",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/OutputStream"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/brokers/configuration": {
+            "get": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Get all updatable dynamic configurations's name",
+                "description": "",
+                "operationId": "getDynamicConfigurationName",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "object"
+                            }
+                        }
+                    }
+                }
+            }
+        },
+        "/brokers/configuration/values": {
+            "get": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Get value of all dynamic configurations' value overridden on local config",
+                "description": "",
+                "operationId": "getAllDynamicConfigurations",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Configuration not found"
+                    }
+                }
+            }
+        },
+        "/brokers/configuration/{configName}/{configValue}": {
+            "post": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Update dynamic serviceconfiguration into zk only. This operation requires Pulsar super-user privileges.",
+                "description": "",
+                "operationId": "updateDynamicConfiguration",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "configName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "configValue",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "204": {
+                        "description": "Service configuration updated successfully"
+                    },
+                    "403": {
+                        "description": "You don't have admin permission to update service-configuration"
+                    },
+                    "404": {
+                        "description": "Configuration not found"
+                    },
+                    "412": {
+                        "description": "Configuration can't be updated dynamically"
+                    }
+                }
+            }
+        },
+        "/brokers/health": {
+            "get": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Run a healthcheck against the broker",
+                "description": "",
+                "operationId": "healthcheck",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Everything is OK"
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/brokers/internal-configuration": {
+            "get": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Get the internal configuration data",
+                "description": "",
+                "operationId": "getInternalConfigurationData",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/InternalConfigurationData"
+                        }
+                    }
+                }
+            }
+        },
+        "/brokers/{cluster}": {
+            "get": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Get the list of active brokers (web service addresses) in the cluster.",
+                "description": "",
+                "operationId": "getActiveBrokers",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/brokers/{cluster}/{broker}/ownedNamespaces": {
+            "get": {
+                "tags": [
+                    "brokers"
+                ],
+                "summary": "Get the list of namespaces served by the specific broker",
+                "description": "",
+                "operationId": "getOwnedNamespaes",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "broker",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "$ref": "#/definitions/NamespaceOwnershipStatus"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/clusters": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get the list of all the Pulsar clusters.",
+                "description": "",
+                "operationId": "getClusters",
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get the configuration data for the specified cluster.",
+                "description": "",
+                "operationId": "getCluster",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/ClusterData"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Update the configuration for a cluster.",
+                "description": "This operation requires Pulsar super-user privileges.",
+                "operationId": "updateCluster",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "204": {
+                        "description": "Cluster has been updated"
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Provisions a new cluster. This operation requires Pulsar super-user privileges.",
+                "description": "The name cannot contain '/' characters.",
+                "operationId": "createCluster",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "204": {
+                        "description": "Cluster has been created"
+                    },
+                    "403": {
+                        "description": "You don't have admin permission to create the cluster"
+                    },
+                    "409": {
+                        "description": "Cluster already exists"
+                    },
+                    "412": {
+                        "description": "Cluster name is not valid"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Delete an existing cluster",
+                "description": "",
+                "operationId": "deleteCluster",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "204": {
+                        "description": "Cluster has been updated"
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    },
+                    "412": {
+                        "description": "Cluster is not empty"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/failureDomains": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get the cluster failure domains",
+                "description": "",
+                "operationId": "getFailureDomains",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "$ref": "#/definitions/FailureDomain"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/failureDomains/{domainName}": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get a domain in a cluster",
+                "description": "",
+                "operationId": "getDomain",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "domainName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/FailureDomain"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Domain doesn't exist"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Set cluster's failure Domain",
+                "description": "",
+                "operationId": "setFailureDomain",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "domainName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    },
+                    "409": {
+                        "description": "Broker already exists in another domain"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Delete cluster's failure omain",
+                "description": "",
+                "operationId": "deleteFailureDomain",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "domainName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission or plicy is read only"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/namespaceIsolationPolicies": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get the namespace isolation policies assigned in the cluster",
+                "description": "",
+                "operationId": "getNamespaceIsolationPolicies",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "$ref": "#/definitions/NamespaceIsolationData"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/namespaceIsolationPolicies/brokers": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get list of brokers with namespace-isolation policies attached to them",
+                "description": "",
+                "operationId": "getBrokersWithNamespaceIsolationPolicy",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/BrokerNamespaceIsolationData"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace-isolation policies not found"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/namespaceIsolationPolicies/brokers/{broker}": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get a broker with namespace-isolation policies attached to it",
+                "description": "",
+                "operationId": "getBrokerWithNamespaceIsolationPolicy",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "broker",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/BrokerNamespaceIsolationData"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace-isolation policies/ Broker not found"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/namespaceIsolationPolicies/{policyName}": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get a single namespace isolation policy assigned in the cluster",
+                "description": "",
+                "operationId": "getNamespaceIsolationPolicy",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "policyName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/NamespaceIsolationData"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Policy doesn't exist"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Set namespace isolation policy",
+                "description": "",
+                "operationId": "setNamespaceIsolationPolicy",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "policyName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission or plicy is read only"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Delete namespace isolation policy",
+                "description": "",
+                "operationId": "deleteNamespaceIsolationPolicy",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "policyName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission or plicy is read only"
+                    },
+                    "412": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/clusters/{cluster}/peers": {
+            "get": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Get the peer-cluster data for the specified cluster.",
+                "description": "",
+                "operationId": "getPeerCluster",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "clusters"
+                ],
+                "summary": "Update peer-cluster-list for a cluster.",
+                "description": "This operation requires Pulsar super-user privileges.",
+                "operationId": "setPeerClusterNames",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "204": {
+                        "description": "Cluster has been updated"
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Cluster doesn't exist"
+                    },
+                    "412": {
+                        "description": "Peer cluster doesn't exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{cluster}/antiAffinity/{group}": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get all namespaces that are grouped by given anti-affinity group in a given cluster. api can be only accessed by admin of any of the existing tenant",
+                "description": "",
+                "operationId": "getAntiAffinityNamespaces",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "group",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "tenant",
+                        "in": "query",
+                        "required": false,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "412": {
+                        "description": "Cluster not exist/Anti-affinity group can't be empty."
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the list of all the namespaces for a certain tenant.",
+                "description": "",
+                "operationId": "getTenantNamespaces",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant doesn't exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the dump all the policies specified for a namespace.",
+                "description": "",
+                "operationId": "getPolicies",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/Policies"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Creates a new namespace with the specified policies",
+                "description": "",
+                "operationId": "createNamespace",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster doesn't exist"
+                    },
+                    "409": {
+                        "description": "Namespace already exists"
+                    },
+                    "412": {
+                        "description": "Namespace name is not valid"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Delete a namespace and all the topics under it.",
+                "description": "",
+                "operationId": "deleteNamespace",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Namespace is not empty"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/antiAffinity": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get anti-affinity group of a namespace.",
+                "description": "",
+                "operationId": "getNamespaceAntiAffinityGroup",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set anti-affinity group for a namespace",
+                "description": "",
+                "operationId": "setNamespaceAntiAffinityGroup",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Invalid antiAffinityGroup"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Remove anti-affinity group of a namespace.",
+                "description": "",
+                "operationId": "removeNamespaceAntiAffinityGroup",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/backlogQuota": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": " Set a backlog quota for all the topics on a namespace.",
+                "description": "",
+                "operationId": "setBacklogQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "backlogQuotaType",
+                        "in": "query",
+                        "required": false,
+                        "type": "string",
+                        "enum": [
+                            "destination_storage"
+                        ]
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "Specified backlog quota exceeds retention quota. Increase retention quota and retry request"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Remove a backlog quota policy from a namespace.",
+                "description": "",
+                "operationId": "removeBacklogQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "backlogQuotaType",
+                        "in": "query",
+                        "required": false,
+                        "type": "string",
+                        "enum": [
+                            "destination_storage"
+                        ]
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/backlogQuotaMap": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get backlog quota map on a namespace.",
+                "description": "",
+                "operationId": "getBacklogQuotaMap",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/bundles": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the bundles split data.",
+                "description": "",
+                "operationId": "getBundlesData",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/BundlesData"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Namespace is not setup to split in bundles"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/clearBacklog": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Clear backlog for all topics on a namespace.",
+                "description": "",
+                "operationId": "clearNamespaceBacklog",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/clearBacklog/{subscription}": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Clear backlog for a given subscription on all topics on a namespace.",
+                "description": "",
+                "operationId": "clearNamespaceBacklogForSubscription",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subscription",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/compactionThreshold": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Maximum number of uncompacted bytes in topics before compaction is triggered.",
+                "description": "The backlog size is compared to the threshold periodically. A threshold of 0 disabled automatic compaction",
+                "operationId": "getCompactionThreshold",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set maximum number of uncompacted bytes in a topic before compaction is triggered.",
+                "description": "The backlog size is compared to the threshold periodically. A threshold of 0 disabled automatic compaction",
+                "operationId": "setCompactionThreshold",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "compactionThreshold value is not valid"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/deduplication": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Enable or disable broker side deduplication for all topics in a namespace",
+                "description": "",
+                "operationId": "modifyDeduplication",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/dispatchRate": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get dispatch-rate configured for the namespace, -1 represents not configured yet",
+                "description": "",
+                "operationId": "getDispatchRate",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/DispatchRate"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set dispatch-rate throttling for all topics of the namespace",
+                "description": "",
+                "operationId": "setDispatchRate",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/encryptionRequired": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Message encryption is required or not for all topics in a namespace",
+                "description": "",
+                "operationId": "modifyEncryptionRequired",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/maxConsumersPerSubscription": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get maxConsumersPerSubscription config on a namespace.",
+                "description": "",
+                "operationId": "getMaxConsumersPerSubscription",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int32"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": " Set maxConsumersPerSubscription configuration on a namespace.",
+                "description": "",
+                "operationId": "setMaxConsumersPerSubscription",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "maxConsumersPerSubscription value is not valid"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/maxConsumersPerTopic": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get maxConsumersPerTopic config on a namespace.",
+                "description": "",
+                "operationId": "getMaxConsumersPerTopic",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int32"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": " Set maxConsumersPerTopic configuration on a namespace.",
+                "description": "",
+                "operationId": "setMaxConsumersPerTopic",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "maxConsumersPerTopic value is not valid"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/maxProducersPerTopic": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get maxProducersPerTopic config on a namespace.",
+                "description": "",
+                "operationId": "getMaxProducersPerTopic",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int32"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": " Set maxProducersPerTopic configuration on a namespace.",
+                "description": "",
+                "operationId": "setMaxProducersPerTopic",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "maxProducersPerTopic value is not valid"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/messageTTL": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the message TTL for the namespace",
+                "description": "",
+                "operationId": "getNamespaceMessageTTL",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int32"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set message TTL in seconds for namespace",
+                "description": "",
+                "operationId": "setNamespaceMessageTTL",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Invalid TTL"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/offloadDeletionLagMs": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Number of milliseconds to wait before deleting a ledger segment which has been offloaded from the Pulsar cluster's local storage (i.e. BookKeeper)",
+                "description": "A negative value denotes that deletion has been completely disabled. 'null' denotes that the topics in the namespace will fall back to the broker default for deletion lag.",
+                "operationId": "getOffloadDeletionLag",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set number of milliseconds to wait before deleting a ledger segment which has been offloaded from the Pulsar cluster's local storage (i.e. BookKeeper)",
+                "description": "A negative value disables the deletion completely.",
+                "operationId": "setOffloadDeletionLag",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "offloadDeletionLagMs value is not valid"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Clear the namespace configured offload deletion lag. The topics in the namespace will fallback to using the default configured deletion lag for the broker",
+                "description": "",
+                "operationId": "clearOffloadDeletionLag",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/offloadThreshold": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Maximum number of bytes stored on the pulsar cluster for a topic, before the broker will start offloading to longterm storage",
+                "description": "A negative value disables automatic offloading",
+                "operationId": "getOffloadThreshold",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set maximum number of bytes stored on the pulsar cluster for a topic, before the broker will start offloading to longterm storage",
+                "description": "A negative value disables automatic offloading",
+                "operationId": "setOffloadThreshold",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "offloadThreshold value is not valid"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/permissions": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Retrieve the permissions for a namespace.",
+                "description": "",
+                "operationId": "getPermissions",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Namespace is not empty"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/permissions/{role}": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Grant a new permission to a role on a namespace.",
+                "description": "",
+                "operationId": "grantPermissionOnNamespace",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "role",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "501": {
+                        "description": "Authorization is not enabled"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Revoke all permissions to a role on a namespace.",
+                "description": "",
+                "operationId": "revokePermissionsOnNamespace",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "role",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/persistence": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the persistence configuration for a namespace.",
+                "description": "",
+                "operationId": "getPersistence",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PersistencePolicies"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set the persistence configuration for all the topics on a namespace.",
+                "description": "",
+                "operationId": "setPersistence",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "400": {
+                        "description": "Invalid persistence policies"
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/replication": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the replication clusters for a namespace.",
+                "description": "",
+                "operationId": "getNamespaceReplicationClusters",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Namespace is not global"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set the replication clusters for a namespace.",
+                "description": "",
+                "operationId": "setNamespaceReplicationClusters",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Peer-cluster can't be part of replication-cluster"
+                    },
+                    "412": {
+                        "description": "Namespace is not global or invalid cluster ids"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/retention": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get retention config on a namespace.",
+                "description": "",
+                "operationId": "getRetention",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/RetentionPolicies"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": " Set retention configuration on a namespace.",
+                "description": "",
+                "operationId": "setRetention",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    },
+                    "412": {
+                        "description": "Retention Quota must exceed backlog quota"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/schemaAutoUpdateCompatibilityStrategy": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "The strategy used to check the compatibility of new schemas, provided by producers, before automatically updating the schema",
+                "description": "The value AutoUpdateDisabled prevents producers from updating the schema.  If set to AutoUpdateDisabled, schemas must be updated through the REST api",
+                "operationId": "getSchemaAutoUpdateCompatibilityStrategy",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "string",
+                            "enum": [
+                                "AutoUpdateDisabled",
+                                "Backward",
+                                "Forward",
+                                "Full",
+                                "AlwaysCompatible"
+                            ]
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Update the strategy used to check the compatibility of new schemas, provided by producers, before automatically updating the schema",
+                "description": "The value AutoUpdateDisabled prevents producers from updating the schema.  If set to AutoUpdateDisabled, schemas must be updated through the REST api",
+                "operationId": "setSchemaAutoUpdateCompatibilityStrategy",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/subscribeRate": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get subscribe-rate configured for the namespace",
+                "description": "",
+                "operationId": "getSubscribeRate",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/SubscribeRate"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set subscribe-rate throttling for all topics of the namespace",
+                "description": "",
+                "operationId": "setSubscribeRate",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/subscriptionAuthMode": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": " Set a subscription auth mode for all the topics on a namespace.",
+                "description": "",
+                "operationId": "setSubscriptionAuthMode",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/subscriptionDispatchRate": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get Subscription dispatch-rate configured for the namespace, -1 represents not configured yet",
+                "description": "",
+                "operationId": "getSubscriptionDispatchRate",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/DispatchRate"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Set Subscription dispatch-rate throttling for all topics of the namespace",
+                "description": "",
+                "operationId": "setSubscriptionDispatchRate",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/topics": {
+            "get": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Get the list of all the topics under a certain namespace.",
+                "description": "",
+                "operationId": "getTopics",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "mode",
+                        "in": "query",
+                        "required": false,
+                        "type": "string",
+                        "default": "PERSISTENT",
+                        "enum": [
+                            "PERSISTENT",
+                            "NON_PERSISTENT",
+                            "ALL"
+                        ]
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/unload": {
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Unload namespace",
+                "description": "Unload an active namespace from the current broker serving it. Performing this operation will let the brokerremoves all producers, consumers, and connections using this namespace, and close all topics (includingtheir persistent store). During that operation, the namespace is marked as tentatively unavailable until thebroker completes the unloading action. This operation requires strictly super user privileges, since it wouldresult in non-persistent message [...]
+                "operationId": "unloadNamespace",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Namespace is already unloaded or Namespace has bundles activated"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/unsubscribe/{subscription}": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Unsubscribes the given subscription on all topics on a namespace.",
+                "description": "",
+                "operationId": "unsubscribeNamespace",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "cluster",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subscription",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/{bundle}": {
+            "delete": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Delete a namespace bundle and all the topics under it.",
+                "description": "",
+                "operationId": "deleteNamespaceBundle",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Tenant or cluster or namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Namespace bundle is not empty"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/{bundle}/clearBacklog": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Clear backlog for all topics on a namespace bundle.",
+                "description": "",
+                "operationId": "clearNamespaceBundleBacklog",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/{bundle}/clearBacklog/{subscription}": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Clear backlog for a given subscription on all topics on a namespace bundle.",
+                "description": "",
+                "operationId": "clearNamespaceBundleBacklogForSubscription",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subscription",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/{bundle}/split": {
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Split a namespace bundle",
+                "description": "",
+                "operationId": "splitNamespaceBundle",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    },
+                    {
+                        "name": "unload",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/{bundle}/unload": {
+            "put": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Unload a namespace bundle",
+                "description": "",
+                "operationId": "unloadNamespaceBundle",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/namespaces/{tenant}/{namespace}/{bundle}/unsubscribe/{subscription}": {
+            "post": {
+                "tags": [
+                    "namespaces"
+                ],
+                "summary": "Unsubscribes the given subscription on all topics on a namespace bundle.",
+                "description": "",
+                "operationId": "unsubscribeNamespaceBundle",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subscription",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the list of non-persistent topics under a namespace.",
+                "description": "",
+                "operationId": "getList",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/partitioned": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the list of partitioned topics under a namespace.",
+                "description": "",
+                "operationId": "getPartitionedTopicList",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{bundle}": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the list of non-persistent topics under a namespace bundle.",
+                "description": "",
+                "operationId": "getListFromBundle",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}": {
+            "delete": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Delete a topic.",
+                "description": "The topic cannot be deleted if delete is not forcefully and there's any active subscription or producer connected to the it. Force delete ignores connected clients and deletes topic by explicitly closing them.",
+                "operationId": "deleteTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "force",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "412": {
+                        "description": "Topic has active producers/subscriptions"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/all_subscription/expireMessages/{expireTimeInSeconds}": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Expire messages on all subscriptions of topic.",
+                "description": "",
+                "operationId": "expireMessagesForAllSubscriptions",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "expireTimeInSeconds",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/backlog": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get estimated backlog for offline topic.",
+                "description": "",
+                "operationId": "getBacklog",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PersistentOfflineTopicStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/compaction": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the status of a compaction operation for a topic.",
+                "description": "",
+                "operationId": "compactionStatus",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/LongRunningProcessStatus"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist, or compaction hasn't run"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Trigger a compaction operation on a topic.",
+                "description": "",
+                "operationId": "compact",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    },
+                    "409": {
+                        "description": "Compaction already running"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/internal-info": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the internal stats for the topic.",
+                "description": "",
+                "operationId": "getManagedLedgerInfo",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/internalStats": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the internal stats for the topic.",
+                "description": "",
+                "operationId": "getInternalStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PersistentTopicInternalStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/lastMessageId": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Return the last commit message id of topic",
+                "description": "",
+                "operationId": "getLastMessageId",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/MessageId"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/offload": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Offload a prefix of a topic to long term storage",
+                "description": "",
+                "operationId": "offloadStatus",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/OffloadProcessStatus"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Offload a prefix of a topic to long term storage",
+                "description": "",
+                "operationId": "triggerOffload",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    },
+                    "409": {
+                        "description": "Offload already running"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/partitioned-stats": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the stats for the partitioned topic.",
+                "description": "",
+                "operationId": "getPartitionedStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PartitionedTopicStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/partitions": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get partitioned topic metadata.",
+                "description": "",
+                "operationId": "getPartitionedMetadata",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PartitionedTopicMetadata"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Increment partitons of an existing partitioned topic.",
+                "description": "It only increments partitions of existing non-global partitioned-topic",
+                "operationId": "updatePartitionedTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Partitioned topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Create a partitioned topic.",
+                "description": "It needs to be called before creating a producer on a partitioned topic.",
+                "operationId": "createPartitionedTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Partitioned topic already exists"
+                    },
+                    "412": {
+                        "description": "Failed Reason : Name is invalid or Namespace does not have any clusters configured"
+                    },
+                    "503": {
+                        "description": "Failed to validate global cluster configuration"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Delete a partitioned topic.",
+                "description": "It will also delete all the partitions of the topic if it exists.",
+                "operationId": "deletePartitionedTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "force",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Partitioned topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/permissions": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get permissions on a topic.",
+                "description": "Retrieve the effective permissions for a topic. These permissions are defined by the permissions set at thenamespace level combined (union) with any eventual specific permission set on the topic.",
+                "operationId": "getPermissionsOnTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/permissions/{role}": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Grant a new permission to a role on a single topic.",
+                "description": "",
+                "operationId": "grantPermissionsOnTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "role",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Revoke permissions on a topic.",
+                "description": "Revoke permissions to a role on a single topic. If the permission was not set at the topiclevel, but rather at the namespace level, this operation will return an error (HTTP status code 412).",
+                "operationId": "revokePermissionsOnTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "role",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Permissions are not set at the topic level"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/stats": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the stats for the topic.",
+                "description": "",
+                "operationId": "getStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/NonPersistentTopicStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}": {
+            "delete": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Delete a subscription.",
+                "description": "There should not be any active consumers on the subscription.",
+                "operationId": "deleteSubscription",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "412": {
+                        "description": "Subscription has active consumers"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/expireMessages/{expireTimeInSeconds}": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Expire messages on a topic subscription.",
+                "description": "",
+                "operationId": "expireTopicMessages",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "expireTimeInSeconds",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/position/{messagePosition}": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Peek nth message on a topic subscription.",
+                "description": "",
+                "operationId": "peekNthMessage",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "messagePosition",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic, subscription or the message position does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Reset subscription to message position closest to given position.",
+                "description": "It fence cursor and disconnects all active consumers before reseting cursor.",
+                "operationId": "resetCursorOnPosition",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic/Subscription does not exist"
+                    },
+                    "405": {
+                        "description": "Not supported for partitioned topics"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor/{timestamp}": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Reset subscription to message position closest to absolute timestamp (in ms).",
+                "description": "It fence cursor and disconnects all active consumers before reseting cursor.",
+                "operationId": "resetCursor",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "timestamp",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int64"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic/Subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip/{numMessages}": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Skip messages on a topic subscription.",
+                "description": "",
+                "operationId": "skipMessages",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "numMessages",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip_all": {
+            "post": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Skip all messages on a topic subscription.",
+                "description": "Completely clears the backlog on the subscription.",
+                "operationId": "skipAllMessages",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on non-persistent topic"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subscriptionName}": {
+            "put": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Reset subscription to message position closest to given position.",
+                "description": "Creates a subscription on the topic at the specified message id",
+                "operationId": "createSubscription",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subscriptionName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic/Subscription does not exist"
+                    },
+                    "405": {
+                        "description": "Not supported for partitioned topics"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/subscriptions": {
+            "get": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Get the list of persistent subscriptions for a given topic.",
+                "description": "",
+                "operationId": "getSubscriptions",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/non-persistent/{tenant}/{namespace}/{topic}/unload": {
+            "put": {
+                "tags": [
+                    "non-persistent topic"
+                ],
+                "summary": "Unload a topic",
+                "description": "",
+                "operationId": "unloadTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the list of topics under a namespace.",
+                "description": "",
+                "operationId": "getList",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/partitioned": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the list of partitioned topics under a namespace.",
+                "description": "",
+                "operationId": "getPartitionedTopicList",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}": {
+            "delete": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Delete a topic.",
+                "description": "The topic cannot be deleted if delete is not forcefully and there's any active subscription or producer connected to the it. Force delete ignores connected clients and deletes topic by explicitly closing them.",
+                "operationId": "deleteTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "force",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "412": {
+                        "description": "Topic has active producers/subscriptions"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/all_subscription/expireMessages/{expireTimeInSeconds}": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Expire messages on all subscriptions of topic.",
+                "description": "",
+                "operationId": "expireMessagesForAllSubscriptions",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "expireTimeInSeconds",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/backlog": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get estimated backlog for offline topic.",
+                "description": "",
+                "operationId": "getBacklog",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PersistentOfflineTopicStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/compaction": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the status of a compaction operation for a topic.",
+                "description": "",
+                "operationId": "compactionStatus",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/LongRunningProcessStatus"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist, or compaction hasn't run"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Trigger a compaction operation on a topic.",
+                "description": "",
+                "operationId": "compact",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    },
+                    "409": {
+                        "description": "Compaction already running"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/internal-info": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the internal stats for the topic.",
+                "description": "",
+                "operationId": "getManagedLedgerInfo",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/internalStats": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the internal stats for the topic.",
+                "description": "",
+                "operationId": "getInternalStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PersistentTopicInternalStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/lastMessageId": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Return the last commit message id of topic",
+                "description": "",
+                "operationId": "getLastMessageId",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/MessageId"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/offload": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Offload a prefix of a topic to long term storage",
+                "description": "",
+                "operationId": "offloadStatus",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/OffloadProcessStatus"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Offload a prefix of a topic to long term storage",
+                "description": "",
+                "operationId": "triggerOffload",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on persistent topic"
+                    },
+                    "409": {
+                        "description": "Offload already running"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/partitioned-stats": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the stats for the partitioned topic.",
+                "description": "",
+                "operationId": "getPartitionedStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PartitionedTopicStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/partitions": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get partitioned topic metadata.",
+                "description": "",
+                "operationId": "getPartitionedMetadata",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PartitionedTopicMetadata"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Partitioned topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Increment partitons of an existing partitioned topic.",
+                "description": "It only increments partitions of existing non-global partitioned-topic",
+                "operationId": "updatePartitionedTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Partitioned topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Create a partitioned topic.",
+                "description": "It needs to be called before creating a producer on a partitioned topic.",
+                "operationId": "createPartitionedTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Partitioned topic already exist"
+                    },
+                    "412": {
+                        "description": "Failed Reason : Name is invalid or Namespace does not have any clusters configured"
+                    },
+                    "503": {
+                        "description": "Failed to validate global cluster configuration"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Delete a partitioned topic.",
+                "description": "It will also delete all the partitions of the topic if it exists.",
+                "operationId": "deletePartitionedTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "force",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Partitioned topic does not exist"
+                    },
+                    "412": {
+                        "description": "Partitioned topic name is invalid"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/permissions": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get permissions on a topic.",
+                "description": "Retrieve the effective permissions for a topic. These permissions are defined by the permissions set at thenamespace level combined (union) with any eventual specific permission set on the topic.",
+                "operationId": "getPermissionsOnTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/permissions/{role}": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Grant a new permission to a role on a single topic.",
+                "description": "",
+                "operationId": "grantPermissionsOnTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "role",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Revoke permissions on a topic.",
+                "description": "Revoke permissions to a role on a single topic. If the permission was not set at the topiclevel, but rather at the namespace level, this operation will return an error (HTTP status code 412).",
+                "operationId": "revokePermissionsOnTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "role",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace doesn't exist"
+                    },
+                    "412": {
+                        "description": "Permissions are not set at the topic level"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/stats": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the stats for the topic.",
+                "description": "",
+                "operationId": "getStats",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/TopicStats"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}": {
+            "delete": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Delete a subscription.",
+                "description": "There should not be any active consumers on the subscription.",
+                "operationId": "deleteSubscription",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "412": {
+                        "description": "Subscription has active consumers"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/expireMessages/{expireTimeInSeconds}": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Expire messages on a topic subscription.",
+                "description": "",
+                "operationId": "expireTopicMessages",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "expireTimeInSeconds",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/position/{messagePosition}": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Peek nth message on a topic subscription.",
+                "description": "",
+                "operationId": "peekNthMessage",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "messagePosition",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic, subscription or the message position does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Reset subscription to message position closest to given position.",
+                "description": "It fence cursor and disconnects all active consumers before reseting cursor.",
+                "operationId": "resetCursorOnPosition",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic/Subscription does not exist"
+                    },
+                    "405": {
+                        "description": "Not supported for partitioned topics"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor/{timestamp}": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Reset subscription to message position closest to absolute timestamp (in ms).",
+                "description": "It fence cursor and disconnects all active consumers before reseting cursor.",
+                "operationId": "resetCursor",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "timestamp",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int64"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic/Subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip/{numMessages}": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Skip messages on a topic subscription.",
+                "description": "",
+                "operationId": "skipMessages",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "numMessages",
+                        "in": "path",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int32"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip_all": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Skip all messages on a topic subscription.",
+                "description": "Completely clears the backlog on the subscription.",
+                "operationId": "skipAllMessages",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic or subscription does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on non-persistent topic"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscription/{subscriptionName}": {
+            "put": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Reset subscription to message position closest to given position.",
+                "description": "Creates a subscription on the topic at the specified message id",
+                "operationId": "createSubscription",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "subscriptionName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic/Subscription does not exist"
+                    },
+                    "405": {
+                        "description": "Not supported for partitioned topics"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/subscriptions": {
+            "get": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Get the list of persistent subscriptions for a given topic.",
+                "description": "",
+                "operationId": "getSubscriptions",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/terminate": {
+            "post": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Terminate a persistent topic. A topic that is terminated will not accept any more messages to be published and will let consumer to drain existing messages in backlog",
+                "description": "",
+                "operationId": "terminate",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/MessageId"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    },
+                    "405": {
+                        "description": "Operation not allowed on non-persistent topic"
+                    }
+                }
+            }
+        },
+        "/persistent/{tenant}/{namespace}/{topic}/unload": {
+            "put": {
+                "tags": [
+                    "persistent topic"
+                ],
+                "summary": "Unload a topic",
+                "description": "",
+                "operationId": "unloadTopic",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Topic does not exist"
+                    }
+                }
+            }
+        },
+        "/resource-quotas": {
+            "get": {
+                "tags": [
+                    "resource-quotas"
+                ],
+                "summary": "Get the default quota",
+                "description": "",
+                "operationId": "getDefaultResourceQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "resource-quotas"
+                ],
+                "summary": "Set the default quota",
+                "description": "",
+                "operationId": "setDefaultResourceQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    }
+                }
+            }
+        },
+        "/resource-quotas/{tenant}/{namespace}/{bundle}": {
+            "get": {
+                "tags": [
+                    "resource-quotas"
+                ],
+                "summary": "Get resource quota of a namespace bundle.",
+                "description": "",
+                "operationId": "getNamespaceBundleResourceQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/ResourceQuota"
+                        }
+                    },
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "404": {
+                        "description": "Namespace does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "resource-quotas"
+                ],
+                "summary": "Set resource quota on a namespace.",
+                "description": "",
+                "operationId": "setNamespaceBundleResourceQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "resource-quotas"
+                ],
+                "summary": "Remove resource quota for a namespace.",
+                "description": "",
+                "operationId": "removeNamespaceBundleResourceQuota",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "bundle",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "Don't have admin permission"
+                    },
+                    "409": {
+                        "description": "Concurrent modification"
+                    }
+                }
+            }
+        },
+        "/schemas/{tenant}/{namespace}/{topic}/schema": {
+            "get": {
+                "tags": [
+                    "schemas"
+                ],
+                "summary": "Get the schema of a topic",
+                "description": "",
+                "operationId": "getSchema",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/GetSchemaResponse"
+                        }
+                    },
+                    "307": {
+                        "description": "Current broker doesn't serve the namespace of this topic"
+                    },
+                    "401": {
+                        "description": "Client is not authorized or Don't have admin permission"
+                    },
+                    "403": {
+                        "description": "Client is not authenticated"
+                    },
+                    "404": {
+                        "description": "Tenant or Namespace or Topic doesn't exist; or Schema is not found for this topic"
+                    },
+                    "412": {
+                        "description": "Failed to find the ownership for the topic"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "schemas"
+                ],
+                "summary": "Update the schema of a topic",
+                "description": "",
+                "operationId": "postSchema",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "in": "body",
+                        "name": "body",
+                        "description": "A JSON value presenting a schema playload. An example of the expected schema can be found down here.",
+                        "required": false,
+                        "schema": {
+                            "$ref": "#/definitions/PostSchemaPayload"
+                        },
+                        "x-examples": {
+                            "application/json": "{\"type\": \"STRING\", \"schema\": \"\", \"properties\": { \"key1\" : \"value1\" + } }"
+                        }
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/PostSchemaResponse"
+                        }
+                    },
+                    "307": {
+                        "description": "Current broker doesn't serve the namespace of this topic"
+                    },
+                    "401": {
+                        "description": "Client is not authorized or Don't have admin permission"
+                    },
+                    "403": {
+                        "description": "Client is not authenticated"
+                    },
+                    "404": {
+                        "description": "Tenant or Namespace or Topic doesn't exist"
+                    },
+                    "412": {
+                        "description": "Failed to find the ownership for the topic"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "schemas"
+                ],
+                "summary": "Delete the schema of a topic",
+                "description": "",
+                "operationId": "deleteSchema",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/DeleteSchemaResponse"
+                        }
+                    },
+                    "307": {
+                        "description": "Current broker doesn't serve the namespace of this topic"
+                    },
+                    "401": {
+                        "description": "Client is not authorized or Don't have admin permission"
+                    },
+                    "403": {
+                        "description": "Client is not authenticated"
+                    },
+                    "404": {
+                        "description": "Tenant or Namespace or Topic doesn't exist"
+                    },
+                    "412": {
+                        "description": "Failed to find the ownership for the topic"
+                    }
+                }
+            }
+        },
+        "/schemas/{tenant}/{namespace}/{topic}/schema/{version}": {
+            "get": {
+                "tags": [
+                    "schemas"
+                ],
+                "summary": "Get the schema of a topic at a given version",
+                "description": "",
+                "operationId": "getSchema",
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "topic",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "version",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "authoritative",
+                        "in": "query",
+                        "required": false,
+                        "type": "boolean",
+                        "default": false
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/GetSchemaResponse"
+                        }
+                    },
+                    "307": {
+                        "description": "Current broker doesn't serve the namespace of this topic"
+                    },
+                    "401": {
+                        "description": "Client is not authorized or Don't have admin permission"
+                    },
+                    "403": {
+                        "description": "Client is not authenticated"
+                    },
+                    "404": {
+                        "description": "Tenant or Namespace or Topic doesn't exist; or Schema is not found for this topic"
+                    },
+                    "412": {
+                        "description": "Failed to find the ownership for the topic"
+                    }
+                }
+            }
+        },
+        "/tenants": {
+            "get": {
+                "tags": [
+                    "tenants"
+                ],
+                "summary": "Get the list of tenants.",
+                "description": "",
+                "operationId": "getTenants",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "404": {
+                        "description": "Tenant doesn't exist"
+                    }
+                }
+            }
+        },
+        "/tenants/{tenant}": {
+            "get": {
+                "tags": [
+                    "tenants"
+                ],
+                "summary": "Get the admin configuration for a given tenant.",
+                "description": "",
+                "operationId": "getTenantAdmin",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/TenantInfo"
+                        }
+                    },
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "404": {
+                        "description": "Tenant does not exist"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "tenants"
+                ],
+                "summary": "Update the admins for a tenant.",
+                "description": "This operation requires Pulsar super-user privileges.",
+                "operationId": "updateTenant",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "404": {
+                        "description": "Tenant does not exist"
+                    },
+                    "409": {
+                        "description": "Tenant already exists"
+                    }
+                }
+            },
+            "put": {
+                "tags": [
+                    "tenants"
+                ],
+                "summary": "Create a new tenant.",
+                "description": "This operation requires Pulsar super-user privileges.",
+                "operationId": "createTenant",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "409": {
+                        "description": "Tenant already exists"
+                    },
+                    "412": {
+                        "description": "Tenant name is not valid"
+                    }
+                }
+            },
+            "delete": {
+                "tags": [
+                    "tenants"
+                ],
+                "summary": "Delete a tenant and all namespaces and topics under it.",
+                "description": "",
+                "operationId": "deleteTenant",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "404": {
+                        "description": "Tenant does not exist"
+                    },
+                    "409": {
+                        "description": "The tenant still has active namespaces"
+                    }
+                }
+            }
+        }
+    },
+    "definitions": {
+        "AllocatorStats": {
+            "type": "object",
+            "properties": {
+                "numDirectArenas": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numHeapArenas": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numThreadLocalCaches": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "normalCacheSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "smallCacheSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "tinyCacheSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "directArenas": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PoolArenaStats"
+                    }
+                },
+                "heapArenas": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PoolArenaStats"
+                    }
+                }
+            }
+        },
+        "AuthPolicies": {
+            "type": "object",
+            "properties": {
+                "namespace_auth": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "array",
+                        "uniqueItems": true,
+                        "items": {
+                            "type": "string",
+                            "enum": [
+                                "produce",
+                                "consume"
+                            ]
+                        }
+                    }
+                },
+                "destination_auth": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "object",
+                        "additionalProperties": {
+                            "type": "array",
+                            "uniqueItems": true,
+                            "items": {
+                                "type": "string",
+                                "enum": [
+                                    "produce",
+                                    "consume"
+                                ]
+                            }
+                        }
+                    }
+                },
+                "subscription_auth_roles": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "array",
+                        "uniqueItems": true,
+                        "items": {
+                            "type": "string"
+                        }
+                    }
+                }
+            }
+        },
+        "AutoFailoverPolicyData": {
+            "type": "object",
+            "properties": {
+                "policy_type": {
+                    "type": "string",
+                    "enum": [
+                        "min_available"
+                    ]
+                },
+                "parameters": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "BacklogQuota": {
+            "type": "object",
+            "properties": {
+                "limit": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "policy": {
+                    "type": "string",
+                    "enum": [
+                        "producer_request_hold",
+                        "producer_exception",
+                        "consumer_backlog_eviction"
+                    ]
+                }
+            }
+        },
+        "BookieInfo": {
+            "type": "object",
+            "properties": {
+                "rack": {
+                    "type": "string"
+                },
+                "hostname": {
+                    "type": "string"
+                }
+            }
+        },
+        "BrokerNamespaceIsolationData": {
+            "type": "object",
+            "properties": {
+                "brokerName": {
+                    "type": "string"
+                },
+                "namespaceRegex": {
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "BundlesData": {
+            "type": "object",
+            "properties": {
+                "boundaries": {
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "numBundles": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "ClusterData": {
+            "type": "object",
+            "properties": {
+                "serviceUrl": {
+                    "type": "string"
+                },
+                "serviceUrlTls": {
+                    "type": "string"
+                },
+                "brokerServiceUrl": {
+                    "type": "string"
+                },
+                "brokerServiceUrlTls": {
+                    "type": "string"
+                },
+                "peerClusterNames": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "ConsumerStats": {
+            "type": "object",
+            "properties": {
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "consumerName": {
+                    "type": "string"
+                },
+                "availablePermits": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "unackedMessages": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "blockedConsumerOnUnackedMsgs": {
+                    "type": "boolean"
+                },
+                "metadata": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "address": {
+                    "type": "string"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                }
+            }
+        },
+        "CursorDetails": {
+            "type": "object",
+            "properties": {
+                "cursorBacklog": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedgerId": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "CursorStats": {
+            "type": "object",
+            "properties": {
+                "markDeletePosition": {
+                    "type": "string"
+                },
+                "readPosition": {
+                    "type": "string"
+                },
+                "waitingReadOp": {
+                    "type": "boolean"
+                },
+                "pendingReadOps": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "messagesConsumedCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedger": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedgerLastEntry": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "individuallyDeletedMessages": {
+                    "type": "string"
+                },
+                "lastLedgerSwitchTimestamp": {
+                    "type": "string"
+                },
+                "state": {
+                    "type": "string"
+                },
+                "numberOfEntriesSinceFirstNotAckedMessage": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "totalNonContiguousDeletedMessagesRange": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "properties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "integer",
+                        "format": "int64"
+                    }
+                }
+            }
+        },
+        "DeleteSchemaResponse": {
+            "type": "object",
+            "properties": {
+                "version": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "DispatchRate": {
+            "type": "object",
+            "properties": {
+                "dispatchThrottlingRateInMsg": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "dispatchThrottlingRateInByte": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "ratePeriodInSecond": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "FailureDomain": {
+            "type": "object",
+            "properties": {
+                "brokers": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "GetSchemaResponse": {
+            "type": "object",
+            "properties": {
+                "version": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "type": {
+                    "type": "string",
+                    "enum": [
+                        "NONE",
+                        "STRING",
+                        "JSON",
+                        "PROTOBUF",
+                        "AVRO",
+                        "BOOLEAN",
+                        "INT8",
+                        "INT16",
+                        "INT32",
+                        "INT64",
+                        "FLOAT",
+                        "DOUBLE",
+                        "DATE",
+                        "TIME",
+                        "TIMESTAMP",
+                        "KEY_VALUE",
+                        "BYTES",
+                        "AUTO",
+                        "AUTO_CONSUME",
+                        "AUTO_PUBLISH"
+                    ]
+                },
+                "timestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "data": {
+                    "type": "string"
+                },
+                "properties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "InternalConfigurationData": {
+            "type": "object",
+            "properties": {
+                "zookeeperServers": {
+                    "type": "string"
+                },
+                "configurationStoreServers": {
+                    "type": "string"
+                },
+                "ledgersRootPath": {
+                    "type": "string"
+                },
+                "stateStorageServiceUrl": {
+                    "type": "string"
+                }
+            }
+        },
+        "LedgerDetails": {
+            "type": "object",
+            "properties": {
+                "entries": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "timestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "size": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "ledgerId": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "LedgerInfo": {
+            "type": "object",
+            "properties": {
+                "ledgerId": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "entries": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "size": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "offloaded": {
+                    "type": "boolean"
+                }
+            }
+        },
+        "LoadReport": {
+            "type": "object",
+            "properties": {
+                "name": {
+                    "type": "string"
+                },
+                "brokerVersionString": {
+                    "type": "string"
+                },
+                "webServiceUrl": {
+                    "type": "string"
+                },
+                "webServiceUrlTls": {
+                    "type": "string"
+                },
+                "pulsarServiceUrl": {
+                    "type": "string"
+                },
+                "pulsarServiceUrlTls": {
+                    "type": "string"
+                },
+                "persistentTopicsEnabled": {
+                    "type": "boolean"
+                },
+                "nonPersistentTopicsEnabled": {
+                    "type": "boolean"
+                },
+                "timestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "numTopics": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numConsumers": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numProducers": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numBundles": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "systemResourceUsage": {
+                    "$ref": "#/definitions/SystemResourceUsage"
+                },
+                "bundleStats": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/NamespaceBundleStats"
+                    }
+                },
+                "bundleGains": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "bundleLosses": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "allocatedCPU": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "allocatedMemory": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "allocatedBandwidthIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "allocatedBandwidthOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "allocatedMsgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "allocatedMsgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "preAllocatedCPU": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "preAllocatedMemory": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "preAllocatedBandwidthIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "preAllocatedBandwidthOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "preAllocatedMsgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "preAllocatedMsgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "underLoaded": {
+                    "type": "boolean"
+                },
+                "overLoaded": {
+                    "type": "boolean"
+                },
+                "loadReportType": {
+                    "type": "string"
+                },
+                "directMemory": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "bandwidthIn": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "cpu": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "memory": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "bandwidthOut": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "lastUpdate": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                }
+            }
+        },
+        "LongRunningProcessStatus": {
+            "type": "object",
+            "properties": {
+                "status": {
+                    "type": "string",
+                    "enum": [
+                        "NOT_RUN",
+                        "RUNNING",
+                        "SUCCESS",
+                        "ERROR"
+                    ]
+                },
+                "lastError": {
+                    "type": "string"
+                }
+            }
+        },
+        "MessageId": {
+            "type": "object"
+        },
+        "MessageIdImpl": {
+            "type": "object",
+            "properties": {
+                "ledgerId": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "entryId": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "partitionIndex": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "Metrics": {
+            "type": "object",
+            "properties": {
+                "metrics": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "object"
+                    }
+                },
+                "dimensions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "NamespaceBundleStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "consumerCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "producerCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "topics": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cacheSize": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "NamespaceIsolationData": {
+            "type": "object",
+            "properties": {
+                "namespaces": {
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "primary": {
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "secondary": {
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "auto_failover_policy": {
+                    "$ref": "#/definitions/AutoFailoverPolicyData"
+                }
+            }
+        },
+        "NamespaceOwnershipStatus": {
+            "type": "object",
+            "properties": {
+                "broker_assignment": {
+                    "type": "string",
+                    "enum": [
+                        "primary",
+                        "secondary",
+                        "shared"
+                    ]
+                },
+                "is_controlled": {
+                    "type": "boolean"
+                },
+                "is_active": {
+                    "type": "boolean"
+                }
+            }
+        },
+        "NonPersistentPublisherStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "producerId": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "metadata": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "msgDropRate": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "address": {
+                    "type": "string"
+                },
+                "producerName": {
+                    "type": "string"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                }
+            }
+        },
+        "NonPersistentReplicatorStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "replicationBacklog": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "connected": {
+                    "type": "boolean"
+                },
+                "replicationDelayInSeconds": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "inboundConnection": {
+                    "type": "string"
+                },
+                "inboundConnectedSince": {
+                    "type": "string"
+                },
+                "outboundConnection": {
+                    "type": "string"
+                },
+                "outboundConnectedSince": {
+                    "type": "string"
+                },
+                "msgDropRate": {
+                    "type": "number",
+                    "format": "double"
+                }
+            }
+        },
+        "NonPersistentSubscriptionStats": {
+            "type": "object",
+            "properties": {
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgBacklog": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
+                },
+                "unackedMessages": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "type": {
+                    "type": "string",
+                    "enum": [
+                        "Exclusive",
+                        "Shared",
+                        "Failover"
+                    ]
+                },
+                "activeConsumerName": {
+                    "type": "string"
+                },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "consumers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/ConsumerStats"
+                    }
+                },
+                "msgDropRate": {
+                    "type": "number",
+                    "format": "double"
+                }
+            }
+        },
+        "NonPersistentTopicStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "storageSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "publishers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/NonPersistentPublisherStats"
+                    }
+                },
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/NonPersistentSubscriptionStats"
+                    }
+                },
+                "replication": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/NonPersistentReplicatorStats"
+                    }
+                },
+                "deduplicationStatus": {
+                    "type": "string"
+                },
+                "msgDropRate": {
+                    "type": "number",
+                    "format": "double"
+                }
+            }
+        },
+        "OffloadProcessStatus": {
+            "type": "object",
+            "properties": {
+                "status": {
+                    "type": "string",
+                    "enum": [
+                        "NOT_RUN",
+                        "RUNNING",
+                        "SUCCESS",
+                        "ERROR"
+                    ]
+                },
+                "lastError": {
+                    "type": "string"
+                },
+                "firstUnoffloadedMessage": {
+                    "$ref": "#/definitions/MessageIdImpl"
+                }
+            }
+        },
+        "OutputStream": {
+            "type": "object"
+        },
+        "PartitionedTopicMetadata": {
+            "type": "object",
+            "properties": {
+                "partitions": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "PartitionedTopicStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "storageSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "publishers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PublisherStats"
+                    }
+                },
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/SubscriptionStats"
+                    }
+                },
+                "replication": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/ReplicatorStats"
+                    }
+                },
+                "deduplicationStatus": {
+                    "type": "string"
+                },
+                "metadata": {
+                    "$ref": "#/definitions/PartitionedTopicMetadata"
+                },
+                "partitions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/TopicStats"
+                    }
+                }
+            }
+        },
+        "PendingBookieOpsStats": {
+            "type": "object",
+            "properties": {
+                "dataLedgerOpenOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "dataLedgerCloseOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "dataLedgerCreateOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "dataLedgerDeleteOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedgerOpenOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedgerCloseOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedgerCreateOp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "cursorLedgerDeleteOp": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "PersistencePolicies": {
+            "type": "object",
+            "properties": {
+                "bookkeeperEnsemble": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "bookkeeperWriteQuorum": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "bookkeeperAckQuorum": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "managedLedgerMaxMarkDeleteRate": {
+                    "type": "number",
+                    "format": "double"
+                }
+            }
+        },
+        "PersistentOfflineTopicStats": {
+            "type": "object",
+            "properties": {
+                "storageSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "totalMessages": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "messageBacklog": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "brokerName": {
+                    "type": "string"
+                },
+                "topicName": {
+                    "type": "string"
+                },
+                "dataLedgerDetails": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/LedgerDetails"
+                    }
+                },
+                "cursorDetails": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/CursorDetails"
+                    }
+                },
+                "statGeneratedAt": {
+                    "type": "string",
+                    "format": "date-time"
+                }
+            }
+        },
+        "PersistentTopicInternalStats": {
+            "type": "object",
+            "properties": {
+                "entriesAddedCounter": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numberOfEntries": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "totalSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "currentLedgerEntries": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "currentLedgerSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "lastLedgerCreatedTimestamp": {
+                    "type": "string"
+                },
+                "lastLedgerCreationFailureTimestamp": {
+                    "type": "string"
+                },
+                "waitingCursorsCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "pendingAddEntriesCount": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "lastConfirmedEntry": {
+                    "type": "string"
+                },
+                "state": {
+                    "type": "string"
+                },
+                "ledgers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/LedgerInfo"
+                    }
+                },
+                "cursors": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/CursorStats"
+                    }
+                }
+            }
+        },
+        "Policies": {
+            "type": "object",
+            "properties": {
+                "auth_policies": {
+                    "$ref": "#/definitions/AuthPolicies"
+                },
+                "replication_clusters": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "bundles": {
+                    "$ref": "#/definitions/BundlesData"
+                },
+                "backlog_quota_map": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/BacklogQuota"
+                    }
+                },
+                "clusterDispatchRate": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/DispatchRate"
+                    }
+                },
+                "subscriptionDispatchRate": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/DispatchRate"
+                    }
+                },
+                "clusterSubscribeRate": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/SubscribeRate"
+                    }
+                },
+                "persistence": {
+                    "$ref": "#/definitions/PersistencePolicies"
+                },
+                "deduplicationEnabled": {
+                    "type": "boolean"
+                },
+                "latency_stats_sample_rate": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "integer",
+                        "format": "int32"
+                    }
+                },
+                "message_ttl_in_seconds": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "retention_policies": {
+                    "$ref": "#/definitions/RetentionPolicies"
+                },
+                "deleted": {
+                    "type": "boolean"
+                },
+                "antiAffinityGroup": {
+                    "type": "string"
+                },
+                "encryption_required": {
+                    "type": "boolean"
+                },
+                "subscription_auth_mode": {
+                    "type": "string",
+                    "enum": [
+                        "None",
+                        "Prefix"
+                    ]
+                },
+                "max_producers_per_topic": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "max_consumers_per_topic": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "max_consumers_per_subscription": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "compaction_threshold": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "offload_threshold": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "offload_deletion_lag_ms": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "schema_auto_update_compatibility_strategy": {
+                    "type": "string",
+                    "enum": [
+                        "AutoUpdateDisabled",
+                        "Backward",
+                        "Forward",
+                        "Full",
+                        "AlwaysCompatible"
+                    ]
+                }
+            }
+        },
+        "PoolArenaStats": {
+            "type": "object",
+            "properties": {
+                "numTinySubpages": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numSmallSubpages": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numChunkLists": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "tinySubpages": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PoolSubpageStats"
+                    }
+                },
+                "smallSubpages": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PoolSubpageStats"
+                    }
+                },
+                "chunkLists": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PoolChunkListStats"
+                    }
+                },
+                "numAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numTinyAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numSmallAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numNormalAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numHugeAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numDeallocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numTinyDeallocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numSmallDeallocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numNormalDeallocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numHugeDeallocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numActiveAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numActiveTinyAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numActiveSmallAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numActiveNormalAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "numActiveHugeAllocations": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "PoolChunkListStats": {
+            "type": "object",
+            "properties": {
+                "minUsage": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "maxUsage": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "chunks": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PoolChunkStats"
+                    }
+                }
+            }
+        },
+        "PoolChunkStats": {
+            "type": "object",
+            "properties": {
+                "usage": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "chunkSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "freeBytes": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "PoolSubpageStats": {
+            "type": "object",
+            "properties": {
+                "maxNumElements": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "numAvailable": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "elementSize": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "pageSize": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "PostSchemaPayload": {
+            "type": "object",
+            "properties": {
+                "type": {
+                    "type": "string"
+                },
+                "schema": {
+                    "type": "string"
+                },
+                "properties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "PostSchemaResponse": {
+            "type": "object",
+            "properties": {
+                "version": {
+                    "$ref": "#/definitions/SchemaVersion"
+                }
+            }
+        },
+        "PublisherStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "producerId": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "metadata": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "address": {
+                    "type": "string"
+                },
+                "producerName": {
+                    "type": "string"
+                },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                }
+            }
+        },
+        "ReplicatorStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "replicationBacklog": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "connected": {
+                    "type": "boolean"
+                },
+                "replicationDelayInSeconds": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "inboundConnection": {
+                    "type": "string"
+                },
+                "inboundConnectedSince": {
+                    "type": "string"
+                },
+                "outboundConnection": {
+                    "type": "string"
+                },
+                "outboundConnectedSince": {
+                    "type": "string"
+                }
+            }
+        },
+        "ResourceDescription": {
+            "type": "object",
+            "properties": {
+                "usagePct": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "resourceUsage": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/ResourceUsage"
+                    }
+                }
+            }
+        },
+        "ResourceQuota": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "bandwidthIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "bandwidthOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "memory": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "dynamic": {
+                    "type": "boolean"
+                }
+            }
+        },
+        "ResourceUnit": {
+            "type": "object",
+            "properties": {
+                "resourceId": {
+                    "type": "string"
+                },
+                "availableResource": {
+                    "$ref": "#/definitions/ResourceDescription"
+                }
+            }
+        },
+        "ResourceUsage": {
+            "type": "object",
+            "properties": {
+                "usage": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "limit": {
+                    "type": "number",
+                    "format": "double"
+                }
+            }
+        },
+        "RetentionPolicies": {
+            "type": "object",
+            "properties": {
+                "retentionTimeInMinutes": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "retentionSizeInMB": {
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
+        "SchemaVersion": {
+            "type": "object"
+        },
+        "SubscribeRate": {
+            "type": "object",
+            "properties": {
+                "subscribeThrottlingRatePerConsumer": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "ratePeriodInSecond": {
+                    "type": "integer",
+                    "format": "int32"
+                }
+            }
+        },
+        "SubscriptionStats": {
+            "type": "object",
+            "properties": {
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateRedeliver": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgBacklog": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
+                },
+                "unackedMessages": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "type": {
+                    "type": "string",
+                    "enum": [
+                        "Exclusive",
+                        "Shared",
+                        "Failover"
+                    ]
+                },
+                "activeConsumerName": {
+                    "type": "string"
+                },
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "consumers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/ConsumerStats"
+                    }
+                }
+            }
+        },
+        "SystemResourceUsage": {
+            "type": "object",
+            "properties": {
+                "bandwidthIn": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "bandwidthOut": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "cpu": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "memory": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "directMemory": {
+                    "$ref": "#/definitions/ResourceUsage"
+                }
+            }
+        },
+        "TenantInfo": {
+            "type": "object",
+            "properties": {
+                "adminRoles": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "allowedClusters": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "TopicStats": {
+            "type": "object",
+            "properties": {
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "averageMsgSize": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "storageSize": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "publishers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/PublisherStats"
+                    }
+                },
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/SubscriptionStats"
+                    }
+                },
+                "replication": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/ReplicatorStats"
+                    }
+                },
+                "deduplicationStatus": {
+                    "type": "string"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json
new file mode 100644
index 0000000000..dacf82baef
--- /dev/null
+++ b/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json
@@ -0,0 +1,3734 @@
+{
+    "swagger": "2.0",
+    "info": {
+        "description": "This provides the REST API for Pulsar Functions operations",
+        "version": "v3",
+        "title": "Pulsar Functions REST API",
+        "license": {
+            "name": "Apache 2.0",
+            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
+        }
+    },
+    "basePath": "/admin/v3",
+    "tags": [
+        {
+            "name": "functions"
+        }
+    ],
+    "schemes": [
+        "http",
+        "https"
+    ],
+    "paths": {
+        "/functions/connectors": {
+            "get": {
+                "tags": [
+                    "functions"
+                ],
+                "summary": "Fetches a list of supported Pulsar IO connectors currently running in cluster mode",
+                "description": "",
+                "operationId": "getConnectorsList",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "type": "object"
+                            }
+                        }
+                    },
+                    "400": {
+                        "description": "Invalid request"
+                    },
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "408": {
+                        "description": "Request timeout"
+                    }
+                }
+            }
+        },
+        "/functions/{tenant}/{namespace}": {
+            "get": {
+                "tags": [
+                    "functions"
+                ],
+                "summary": "Lists all Pulsar Functions currently deployed in a given namespace",
+                "description": "",
+                "operationId": "listFunctions",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "type": "string"
+                        }
+                    },
+                    "400": {
+                        "description": "Invalid request"
+                    },
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    }
+                }
+            }
+        },
+        "/functions/{tenant}/{namespace}/{functionName}": {
+            "get": {
+                "tags": [
+                    "functions"
+                ],
+                "summary": "Fetches information about a Pulsar Function currently running in cluster mode",
+                "description": "",
+                "operationId": "getFunctionInfo",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "parameters": [
+                    {
+                        "name": "tenant",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "namespace",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "functionName",
+                        "in": "path",
+                        "required": true,
+                        "type": "string"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "successful operation",
+                        "schema": {
+                            "$ref": "#/definitions/FunctionMetaData"
+                        }
+                    },
+                    "400": {
+                        "description": "Invalid request"
+                    },
+                    "403": {
+                        "description": "The requester doesn't have admin permissions"
+                    },
+                    "404": {
+                        "description": "The function doesn't exist"
+                    },
+                    "408": {
+                        "description": "Request timeout"
+                    }
+                }
+            },
+            "post": {
+                "tags": [
+                    "functions"
+                ],
+                "summary": "Creates a new Pulsar Function in cluster mode",
+                "description": "",
+                "operationId": "registerFunction",
+                "consumes": [
+                    "multipart/form-data"
... 518135 lines suppressed ...