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/05/14 06:45:51 UTC

[pulsar-site] branch asf-site updated: Updated site at revision 72c8130

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new f00e96c70f0 Updated site at revision 72c8130
f00e96c70f0 is described below

commit f00e96c70f0fc24651f3b7c71f0bc9ff0095a050
Author: Pulsar Site Updater <de...@pulsar.apache.org>
AuthorDate: Sat May 14 06:45:46 2022 +0000

    Updated site at revision 72c8130
---
 .../pulsar-broker/2.11.0-SNAPSHOT/index-all.html   |  24 +--
 .../2.11.0-SNAPSHOT/member-search-index.js         |   2 +-
 .../apache/pulsar/broker/admin/AdminResource.html  | 189 +++++++++++----------
 .../pulsar/broker/admin/impl/BrokerStatsBase.html  |   4 +-
 .../pulsar/broker/admin/impl/BrokersBase.html      |   4 +-
 .../pulsar/broker/admin/impl/ClustersBase.html     |   4 +-
 .../pulsar/broker/admin/impl/FunctionsBase.html    |   4 +-
 .../pulsar/broker/admin/impl/NamespacesBase.html   |  12 +-
 .../pulsar/broker/admin/impl/PackagesBase.html     |   4 +-
 .../broker/admin/impl/PersistentTopicsBase.html    |   4 +-
 .../broker/admin/impl/ResourceGroupsBase.html      |   4 +-
 .../broker/admin/impl/ResourceQuotasBase.html      |   4 +-
 .../broker/admin/impl/SchemasResourceBase.html     |   4 +-
 .../apache/pulsar/broker/admin/impl/SinksBase.html |   4 +-
 .../pulsar/broker/admin/impl/SourcesBase.html      |   4 +-
 .../pulsar/broker/admin/impl/TenantsBase.html      |   2 +-
 .../pulsar/broker/admin/impl/TransactionsBase.html |   4 +-
 .../apache/pulsar/broker/admin/v1/BrokerStats.html |   4 +-
 .../org/apache/pulsar/broker/admin/v1/Brokers.html |   4 +-
 .../apache/pulsar/broker/admin/v1/Clusters.html    |   4 +-
 .../apache/pulsar/broker/admin/v1/Functions.html   |   4 +-
 .../apache/pulsar/broker/admin/v1/Namespaces.html  |  62 ++++---
 .../broker/admin/v1/NonPersistentTopics.html       |   4 +-
 .../pulsar/broker/admin/v1/PersistentTopics.html   |   4 +-
 .../apache/pulsar/broker/admin/v1/Properties.html  |   2 +-
 .../pulsar/broker/admin/v1/ResourceQuotas.html     |   4 +-
 .../pulsar/broker/admin/v1/SchemasResource.html    |   4 +-
 .../org/apache/pulsar/broker/admin/v2/Bookies.html |   4 +-
 .../apache/pulsar/broker/admin/v2/BrokerStats.html |   4 +-
 .../org/apache/pulsar/broker/admin/v2/Brokers.html |   4 +-
 .../apache/pulsar/broker/admin/v2/Clusters.html    |   4 +-
 .../apache/pulsar/broker/admin/v2/Functions.html   |   4 +-
 .../apache/pulsar/broker/admin/v2/Namespaces.html  |  62 ++++---
 .../broker/admin/v2/NonPersistentTopics.html       |   4 +-
 .../pulsar/broker/admin/v2/PersistentTopics.html   |   4 +-
 .../pulsar/broker/admin/v2/ResourceGroups.html     |   4 +-
 .../pulsar/broker/admin/v2/ResourceQuotas.html     |   4 +-
 .../pulsar/broker/admin/v2/SchemasResource.html    |   4 +-
 .../org/apache/pulsar/broker/admin/v2/Tenants.html |   2 +-
 .../org/apache/pulsar/broker/admin/v2/Worker.html  |   4 +-
 .../apache/pulsar/broker/admin/v2/WorkerStats.html |   4 +-
 .../apache/pulsar/broker/admin/v3/Functions.html   |   4 +-
 .../apache/pulsar/broker/admin/v3/Packages.html    |   4 +-
 .../org/apache/pulsar/broker/admin/v3/Sink.html    |   4 +-
 .../org/apache/pulsar/broker/admin/v3/Sinks.html   |   4 +-
 .../org/apache/pulsar/broker/admin/v3/Source.html  |   4 +-
 .../org/apache/pulsar/broker/admin/v3/Sources.html |   4 +-
 .../pulsar/broker/admin/v3/Transactions.html       |   4 +-
 .../pulsar/broker/lookup/TopicLookupBase.html      |   2 +-
 .../pulsar/broker/lookup/v1/TopicLookup.html       |   2 +-
 .../pulsar/broker/lookup/v2/TopicLookup.html       |   2 +-
 .../org/apache/pulsar/broker/rest/Topics.html      |   4 +-
 .../org/apache/pulsar/broker/rest/TopicsBase.html  |   4 +-
 .../pulsar/broker/web/PulsarWebResource.html       | 145 ++++++++--------
 content/docs/assets/reader-interceptor.svg         |   1 +
 content/docs/en/2.7.2/security-encryption.html     |  35 ++--
 .../docs/en/2.7.2/security-encryption/index.html   |  35 ++--
 content/docs/en/2.7.3/security-encryption.html     |  35 ++--
 .../docs/en/2.7.3/security-encryption/index.html   |  35 ++--
 content/docs/en/2.7.4/security-encryption.html     |  35 ++--
 .../docs/en/2.7.4/security-encryption/index.html   |  35 ++--
 content/docs/en/2.8.0/security-encryption.html     |  35 ++--
 .../docs/en/2.8.0/security-encryption/index.html   |  35 ++--
 content/docs/en/2.8.1/security-encryption.html     |  35 ++--
 .../docs/en/2.8.1/security-encryption/index.html   |  35 ++--
 content/docs/en/2.8.3/security-encryption.html     |  35 ++--
 .../docs/en/2.8.3/security-encryption/index.html   |  35 ++--
 content/docs/en/2.9.0/security-encryption.html     |  35 ++--
 .../docs/en/2.9.0/security-encryption/index.html   |  35 ++--
 content/docs/en/2.9.1/security-encryption.html     |  23 ++-
 .../docs/en/2.9.1/security-encryption/index.html   |  23 ++-
 content/docs/en/2.9.2/security-encryption.html     |  35 ++--
 .../docs/en/2.9.2/security-encryption/index.html   |  35 ++--
 content/docs/en/develop-plugin.html                |   2 +-
 content/docs/en/develop-plugin/index.html          |   2 +-
 content/docs/en/next/client-libraries-java.html    |  63 +++++--
 .../docs/en/next/client-libraries-java/index.html  |  63 +++++--
 content/docs/en/next/deploy-bare-metal.html        |   5 +-
 content/docs/en/next/deploy-bare-metal/index.html  |   5 +-
 content/docs/en/next/develop-plugin.html           |   2 +-
 content/docs/en/next/develop-plugin/index.html     |   2 +-
 content/docs/en/next/io-elasticsearch-sink.html    |   8 +-
 .../docs/en/next/io-elasticsearch-sink/index.html  |   8 +-
 content/docs/en/next/io-rabbitmq-sink.html         |   4 +-
 content/docs/en/next/io-rabbitmq-sink/index.html   |   4 +-
 content/docs/en/next/reference-configuration.html  |   2 +-
 .../en/next/reference-configuration/index.html     |   2 +-
 content/docs/en/next/reference-pulsar-admin.html   |  10 +-
 .../docs/en/next/reference-pulsar-admin/index.html |  10 +-
 content/docs/en/next/security-encryption.html      |  41 +++--
 .../docs/en/next/security-encryption/index.html    |  41 +++--
 content/docs/en/next/security-kerberos.html        |   2 +-
 content/docs/en/next/security-kerberos/index.html  |   2 +-
 content/docs/en/security-encryption.html           |  41 +++--
 content/docs/en/security-encryption/index.html     |  41 +++--
 content/swagger/2.11.0-SNAPSHOT/swagger.json       | 140 +++++++--------
 .../swagger/2.11.0-SNAPSHOT/swaggerfunctions.json  |  34 ++--
 .../swagger/2.11.0-SNAPSHOT/swaggerpackages.json   |  14 +-
 content/swagger/2.11.0-SNAPSHOT/swaggersink.json   |  14 +-
 content/swagger/2.11.0-SNAPSHOT/swaggersource.json |  14 +-
 content/swagger/2.11.0-SNAPSHOT/v2/swagger.json    | 153 +++++++----------
 .../2.11.0-SNAPSHOT/v3/swaggerfunctions.json       |  34 ++--
 .../2.11.0-SNAPSHOT/v3/swaggerpackages.json        |  14 +-
 .../swagger/2.11.0-SNAPSHOT/v3/swaggersink.json    |  14 +-
 .../swagger/2.11.0-SNAPSHOT/v3/swaggersource.json  |  14 +-
 content/swagger/master/swagger.json                | 140 +++++++--------
 content/swagger/master/swaggerfunctions.json       |  34 ++--
 content/swagger/master/swaggerpackages.json        |  14 +-
 content/swagger/master/swaggersink.json            |  14 +-
 content/swagger/master/swaggersource.json          |  14 +-
 content/swagger/master/v2/swagger.json             | 153 +++++++----------
 content/swagger/master/v3/swaggerfunctions.json    |  34 ++--
 content/swagger/master/v3/swaggerpackages.json     |  14 +-
 content/swagger/master/v3/swaggersink.json         |  14 +-
 content/swagger/master/v3/swaggersource.json       |  14 +-
 115 files changed, 1389 insertions(+), 1140 deletions(-)

diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/index-all.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/index-all.html
index 03e62a52d59..0f14e5dec59 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/index-all.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/index-all.html
@@ -2210,9 +2210,9 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html#createMissedPartitions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">createMissedPartitions(AsyncResponse, String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html" title="class in org.apache.pulsar.broker.admin.v2">PersistentTopics</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#createNamespace(java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.BundlesData)" class="member-name-link">createNamespace(String, String, String, BundlesData)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#createNamespace(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.BundlesData)" class="member-name-link">createNamespace(AsyncResponse, String, String, String, BundlesData)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#createNamespace(java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.Policies)" class="member-name-link">createNamespace(String, String, Policies)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#createNamespace(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.Policies)" class="member-name-link">createNamespace(AsyncResponse, String, String, Policies)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html#createNonPartitionedTopic(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,boolean,java.util.Map)" class="member-name-link">createNonPartitionedTopic(AsyncResponse, String, String, String, boolean, Map&lt;String, String&gt;)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html" title="class in org.apache.pulsar.brok [...]
 <dd>&nbsp;</dd>
@@ -4838,6 +4838,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/AdminResource.html#getPartitionedTopicList(org.apache.pulsar.common.naming.TopicDomain)" class="member-name-link">getPartitionedTopicList(TopicDomain)</a> - Method in class org.apache.pulsar.broker.admin.<a href="org/apache/pulsar/broker/admin/AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/pulsar/broker/admin/AdminResource.html#getPartitionedTopicListAsync(org.apache.pulsar.common.naming.TopicDomain)" class="member-name-link">getPartitionedTopicListAsync(TopicDomain)</a> - Method in class org.apache.pulsar.broker.admin.<a href="org/apache/pulsar/broker/admin/AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)" class="member-name-link">getPartitionedTopicMetadata(PulsarService, String, String, AuthenticationDataSource, TopicName)</a> - Static method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/p [...]
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/AdminResource.html#getPartitionedTopicMetadata(org.apache.pulsar.common.naming.TopicName,boolean,boolean)" class="member-name-link">getPartitionedTopicMetadata(TopicName, boolean, boolean)</a> - Method in class org.apache.pulsar.broker.admin.<a href="org/apache/pulsar/broker/admin/AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></dt>
@@ -4878,9 +4880,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getPermissionOnSubscription(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPermissionOnSubscription(String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getPermissions(java.lang.String,java.lang.String)" class="member-name-link">getPermissions(String, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getPermissions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String)" class="member-name-link">getPermissions(AsyncResponse, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getPermissions(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPermissions(String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getPermissions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPermissions(AsyncResponse, String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html#getPermissionsOnTopic(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPermissionsOnTopic(AsyncResponse, String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/PersistentTopics.html" title="class in org.apache.pulsar.broker.admin.v2">PersistentTopics</a></dt>
 <dd>&nbsp;</dd>
@@ -4902,9 +4904,9 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Get all physical nic path.</div>
 </dd>
-<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getPolicies(java.lang.String,java.lang.String)" class="member-name-link">getPolicies(String, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getPolicies(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String)" class="member-name-link">getPolicies(AsyncResponse, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getPolicies(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPolicies(String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getPolicies(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPolicies(AsyncResponse, String, String, String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/service/persistent/DispatchRateLimiter.html#getPolicies(org.apache.pulsar.broker.service.BrokerService,java.lang.String)" class="member-name-link">getPolicies(BrokerService, String)</a> - Static method in class org.apache.pulsar.broker.service.persistent.<a href="org/apache/pulsar/broker/service/persistent/DispatchRateLimiter.html" title="class in org.apache.pulsar.broker.service.persistent">DispatchRateLimiter</a></dt>
 <dd>&nbsp;</dd>
@@ -5635,9 +5637,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/impl/TenantsBase.html#getTenantAdmin(javax.ws.rs.container.AsyncResponse,java.lang.String)" class="member-name-link">getTenantAdmin(AsyncResponse, String)</a> - Method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/pulsar/broker/admin/impl/TenantsBase.html" title="class in org.apache.pulsar.broker.admin.impl">TenantsBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getTenantNamespaces(java.lang.String)" class="member-name-link">getTenantNamespaces(String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getTenantNamespaces(javax.ws.rs.container.AsyncResponse,java.lang.String)" class="member-name-link">getTenantNamespaces(AsyncResponse, String)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v1">Namespaces</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getTenantNamespaces(java.lang.String)" class="member-name-link">getTenantNamespaces(String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getTenantNamespaces(javax.ws.rs.container.AsyncResponse,java.lang.String)" class="member-name-link">getTenantNamespaces(AsyncResponse, String)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/impl/TenantsBase.html#getTenants(javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTenants(AsyncResponse)</a> - Method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/pulsar/broker/admin/impl/TenantsBase.html" title="class in org.apache.pulsar.broker.admin.impl">TenantsBase</a></dt>
 <dd>&nbsp;</dd>
@@ -5778,9 +5780,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/compaction/CompactorMXBeanImpl.html#getTopics()" class="member-name-link">getTopics()</a> - Method in class org.apache.pulsar.compaction.<a href="org/apache/pulsar/compaction/CompactorMXBeanImpl.html" title="class in org.apache.pulsar.compaction">CompactorMXBeanImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getTopics(java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode,javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTopics(String, String, String, CommandGetTopicsOfNamespace.Mode, AsyncResponse)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.brok [...]
+<dt><a href="org/apache/pulsar/broker/admin/v1/Namespaces.html#getTopics(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode)" class="member-name-link">getTopics(AsyncResponse, String, String, String, CommandGetTopicsOfNamespace.Mode)</a> - Method in class org.apache.pulsar.broker.admin.v1.<a href="org/apache/pulsar/broker/admin/v1/Namespaces.html" title="class in org.apache.pulsar.brok [...]
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getTopics(java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode,javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTopics(String, String, CommandGetTopicsOfNamespace.Mode, AsyncResponse)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
+<dt><a href="org/apache/pulsar/broker/admin/v2/Namespaces.html#getTopics(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode)" class="member-name-link">getTopics(AsyncResponse, String, String, CommandGetTopicsOfNamespace.Mode)</a> - Method in class org.apache.pulsar.broker.admin.v2.<a href="org/apache/pulsar/broker/admin/v2/Namespaces.html" title="class in org.apache.pulsar.broker.admin.v2">Namespaces</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/admin/impl/BrokerStatsBase.html#getTopics2()" class="member-name-link">getTopics2()</a> - Method in class org.apache.pulsar.broker.admin.impl.<a href="org/apache/pulsar/broker/admin/impl/BrokerStatsBase.html" title="class in org.apache.pulsar.broker.admin.impl">BrokerStatsBase</a></dt>
 <dd>&nbsp;</dd>
@@ -13234,6 +13236,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/web/PulsarWebResource.html#validateClusterForTenant(java.lang.String,java.lang.String)" class="member-name-link">validateClusterForTenant(String, String)</a> - Method in class org.apache.pulsar.broker.web.<a href="org/apache/pulsar/broker/web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/pulsar/broker/web/PulsarWebResource.html#validateClusterForTenantAsync(java.lang.String,java.lang.String)" class="member-name-link">validateClusterForTenantAsync(String, String)</a> - Method in class org.apache.pulsar.broker.web.<a href="org/apache/pulsar/broker/web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/pulsar/broker/web/PulsarWebResource.html#validateClusterOwnership(java.lang.String)" class="member-name-link">validateClusterOwnership(String)</a> - Method in class org.apache.pulsar.broker.web.<a href="org/apache/pulsar/broker/web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></dt>
 <dd>
 <div class="block">Check if the cluster exists and redirect the call to the owning cluster.</div>
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/member-search-index.js b/content/api/pulsar-broker/2.11.0-SNAPSHOT/member-search-index.js
index 19417e1e480..ff1a22b1f24 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/member-search-index.js
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT"},{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT_VALUE"},{"p":"org.apache.pulsar.broker.stats.prometheus","c":"AggregatedTransactionCoordinatorStats","l":"abortedCount"},{"p":"org.apache.pulsar.broker.transaction.buffer","c":"TransactionMeta","l":"abortTxn()"},{"p":"org.apache.pulsar.broker.transaction.buffer","c":"TransactionCursor", [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT"},{"p":"org.apache.pulsar.broker.transaction.pendingack.proto","c":"PendingAckOp","l":"ABORT_VALUE"},{"p":"org.apache.pulsar.broker.stats.prometheus","c":"AggregatedTransactionCoordinatorStats","l":"abortedCount"},{"p":"org.apache.pulsar.broker.transaction.buffer","c":"TransactionMeta","l":"abortTxn()"},{"p":"org.apache.pulsar.broker.transaction.buffer","c":"TransactionCursor", [...]
\ No newline at end of file
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/AdminResource.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/AdminResource.html
index 88b16ee8aef..0a2351bf4b0 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/AdminResource.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/AdminResource.html
@@ -198,159 +198,162 @@ loadScripts(document, 'script');</script>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPartitionedTopicList(org.apache.pulsar.common.naming.TopicDomain)" class="member-name-link">getPartitionedTopicList</a><wbr>(org.apache.pulsar.common.naming.TopicDomain&nbsp;topicDomain)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.partition.PartitionedTopicMetadata</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPartitionedTopicMetadata(org.apache.pulsar.common.naming.TopicName,boolean,boolean)" class="member-name-link">getPartitionedTopicMetadata</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
- boolean&nbsp;authoritative,
- boolean&nbsp;checkAllowAutoCreation)</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link" [...]
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPartitionedTopicListAsync(org.apache.pulsar.common.naming.TopicDomain)" class="member-name-link">getPartitionedTopicListAsync</a><wbr>(org.apache.pulsar.common.naming.TopicDomain&nbsp;topicDomain)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;org.apache.pulsar.common.partition.PartitionedTopicMetadata&gt;</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPartitionedTopicMetadataAsync(org.apache.pulsar.common.naming.TopicName,boolean,boolean)" class="member-name-link">getPartitionedTopicMetadataAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.partition.PartitionedTopicMetadata</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPartitionedTopicMetadata(org.apache.pulsar.common.naming.TopicName,boolean,boolean)" class="member-name-link">getPartitionedTopicMetadata</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
  boolean&nbsp;authoritative,
  boolean&nbsp;checkAllowAutoCreation)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy&gt;</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSchemaCompatibilityStrategyAsync()" class="member-name-link">getSchemaCompatibilityStrategyAsync</a>()</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;org.apache.pulsar.common.partition.PartitionedTopicMetadata&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPartitionedTopicMetadataAsync(org.apache.pulsar.common.naming.TopicName,boolean,boolean)" class="member-name-link">getPartitionedTopicMetadataAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+ boolean&nbsp;authoritative,
+ boolean&nbsp;checkAllowAutoCreation)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicPartitionList(org.apache.pulsar.common.naming.TopicDomain)" class="member-name-link">getTopicPartitionList</a><wbr>(org.apache.pulsar.common.naming.TopicDomain&nbsp;topicDomain)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy&gt;</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSchemaCompatibilityStrategyAsync()" class="member-name-link">getSchemaCompatibilityStrategyAsync</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-l [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicPoliciesAsyncWithRetry(org.apache.pulsar.common.naming.TopicName)" class="member-name-link">getTopicPoliciesAsyncWithRetry</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName)</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicPartitionList(org.apache.pulsar.common.naming.TopicDomain)" class="member-name-link">getTopicPartitionList</a><wbr>(org.apache.pulsar.common.naming.TopicDomain&nbsp;topicDomain)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-li [...]
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicPoliciesAsyncWithRetry(org.apache.pulsar.common.naming.TopicName,boolean)" class="member-name-link">getTopicPoliciesAsyncWithRetry</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
- boolean&nbsp;isGlobal)</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicPoliciesAsyncWithRetry(org.apache.pulsar.common.naming.TopicName)" class="member-name-link">getTopicPoliciesAsyncWithRetry</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalCreatePartitionedTopic(javax.ws.rs.container.AsyncResponse,int,boolean)" class="member-name-link">internalCreatePartitionedTopic</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
- int&nbsp;numPartitions,
- boolean&nbsp;createLocalTopicOnly)</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Optional.html" title="class or interface in java.util" class="external-l [...]
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicPoliciesAsyncWithRetry(org.apache.pulsar.common.naming.TopicName,boolean)" class="member-name-link">getTopicPoliciesAsyncWithRetry</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+ boolean&nbsp;isGlobal)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalCreatePartitionedTopic(javax.ws.rs.container.AsyncResponse,int,boolean,java.util.Map)" class="member-name-link">internalCreatePartitionedTopic</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalCreatePartitionedTopic(javax.ws.rs.container.AsyncResponse,int,boolean)" class="member-name-link">internalCreatePartitionedTopic</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
+ int&nbsp;numPartitions,
+ boolean&nbsp;createLocalTopicOnly)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalCreatePartitionedTopic(javax.ws.rs.container.AsyncResponse,int,boolean,java.util.Map)" class="member-name-link">internalCreatePartitionedTopic</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
  int&nbsp;numPartitions,
  boolean&nbsp;createLocalTopicOnly,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">St [...]
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isLeaderBroker()" class="member-name-link">isLeaderBroker</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isManagedLedgerNotFoundException(java.lang.Exception)" class="member-name-link">isManagedLedgerNotFoundException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a>&nbsp;e)</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isLeaderBroker()" class="member-name-link">isLeaderBroker</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isNamespaceReplicated(org.apache.pulsar.common.naming.NamespaceName)" class="member-name-link">isNamespaceReplicated</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isManagedLedgerNotFoundException(java.lang.Exception)" class="member-name-link">isManagedLedgerNotFoundException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a>&nbsp;e)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static boolean</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isRedirectException(java.lang.Throwable)" class="member-name-link">isRedirectException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;ex)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isNamespaceReplicated(org.apache.pulsar.common.naming.NamespaceName)" class="member-name-link">isNamespaceReplicated</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static boolean</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isRedirectException(java.lang.Throwable)" class="member-name-link">isRedirectException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;ex)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
 <div class="block">Check current exception whether is redirect exception.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static com.fasterxml.jackson.databind.ObjectMapper</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#jsonMapper()" class="member-name-link">jsonMapper</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.BacklogQuota</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#namespaceBacklogQuota(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType)" class="member-name-link">namespaceBacklogQuota</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespace,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static com.fasterxml.jackson.databind.ObjectMapper</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#jsonMapper()" class="member-name-link">jsonMapper</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.BacklogQuota</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#namespaceBacklogQuota(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType)" class="member-name-link">namespaceBacklogQuota</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespace,
  org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType&nbsp;backlogQuotaType)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.impl.DispatchRateImpl</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replicatorDispatchRate()" class="member-name-link">replicatorDispatchRate</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#resumeAsyncResponseExceptionally(javax.ws.rs.container.AsyncResponse,java.lang.Throwable)" class="member-name-link">resumeAsyncResponseExceptionally</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.impl.DispatchRateImpl</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#replicatorDispatchRate()" class="member-name-link">replicatorDispatchRate</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>protected static void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#resumeAsyncResponseExceptionally(javax.ws.rs.container.AsyncResponse,java.lang.Throwable)" class="member-name-link">resumeAsyncResponseExceptionally</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a>&nbsp;exception)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setServletContext(javax.servlet.ServletContext)" class="member-name-link">setServletContext</a><wbr>(javax.servlet.ServletContext&nbsp;servletContext)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.SubscribeRate</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#subscribeRate()" class="member-name-link">subscribeRate</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setServletContext(javax.servlet.ServletContext)" class="member-name-link">setServletContext</a><wbr>(javax.servlet.ServletContext&nbsp;servletContext)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.impl.DispatchRateImpl</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#subscriptionDispatchRate()" class="member-name-link">subscriptionDispatchRate</a>()</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.SubscribeRate</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#subscribeRate()" class="member-name-link">subscribeRate</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#tryCreatePartitionsAsync(int)" class="member-name-link">tryCreatePartitionsAsync</a><wbr>(int&nbsp;numPartitions)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.impl.DispatchRateImpl</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#subscriptionDispatchRate()" class="member-name-link">subscriptionDispatchRate</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateAdminAccessForTenant(java.lang.String)" class="member-name-link">validateAdminAccessForTenant</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link" [...]
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#tryCreatePartitionsAsync(int)" class="member-name-link">tryCreatePartitionsAsync</a><wbr>(int&nbsp;numPartitions)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateAdminAccessForTenant(java.lang.String)" class="member-name-link">validateAdminAccessForTenant</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Checks that the http client role has admin access to the specified tenant.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateBundleOwnership(java.lang.String,java.lang.String,java.lang.String,boolean,boolean,org.apache.pulsar.common.naming.NamespaceBundle)" class="member-name-link">validateBundleOwnership</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>& [...]
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateBundleOwnership(java.lang.String,java.lang.String,java.lang.String,boolean,boolean,org.apache.pulsar.common.naming.NamespaceBundle)" class="member-name-link">validateBundleOwnership</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> [...]
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  boolean&nbsp;authoritative,
  boolean&nbsp;readOnly,
  <a href="../../common/naming/NamespaceBundle.html" title="class in org.apache.pulsar.common.naming">NamespaceBundle</a>&nbsp;bundle)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterExists(java.lang.String)" class="member-name-link">validateClusterExists</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateGlobalNamespaceOwnership()" class="member-name-link">validateGlobalNamespaceOwnership</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterExists(java.lang.String)" class="member-name-link">validateClusterExists</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceName(java.lang.String,java.lang.String)" class="member-name-link">validateNamespaceName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateGlobalNamespaceOwnership()" class="member-name-link">validateGlobalNamespaceOwnership</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#validateNamespaceName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validateNamespaceName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceName(java.lang.String,java.lang.String)" class="member-name-link">validateNamespaceName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#validateNamespaceName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validateNamespaceName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
 <div class="block"><span class="deprecated-label">Deprecated.</span></div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link" [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePartitionedTopicMetadataAsync()" class="member-name-link">validatePartitionedTopicMetadataAsync</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePartitionedTopicName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validatePartitionedTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
- <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;encodedTopic)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePartitionedTopicMetadataAsync()" class="member-name-link">validatePartitionedTopicMetadataAsync</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePersistencePolicies(org.apache.pulsar.common.policies.data.PersistencePolicies)" class="member-name-link">validatePersistencePolicies</a><wbr>(org.apache.pulsar.common.policies.data.PersistencePolicies&nbsp;persistence)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePartitionedTopicName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validatePartitionedTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;encodedTopic)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePersistentTopicName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validatePersistentTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePersistencePolicies(org.apache.pulsar.common.policies.data.PersistencePolicies)" class="member-name-link">validatePersistencePolicies</a><wbr>(org.apache.pulsar.common.policies.data.PersistencePolicies&nbsp;persistence)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePersistentTopicName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validatePersistentTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;encodedTopic)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#validatePersistentTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validatePersistentTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#validatePersistentTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validatePersistentTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;encodedTopic)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
 <div class="block"><span class="deprecated-label">Deprecated.</span></div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePoliciesReadOnlyAccess()" class="member-name-link">validatePoliciesReadOnlyAccess</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePoliciesReadOnlyAccess()" class="member-name-link">validatePoliciesReadOnlyAccess</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Checks whether the broker is allowed to do read-write operations based on the existence of a node in
  configuration metadata-store.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePoliciesReadOnlyAccessAsync()" class="member-name-link">validatePoliciesReadOnlyAccessAsync</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateSuperUserAccess()" class="member-name-link">validateSuperUserAccess</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePoliciesReadOnlyAccessAsync()" class="member-name-link">validatePoliciesReadOnlyAccessAsync</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateSuperUserAccess()" class="member-name-link">validateSuperUserAccess</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Checks whether the user has Pulsar Super-User access to the system.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validateTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicName(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validateTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;encodedTopic)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#validateTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validateTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#validateTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">validateTopicName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;encodedTopic)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
 <div class="block"><span class="deprecated-label">Deprecated.</span></div>
 </div>
 </div>
@@ -358,7 +361,7 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
+<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
@@ -732,6 +735,12 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
+<section class="detail" id="getPartitionedTopicListAsync(org.apache.pulsar.common.naming.TopicDomain)">
+<h3>getPartitionedTopicListAsync</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="htt [...]
+</section>
+</li>
+<li>
 <section class="detail" id="getTopicPartitionList(org.apache.pulsar.common.naming.TopicDomain)">
 <h3>getTopicPartitionList</h3>
 <div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getTopicPartitio [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokerStatsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokerStatsBase.html
index 9941f37259c..f043319b7c8 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokerStatsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokerStatsBase.html
@@ -152,10 +152,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html
index 340611b6c38..0d9f460fa4d 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/BrokersBase.html
@@ -191,10 +191,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ClustersBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ClustersBase.html
index 9f436d16a76..a89625bc6a0 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ClustersBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ClustersBase.html
@@ -204,10 +204,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/FunctionsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/FunctionsBase.html
index 255c160b558..efe0f571fc5 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/FunctionsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/FunctionsBase.html
@@ -264,10 +264,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/NamespacesBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/NamespacesBase.html
index 36197bc78e2..666c83293c5 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/NamespacesBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/NamespacesBase.html
@@ -150,7 +150,7 @@ loadScripts(document, 'script');</script>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalClearZkSources()" class="member-name-link">internalClearZkSources</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link" [...]
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalCreateNamespace(org.apache.pulsar.common.policies.data.Policies)" class="member-name-link">internalCreateNamespace</a><wbr>(org.apache.pulsar.common.policies.data.Policies&nbsp;policies)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
@@ -307,7 +307,7 @@ loadScripts(document, 'script');</script>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;org.apache.pulsar.client.api.SubscriptionType&gt;</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalGetSubscriptionTypesEnabled()" class="member-name-link">internalGetSubscriptionTypesEnabled</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link" [...]
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#internalGetTenantNamespaces(java.lang.String)" class="member-name-link">internalGetTenantNamespaces</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected org.apache.pulsar.common.policies.data.DispatchRate</code></div>
@@ -534,10 +534,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
@@ -569,13 +569,13 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="internalGetTenantNamespaces(java.lang.String)">
 <h3>internalGetTenantNamespaces</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">internalGetTenan [...]
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="htt [...]
 </section>
 </li>
 <li>
 <section class="detail" id="internalCreateNamespace(org.apache.pulsar.common.policies.data.Policies)">
 <h3>internalCreateNamespace</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">internalCreateNamespace</span><wbr><span class="parameters">(org.apache.pulsar.common.policies.data.Policies&nbsp;policies)</span></div>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp [...]
 </section>
 </li>
 <li>
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PackagesBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PackagesBase.html
index 80babbdf767..ed6899fb1bc 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PackagesBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PackagesBase.html
@@ -186,10 +186,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html
index 99a19e76221..e838375613b 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.html
@@ -640,10 +640,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceGroupsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceGroupsBase.html
index c7e721d180d..6e2928b1000 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceGroupsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceGroupsBase.html
@@ -155,10 +155,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceQuotasBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceQuotasBase.html
index 02d483a621a..3d2256a0fd1 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceQuotasBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/ResourceQuotasBase.html
@@ -152,10 +152,10 @@ loadScripts(document, 'script');</script>
 <code><a href="NamespacesBase.html#internalClearNamespaceBacklog(javax.ws.rs.container.AsyncResponse,boolean)">internalClearNamespaceBacklog</a>, <a href="NamespacesBase.html#internalClearNamespaceBacklogForSubscription(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">internalClearNamespaceBacklogForSubscription</a>, <a href="NamespacesBase.html#internalClearNamespaceBundleBacklog(java.lang.String,boolean)">internalClearNamespaceBundleBacklog</a>, <a href="NamespacesBase.ht [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.html
index 387d47fac24..e6057ba763f 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.html
@@ -171,10 +171,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SinksBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SinksBase.html
index b5694412b58..7e3d2b02832 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SinksBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SinksBase.html
@@ -217,10 +217,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SourcesBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SourcesBase.html
index d0aff332b3f..a74860bd794 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SourcesBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/SourcesBase.html
@@ -217,10 +217,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TenantsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TenantsBase.html
index c8034b3ba9d..c3edf2f71f1 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TenantsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TenantsBase.html
@@ -161,7 +161,7 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TransactionsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TransactionsBase.html
index fa8a7d38ed4..92100d96a63 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TransactionsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/impl/TransactionsBase.html
@@ -191,10 +191,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/BrokerStats.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/BrokerStats.html
index 54734c4cac6..0d601d41e49 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/BrokerStats.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/BrokerStats.html
@@ -139,10 +139,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/BrokerStatsBase.html#getAllocatorStats(java.lang.String)">getAllocatorStats</a>, <a href="../impl/BrokerStatsBase.html#getLoadReport()">getLoadReport</a>, <a href="../impl/BrokerStatsBase.html#getMBeans()">getMBeans</a>, <a href="../impl/BrokerStatsBase.html#getMetrics()">getMetrics</a>, <a href="../impl/BrokerStatsBase.html#getPendingBookieOpsStats()">getPendingBookieOpsStats</a>, <a href="../impl/BrokerStatsBase.html#getTopics2()">getTopics2</a>, <a href="../impl [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html
index c3116ea4734..15ca9dce62f 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Brokers.html
@@ -123,10 +123,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/BrokersBase.html#backlogQuotaCheck(javax.ws.rs.container.AsyncResponse)">backlogQuotaCheck</a>, <a href="../impl/BrokersBase.html#deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteDynamicConfiguration</a>, <a href="../impl/BrokersBase.html#getActiveBrokers(javax.ws.rs.container.AsyncResponse,java.lang.String)">getActiveBrokers</a>, <a href="../impl/BrokersBase.html#getAllDynamicConfigurations(javax.ws.rs.container.AsyncResponse [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Clusters.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Clusters.html
index 62bcf619559..ec04d1988f1 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Clusters.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Clusters.html
@@ -120,10 +120,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/ClustersBase.html#createCluster(javax.ws.rs.container.AsyncResponse,java.lang.String,org.apache.pulsar.common.policies.data.ClusterDataImpl)">createCluster</a>, <a href="../impl/ClustersBase.html#deleteCluster(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteCluster</a>, <a href="../impl/ClustersBase.html#deleteFailureDomain(java.lang.String,java.lang.String)">deleteFailureDomain</a>, <a href="../impl/ClustersBase.html#deleteNamespaceIsolationPolicy(jav [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Functions.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Functions.html
index 8a20c0c0741..837d107fc2a 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Functions.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Functions.html
@@ -121,10 +121,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../v2/Functions.html#deregisterFunction(java.lang.String,java.lang.String,java.lang.String)">deregisterFunction</a>, <a href="../v2/Functions.html#downloadFunction(java.lang.String)">downloadFunction</a>, <a href="../v2/Functions.html#getConnectorsList()">getConnectorsList</a>, <a href="../v2/Functions.html#getFunctionInfo(java.lang.String,java.lang.String,java.lang.String)">getFunctionInfo</a>, <a href="../v2/Functions.html#getFunctionInstanceStatus(java.lang.String,java. [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Namespaces.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Namespaces.html
index 88cec0b8573..02b26492a25 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Namespaces.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Namespaces.html
@@ -158,7 +158,8 @@ loadScripts(document, 'script');</script>
  boolean&nbsp;authoritative)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createNamespace(java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.BundlesData)" class="member-name-link">createNamespace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createNamespace(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.BundlesData)" class="member-name-link">createNamespace</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  org.apache.pulsar.common.policies.data.BundlesData&nbsp;initialBundles)</code></div>
@@ -278,8 +279,9 @@ loadScripts(document, 'script');</script>
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/j [...]
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPermissions(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPermissions</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPermissions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPermissions</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
@@ -288,8 +290,9 @@ loadScripts(document, 'script');</script>
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.pulsar.common.policies.data.Policies</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPolicies(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPolicies</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPolicies(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getPolicies</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
@@ -328,8 +331,9 @@ loadScripts(document, 'script');</script>
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTenantNamespaces(java.lang.String)" class="member-name-link">getTenantNamespaces</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTenantNamespaces(javax.ws.rs.container.AsyncResponse,java.lang.String)" class="member-name-link">getTenantNamespaces</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicHashPositions(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.util.List,javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTopicHashPositions</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> [...]
@@ -340,11 +344,11 @@ loadScripts(document, 'script');</script>
  javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopics(java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode,javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTopics</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopics(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode)" class="member-name-link">getTopics</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
- org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode,
- javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse)</code></div>
+ org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#grantPermissionOnNamespace(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.util.Set)" class="member-name-link">grantPermissionOnNamespace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
@@ -600,10 +604,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/NamespacesBase.html#internalClearNamespaceBacklog(javax.ws.rs.container.AsyncResponse,boolean)">internalClearNamespaceBacklog</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBacklogForSubscription(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">internalClearNamespaceBacklogForSubscription</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBundleBacklog(java.lang.String,boolean)">internalClearNamespaceBundleBacklog</a>, <a [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
@@ -633,11 +637,13 @@ loadScripts(document, 'script');</script>
 <h2>Method Details</h2>
 <ul class="member-list">
 <li>
-<section class="detail" id="getTenantNamespaces(java.lang.String)">
+<section class="detail" id="getTenantNamespaces(javax.ws.rs.container.AsyncResponse,java.lang.String)">
 <h3>getTenantNamespaces</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{property}")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getTenantNamespaces</span><wbr><span class [...]
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getTenantNamespaces</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("property")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property)</span></div>
 </section>
 </li>
@@ -653,28 +659,30 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
-<section class="detail" id="getTopics(java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode,javax.ws.rs.container.AsyncResponse)">
+<section class="detail" id="getTopics(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode)">
 <h3>getTopics</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{property}/{cluster}/{namespace}/destinations")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getTopics</span><wbr><span class="parameters">(@PathParam("property")
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getTopics</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("property")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  @PathParam("cluster")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
  @PathParam("namespace")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  @QueryParam("mode") @DefaultValue("PERSISTENT")
- org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode,
- @Suspended
- javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse)</span></div>
+ org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode)</span></div>
 </section>
 </li>
 <li>
-<section class="detail" id="getPolicies(java.lang.String,java.lang.String,java.lang.String)">
+<section class="detail" id="getPolicies(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)">
 <h3>getPolicies</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{property}/{cluster}/{namespace}")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.pulsar.common.policies.data.Policies</span>&nbsp;<span class="element-name">getPolicies</span><wbr><span class="parameters">(@PathParam("property")
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getPolicies</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("property")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  @PathParam("cluster")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
@@ -683,11 +691,13 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
-<section class="detail" id="createNamespace(java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.BundlesData)">
+<section class="detail" id="createNamespace(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.BundlesData)">
 <h3>createNamespace</h3>
 <div class="member-signature"><span class="annotations">@PUT
 @Path("/{property}/{cluster}/{namespace}")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">createNamespace</span><wbr><span class="parameters">(@PathParam("property")
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">createNamespace</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("property")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  @PathParam("cluster")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
@@ -735,11 +745,13 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
-<section class="detail" id="getPermissions(java.lang.String,java.lang.String,java.lang.String)">
+<section class="detail" id="getPermissions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,java.lang.String)">
 <h3>getPermissions</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{property}/{cluster}/{namespace}/permissions")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Se [...]
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getPermissions</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("property")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;property,
  @PathParam("cluster")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster,
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/NonPersistentTopics.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/NonPersistentTopics.html
index 83f2b51212d..a7a51ffca1c 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/NonPersistentTopics.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/NonPersistentTopics.html
@@ -186,10 +186,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/PersistentTopicsBase.html#filterSystemTopic(java.util.List,boolean)">filterSystemTopic</a>, <a href="../impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)">getPartitionedTopicMetadata</a>, <a href="../impl/PersistentTopicsBase.html#handleTopicPolicyException(java.lang.String,java [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/PersistentTopics.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/PersistentTopics.html
index 5d68fc437a5..1d56ffe4a50 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/PersistentTopics.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/PersistentTopics.html
@@ -477,10 +477,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/PersistentTopicsBase.html#filterSystemTopic(java.util.List,boolean)">filterSystemTopic</a>, <a href="../impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)">getPartitionedTopicMetadata</a>, <a href="../impl/PersistentTopicsBase.html#handleTopicPolicyException(java.lang.String,java [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Properties.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Properties.html
index 0b591410a88..41fdbcfb10d 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Properties.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/Properties.html
@@ -116,7 +116,7 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/TenantsBase.html#createTenant(javax.ws.rs.container.AsyncResponse,java.lang.String,org.apache.pulsar.common.policies.data.TenantInfoImpl)">createTenant</a>, <a href="../impl/TenantsBase.html#deleteTenant(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">deleteTenant</a>, <a href="../impl/TenantsBase.html#getTenantAdmin(javax.ws.rs.container.AsyncResponse,java.lang.String)">getTenantAdmin</a>, <a href="../impl/TenantsBase.html#getTenants(javax.ws.rs.con [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/ResourceQuotas.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/ResourceQuotas.html
index 84d85d3871c..2e07f11d240 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/ResourceQuotas.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/ResourceQuotas.html
@@ -159,10 +159,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/NamespacesBase.html#internalClearNamespaceBacklog(javax.ws.rs.container.AsyncResponse,boolean)">internalClearNamespaceBacklog</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBacklogForSubscription(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">internalClearNamespaceBacklogForSubscription</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBundleBacklog(java.lang.String,boolean)">internalClearNamespaceBundleBacklog</a>, <a [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/SchemasResource.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/SchemasResource.html
index f6a9487a59b..7d4cd800e9f 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/SchemasResource.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v1/SchemasResource.html
@@ -194,10 +194,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/SchemasResourceBase.html#deleteSchema(boolean,javax.ws.rs.container.AsyncResponse,boolean)">deleteSchema</a>, <a href="../impl/SchemasResourceBase.html#domain()">domain</a>, <a href="../impl/SchemasResourceBase.html#getAllSchemas(boolean,javax.ws.rs.container.AsyncResponse)">getAllSchemas</a>, <a href="../impl/SchemasResourceBase.html#getSchema(boolean,java.lang.String,javax.ws.rs.container.AsyncResponse)">getSchema</a>, <a href="../impl/SchemasResourceBase.html#ge [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Bookies.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Bookies.html
index 36807d98590..d69414c3c6e 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Bookies.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Bookies.html
@@ -149,10 +149,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/BrokerStats.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/BrokerStats.html
index ec9d9d5f5cf..ec53f4806ac 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/BrokerStats.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/BrokerStats.html
@@ -141,10 +141,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/BrokerStatsBase.html#getAllocatorStats(java.lang.String)">getAllocatorStats</a>, <a href="../impl/BrokerStatsBase.html#getLoadReport()">getLoadReport</a>, <a href="../impl/BrokerStatsBase.html#getMBeans()">getMBeans</a>, <a href="../impl/BrokerStatsBase.html#getMetrics()">getMetrics</a>, <a href="../impl/BrokerStatsBase.html#getPendingBookieOpsStats()">getPendingBookieOpsStats</a>, <a href="../impl/BrokerStatsBase.html#internalBrokerResourceAvailability(org.apache. [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html
index bd09203bc7b..2a1d73401cc 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Brokers.html
@@ -123,10 +123,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/BrokersBase.html#backlogQuotaCheck(javax.ws.rs.container.AsyncResponse)">backlogQuotaCheck</a>, <a href="../impl/BrokersBase.html#deleteDynamicConfiguration(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteDynamicConfiguration</a>, <a href="../impl/BrokersBase.html#getActiveBrokers(javax.ws.rs.container.AsyncResponse,java.lang.String)">getActiveBrokers</a>, <a href="../impl/BrokersBase.html#getAllDynamicConfigurations(javax.ws.rs.container.AsyncResponse [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Clusters.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Clusters.html
index 2a0f987fb63..ad7fcdda523 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Clusters.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Clusters.html
@@ -120,10 +120,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/ClustersBase.html#createCluster(javax.ws.rs.container.AsyncResponse,java.lang.String,org.apache.pulsar.common.policies.data.ClusterDataImpl)">createCluster</a>, <a href="../impl/ClustersBase.html#deleteCluster(javax.ws.rs.container.AsyncResponse,java.lang.String)">deleteCluster</a>, <a href="../impl/ClustersBase.html#deleteFailureDomain(java.lang.String,java.lang.String)">deleteFailureDomain</a>, <a href="../impl/ClustersBase.html#deleteNamespaceIsolationPolicy(jav [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Functions.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Functions.html
index 1c96b26346b..46fd0841a09 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Functions.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Functions.html
@@ -223,10 +223,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Namespaces.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Namespaces.html
index 49be94d372c..82fd486dea2 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Namespaces.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Namespaces.html
@@ -163,7 +163,8 @@ loadScripts(document, 'script');</script>
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createNamespace(java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.Policies)" class="member-name-link">createNamespace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createNamespace(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.Policies)" class="member-name-link">createNamespace</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  org.apache.pulsar.common.policies.data.Policies&nbsp;policies)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
@@ -322,16 +323,18 @@ loadScripts(document, 'script');</script>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPermissionOnSubscription(java.lang.String,java.lang.String)" class="member-name-link">getPermissionOnSubscription</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/ [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPermissions(java.lang.String,java.lang.String)" class="member-name-link">getPermissions</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPermissions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String)" class="member-name-link">getPermissions</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.pulsar.common.policies.data.PersistencePolicies</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPersistence(java.lang.String,java.lang.String)" class="member-name-link">getPersistence</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.apache.pulsar.common.policies.data.Policies</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPolicies(java.lang.String,java.lang.String)" class="member-name-link">getPolicies</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPolicies(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String)" class="member-name-link">getPolicies</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
@@ -390,8 +393,9 @@ loadScripts(document, 'script');</script>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSubscriptionTypesEnabled(java.lang.String,java.lang.String)" class="member-name-link">getSubscriptionTypesEnabled</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTenantNamespaces(java.lang.String)" class="member-name-link">getTenantNamespaces</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant)</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTenantNamespaces(javax.ws.rs.container.AsyncResponse,java.lang.String)" class="member-name-link">getTenantNamespaces</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopicHashPositions(java.lang.String,java.lang.String,java.lang.String,java.util.List,javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTopicHashPositions</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
@@ -401,10 +405,10 @@ loadScripts(document, 'script');</script>
  javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopics(java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode,javax.ws.rs.container.AsyncResponse)" class="member-name-link">getTopics</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp [...]
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTopics(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode)" class="member-name-link">getTopics</a><wbr>(javax.ws.rs.container.AsyncResponse&nbsp;response,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
- org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode,
- javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse)</code></div>
+ org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#grantPermissionOnNamespace(java.lang.String,java.lang.String,java.lang.String,java.util.Set)" class="member-name-link">grantPermissionOnNamespace</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
@@ -783,10 +787,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/NamespacesBase.html#internalClearNamespaceBacklog(javax.ws.rs.container.AsyncResponse,boolean)">internalClearNamespaceBacklog</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBacklogForSubscription(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">internalClearNamespaceBacklogForSubscription</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBundleBacklog(java.lang.String,boolean)">internalClearNamespaceBundleBacklog</a>, <a [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
@@ -816,46 +820,52 @@ loadScripts(document, 'script');</script>
 <h2>Method Details</h2>
 <ul class="member-list">
 <li>
-<section class="detail" id="getTenantNamespaces(java.lang.String)">
+<section class="detail" id="getTenantNamespaces(javax.ws.rs.container.AsyncResponse,java.lang.String)">
 <h3>getTenantNamespaces</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{tenant}")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getTenantNamespaces</span><wbr><span class [...]
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getTenantNamespaces</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("tenant")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant)</span></div>
 </section>
 </li>
 <li>
-<section class="detail" id="getTopics(java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode,javax.ws.rs.container.AsyncResponse)">
+<section class="detail" id="getTopics(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode)">
 <h3>getTopics</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{tenant}/{namespace}/topics")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getTopics</span><wbr><span class="parameters">(@PathParam("tenant")
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getTopics</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("tenant")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  @PathParam("namespace")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
  @QueryParam("mode") @DefaultValue("PERSISTENT")
- org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode,
- @Suspended
- javax.ws.rs.container.AsyncResponse&nbsp;asyncResponse)</span></div>
+ org.apache.pulsar.common.api.proto.CommandGetTopicsOfNamespace.Mode&nbsp;mode)</span></div>
 </section>
 </li>
 <li>
-<section class="detail" id="getPolicies(java.lang.String,java.lang.String)">
+<section class="detail" id="getPolicies(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String)">
 <h3>getPolicies</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{tenant}/{namespace}")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.pulsar.common.policies.data.Policies</span>&nbsp;<span class="element-name">getPolicies</span><wbr><span class="parameters">(@PathParam("tenant")
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getPolicies</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("tenant")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  @PathParam("namespace")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</span></div>
 </section>
 </li>
 <li>
-<section class="detail" id="createNamespace(java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.Policies)">
+<section class="detail" id="createNamespace(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String,org.apache.pulsar.common.policies.data.Policies)">
 <h3>createNamespace</h3>
 <div class="member-signature"><span class="annotations">@PUT
 @Path("/{tenant}/{namespace}")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">createNamespace</span><wbr><span class="parameters">(@PathParam("tenant")
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">createNamespace</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("tenant")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  @PathParam("namespace")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace,
@@ -897,11 +907,13 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
-<section class="detail" id="getPermissions(java.lang.String,java.lang.String)">
+<section class="detail" id="getPermissions(javax.ws.rs.container.AsyncResponse,java.lang.String,java.lang.String)">
 <h3>getPermissions</h3>
 <div class="member-signature"><span class="annotations">@GET
 @Path("/{tenant}/{namespace}/permissions")
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Se [...]
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getPermissions</span><wbr><span class="parameters">(@Suspended
+ javax.ws.rs.container.AsyncResponse&nbsp;response,
+ @PathParam("tenant")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  @PathParam("namespace")
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;namespace)</span></div>
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/NonPersistentTopics.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/NonPersistentTopics.html
index a75e0429d6e..4c0ea70484f 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/NonPersistentTopics.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/NonPersistentTopics.html
@@ -204,10 +204,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/PersistentTopicsBase.html#filterSystemTopic(java.util.List,boolean)">filterSystemTopic</a>, <a href="../impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)">getPartitionedTopicMetadata</a>, <a href="../impl/PersistentTopicsBase.html#handleTopicPolicyException(java.lang.String,java [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/PersistentTopics.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/PersistentTopics.html
index 7d76af4dd39..fbaa5c07412 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/PersistentTopics.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/PersistentTopics.html
@@ -1163,10 +1163,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/PersistentTopicsBase.html#filterSystemTopic(java.util.List,boolean)">filterSystemTopic</a>, <a href="../impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)">getPartitionedTopicMetadata</a>, <a href="../impl/PersistentTopicsBase.html#handleTopicPolicyException(java.lang.String,java [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceGroups.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceGroups.html
index 909fc5ba038..364149090d1 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceGroups.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceGroups.html
@@ -148,10 +148,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/ResourceGroupsBase.html#internalCheckRgInUse(java.lang.String)">internalCheckRgInUse</a>, <a href="../impl/ResourceGroupsBase.html#internalCreateOrUpdateResourceGroup(java.lang.String,org.apache.pulsar.common.policies.data.ResourceGroup)">internalCreateOrUpdateResourceGroup</a>, <a href="../impl/ResourceGroupsBase.html#internalCreateResourceGroup(java.lang.String,org.apache.pulsar.common.policies.data.ResourceGroup)">internalCreateResourceGroup</a>, <a href="../imp [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceQuotas.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceQuotas.html
index 358488997aa..3a0a01b2c64 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceQuotas.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/ResourceQuotas.html
@@ -162,10 +162,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/NamespacesBase.html#internalClearNamespaceBacklog(javax.ws.rs.container.AsyncResponse,boolean)">internalClearNamespaceBacklog</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBacklogForSubscription(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">internalClearNamespaceBacklogForSubscription</a>, <a href="../impl/NamespacesBase.html#internalClearNamespaceBundleBacklog(java.lang.String,boolean)">internalClearNamespaceBundleBacklog</a>, <a [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/SchemasResource.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/SchemasResource.html
index 31fdbfed887..e1c7b53e29f 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/SchemasResource.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/SchemasResource.html
@@ -187,10 +187,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/SchemasResourceBase.html#deleteSchema(boolean,javax.ws.rs.container.AsyncResponse,boolean)">deleteSchema</a>, <a href="../impl/SchemasResourceBase.html#domain()">domain</a>, <a href="../impl/SchemasResourceBase.html#getAllSchemas(boolean,javax.ws.rs.container.AsyncResponse)">getAllSchemas</a>, <a href="../impl/SchemasResourceBase.html#getSchema(boolean,java.lang.String,javax.ws.rs.container.AsyncResponse)">getSchema</a>, <a href="../impl/SchemasResourceBase.html#ge [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Tenants.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Tenants.html
index 29ec0eb3795..59165a03952 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Tenants.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Tenants.html
@@ -116,7 +116,7 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/TenantsBase.html#createTenant(javax.ws.rs.container.AsyncResponse,java.lang.String,org.apache.pulsar.common.policies.data.TenantInfoImpl)">createTenant</a>, <a href="../impl/TenantsBase.html#deleteTenant(javax.ws.rs.container.AsyncResponse,java.lang.String,boolean)">deleteTenant</a>, <a href="../impl/TenantsBase.html#getTenantAdmin(javax.ws.rs.container.AsyncResponse,java.lang.String)">getTenantAdmin</a>, <a href="../impl/TenantsBase.html#getTenants(javax.ws.rs.con [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Worker.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Worker.html
index 8dee9adb710..2a705cedf54 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Worker.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/Worker.html
@@ -166,10 +166,10 @@ implements <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/WorkerStats.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/WorkerStats.html
index b2e682383de..6b46cd9a6b9 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/WorkerStats.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v2/WorkerStats.html
@@ -137,10 +137,10 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Functions.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Functions.html
index 6cc8af73096..3ab4fbcc5f0 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Functions.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Functions.html
@@ -121,10 +121,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/FunctionsBase.html#deregisterFunction(java.lang.String,java.lang.String,java.lang.String)">deregisterFunction</a>, <a href="../impl/FunctionsBase.html#downloadFunction(java.lang.String)">downloadFunction</a>, <a href="../impl/FunctionsBase.html#downloadFunction(java.lang.String,java.lang.String,java.lang.String)">downloadFunction</a>, <a href="../impl/FunctionsBase.html#getConnectorsList()">getConnectorsList</a>, <a href="../impl/FunctionsBase.html#getFunctionInfo( [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Packages.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Packages.html
index 7d429c84056..b50a176302a 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Packages.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Packages.html
@@ -190,10 +190,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/PackagesBase.html#internalDelete(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,javax.ws.rs.container.AsyncResponse)">internalDelete</a>, <a href="../impl/PackagesBase.html#internalDownload(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)">internalDownload</a>, <a href="../impl/PackagesBase.html#internalGetMetadata(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sink.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sink.html
index b604161a5f4..7bae2d77892 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sink.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sink.html
@@ -125,10 +125,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/SinksBase.html#deregisterSink(java.lang.String,java.lang.String,java.lang.String)">deregisterSink</a>, <a href="../impl/SinksBase.html#getSinkConfigDefinition(java.lang.String)">getSinkConfigDefinition</a>, <a href="../impl/SinksBase.html#getSinkInfo(java.lang.String,java.lang.String,java.lang.String)">getSinkInfo</a>, <a href="../impl/SinksBase.html#getSinkInstanceStatus(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">getSinkInstanceStatus</a [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sinks.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sinks.html
index 4980110fc1a..938cf8f0203 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sinks.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sinks.html
@@ -121,10 +121,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/SinksBase.html#deregisterSink(java.lang.String,java.lang.String,java.lang.String)">deregisterSink</a>, <a href="../impl/SinksBase.html#getSinkConfigDefinition(java.lang.String)">getSinkConfigDefinition</a>, <a href="../impl/SinksBase.html#getSinkInfo(java.lang.String,java.lang.String,java.lang.String)">getSinkInfo</a>, <a href="../impl/SinksBase.html#getSinkInstanceStatus(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">getSinkInstanceStatus</a [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Source.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Source.html
index c87c2ed25fc..602fa065523 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Source.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Source.html
@@ -125,10 +125,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/SourcesBase.html#deregisterSource(java.lang.String,java.lang.String,java.lang.String)">deregisterSource</a>, <a href="../impl/SourcesBase.html#getSourceConfigDefinition(java.lang.String)">getSourceConfigDefinition</a>, <a href="../impl/SourcesBase.html#getSourceInfo(java.lang.String,java.lang.String,java.lang.String)">getSourceInfo</a>, <a href="../impl/SourcesBase.html#getSourceInstanceStatus(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">ge [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sources.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sources.html
index 7ffe970a138..4f62730d343 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sources.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Sources.html
@@ -121,10 +121,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/SourcesBase.html#deregisterSource(java.lang.String,java.lang.String,java.lang.String)">deregisterSource</a>, <a href="../impl/SourcesBase.html#getSourceConfigDefinition(java.lang.String)">getSourceConfigDefinition</a>, <a href="../impl/SourcesBase.html#getSourceInfo(java.lang.String,java.lang.String,java.lang.String)">getSourceInfo</a>, <a href="../impl/SourcesBase.html#getSourceInstanceStatus(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">ge [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Transactions.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Transactions.html
index 6aa9c66f4ff..03c2deaedfb 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Transactions.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/admin/v3/Transactions.html
@@ -205,10 +205,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../impl/TransactionsBase.html#checkTransactionCoordinatorEnabled()">checkTransactionCoordinatorEnabled</a>, <a href="../impl/TransactionsBase.html#getExistingPersistentTopicAsync(boolean)">getExistingPersistentTopicAsync</a>, <a href="../impl/TransactionsBase.html#internalGetCoordinatorInternalStats(javax.ws.rs.container.AsyncResponse,boolean,boolean,int)">internalGetCoordinatorInternalStats</a>, <a href="../impl/TransactionsBase.html#internalGetCoordinatorStats(javax.ws.r [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
+<code><a href="../AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../AdminResource.html#checkNotNull(T)">check [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/TopicLookupBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/TopicLookupBase.html
index 322ec0b3b0f..c16c803ad84 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/TopicLookupBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/TopicLookupBase.html
@@ -172,7 +172,7 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
+<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v1/TopicLookup.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v1/TopicLookup.html
index ea0abd9e1d8..6dcbfd093b7 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v1/TopicLookup.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v1/TopicLookup.html
@@ -154,7 +154,7 @@ loadScripts(document, 'script');</script>
 <code><a href="../TopicLookupBase.html#completeLookupResponseExceptionally(javax.ws.rs.container.AsyncResponse,java.lang.Throwable)">completeLookupResponseExceptionally</a>, <a href="../TopicLookupBase.html#getTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">getTopicName</a>, <a href="../TopicLookupBase.html#getTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)">getTopicName</a>, <a href="../TopicLookupBase.html# [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v2/TopicLookup.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v2/TopicLookup.html
index a1776a14b1d..7de0591a6e1 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v2/TopicLookup.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/lookup/v2/TopicLookup.html
@@ -144,7 +144,7 @@ loadScripts(document, 'script');</script>
 <code><a href="../TopicLookupBase.html#completeLookupResponseExceptionally(javax.ws.rs.container.AsyncResponse,java.lang.Throwable)">completeLookupResponseExceptionally</a>, <a href="../TopicLookupBase.html#getTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String)">getTopicName</a>, <a href="../TopicLookupBase.html#getTopicName(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)">getTopicName</a>, <a href="../TopicLookupBase.html# [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
+<code><a href="../../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../../web/PulsarW [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/Topics.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/Topics.html
index 635bf453072..d44b5d60542 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/Topics.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/Topics.html
@@ -174,10 +174,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../admin/impl/PersistentTopicsBase.html#filterSystemTopic(java.util.List,boolean)">filterSystemTopic</a>, <a href="../admin/impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)">getPartitionedTopicMetadata</a>, <a href="../admin/impl/PersistentTopicsBase.html#handleTopicPolicyException(jav [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../admin/AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../admin/AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../admin/AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../admin/AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../admin/AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../admin/AdminResour [...]
+<code><a href="../admin/AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../admin/AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../admin/AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../admin/AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../admin/AdminResour [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
+<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/TopicsBase.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/TopicsBase.html
index c71be47e0c4..cb29db7c4e0 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/TopicsBase.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/rest/TopicsBase.html
@@ -154,10 +154,10 @@ loadScripts(document, 'script');</script>
 <code><a href="../admin/impl/PersistentTopicsBase.html#filterSystemTopic(java.util.List,boolean)">filterSystemTopic</a>, <a href="../admin/impl/PersistentTopicsBase.html#getPartitionedTopicMetadata(org.apache.pulsar.broker.PulsarService,java.lang.String,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource,org.apache.pulsar.common.naming.TopicName)">getPartitionedTopicMetadata</a>, <a href="../admin/impl/PersistentTopicsBase.html#handleTopicPolicyException(jav [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.admin.AdminResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.admin.<a href="../admin/AdminResource.html" title="class in org.apache.pulsar.broker.admin">AdminResource</a></h3>
-<code><a href="../admin/AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../admin/AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../admin/AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../admin/AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../admin/AdminResour [...]
+<code><a href="../admin/AdminResource.html#bookKeeper()">bookKeeper</a>, <a href="../admin/AdminResource.html#checkArgument(boolean,java.lang.String)">checkArgument</a>, <a href="../admin/AdminResource.html#checkBacklogQuota(org.apache.pulsar.common.policies.data.BacklogQuota,org.apache.pulsar.common.policies.data.RetentionPolicies)">checkBacklogQuota</a>, <a href="../admin/AdminResource.html#checkNotNull(java.lang.Object,java.lang.String)">checkNotNull</a>, <a href="../admin/AdminResour [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.pulsar.broker.web.PulsarWebResource">Methods inherited from class&nbsp;org.apache.pulsar.broker.web.<a href="../web/PulsarWebResource.html" title="class in org.apache.pulsar.broker.web">PulsarWebResource</a></h3>
-<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
+<code><a href="../web/PulsarWebResource.html#bookieResources()">bookieResources</a>, <a href="../web/PulsarWebResource.html#canUpdateCluster(java.lang.String,java.util.Set,java.util.Set)">canUpdateCluster</a>, <a href="../web/PulsarWebResource.html#checkAuthorization(org.apache.pulsar.broker.PulsarService,org.apache.pulsar.common.naming.TopicName,java.lang.String,org.apache.pulsar.broker.authentication.AuthenticationDataSource)">checkAuthorization</a>, <a href="../web/PulsarWebResource.h [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or  [...]
diff --git a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/web/PulsarWebResource.html b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/web/PulsarWebResource.html
index 8c54fcc13c4..02418754b00 100644
--- a/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/web/PulsarWebResource.html
+++ b/content/api/pulsar-broker/2.11.0-SNAPSHOT/org/apache/pulsar/broker/web/PulsarWebResource.html
@@ -288,115 +288,119 @@ loadScripts(document, 'script');</script>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterForTenant(java.lang.String,java.lang.String)" class="member-name-link">validateClusterForTenant</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterOwnership(java.lang.String)" class="member-name-link">validateClusterOwnership</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterForTenantAsync(java.lang.String,java.lang.String)" class="member-name-link">validateClusterForTenantAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterOwnership(java.lang.String)" class="member-name-link">validateClusterOwnership</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Check if the cluster exists and redirect the call to the owning cluster.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link" [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterOwnershipAsync(java.lang.String)" class="member-name-link">validateClusterOwnershipAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateGlobalNamespaceOwnership(org.apache.pulsar.common.naming.NamespaceName)" class="member-name-link">validateGlobalNamespaceOwnership</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespace)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateClusterOwnershipAsync(java.lang.String)" class="member-name-link">validateClusterOwnershipAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateGlobalNamespaceOwnership(org.apache.pulsar.common.naming.NamespaceName)" class="member-name-link">validateGlobalNamespaceOwnership</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespace)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">If the namespace is global, validate the following - 1.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link" [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateGlobalNamespaceOwnershipAsync(org.apache.pulsar.common.naming.NamespaceName)" class="member-name-link">validateGlobalNamespaceOwnershipAsync</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespace)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../common/naming/NamespaceBundle.html" title="class in org.apache.pulsar.common.naming">NamespaceBundle</a></code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceBundleOwnership(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.BundlesData,java.lang.String,boolean,boolean)" class="member-name-link">validateNamespaceBundleOwnership</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;fqnn,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateGlobalNamespaceOwnershipAsync(org.apache.pulsar.common.naming.NamespaceName)" class="member-name-link">validateGlobalNamespaceOwnershipAsync</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespace)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../common/naming/NamespaceBundle.html" title="class in org.apache.pulsar.common.naming">NamespaceBundle</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceBundleOwnership(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.BundlesData,java.lang.String,boolean,boolean)" class="member-name-link">validateNamespaceBundleOwnership</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;fqnn,
  org.apache.pulsar.common.policies.data.BundlesData&nbsp;bundles,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;bundleRange,
  boolean&nbsp;authoritative,
  boolean&nbsp;readOnly)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../common/naming/NamespaceBundle.html" title="class in org.apache.pulsar.common.naming">NamespaceBundle</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceBundleRange(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.BundlesData,java.lang.String)" class="member-name-link">validateNamespaceBundleRange</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;fqnn,
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="../../common/naming/NamespaceBundle.html" title="class in org.apache.pulsar.common.naming">NamespaceBundle</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceBundleRange(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.BundlesData,java.lang.String)" class="member-name-link">validateNamespaceBundleRange</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;fqnn,
  org.apache.pulsar.common.policies.data.BundlesData&nbsp;bundles,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;bundleRange)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceOperation(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.NamespaceOperation)" class="member-name-link">validateNamespaceOperation</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
- org.apache.pulsar.common.policies.data.NamespaceOperation&nbsp;operation)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceOperationAsync(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.NamespaceOperation)" class="member-name-link">validateNamespaceOperationAsync</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceOperation(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.NamespaceOperation)" class="member-name-link">validateNamespaceOperation</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
  org.apache.pulsar.common.policies.data.NamespaceOperation&nbsp;operation)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespacePolicyOperation(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateNamespacePolicyOperation</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
- org.apache.pulsar.common.policies.data.PolicyName&nbsp;policy,
- org.apache.pulsar.common.policies.data.PolicyOperation&nbsp;operation)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespaceOperationAsync(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.NamespaceOperation)" class="member-name-link">validateNamespaceOperationAsync</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
+ org.apache.pulsar.common.policies.data.NamespaceOperation&nbsp;operation)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespacePolicyOperationAsync(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateNamespacePolicyOperationAsync</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespacePolicyOperation(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateNamespacePolicyOperation</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
  org.apache.pulsar.common.policies.data.PolicyName&nbsp;policy,
  org.apache.pulsar.common.policies.data.PolicyOperation&nbsp;operation)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePeerClusterConflict(java.lang.String,java.util.Set)" class="member-name-link">validatePeerClusterConflict</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;clusterName,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateNamespacePolicyOperationAsync(org.apache.pulsar.common.naming.NamespaceName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateNamespacePolicyOperationAsync</a><wbr>(org.apache.pulsar.common.naming.NamespaceName&nbsp;namespaceName,
+ org.apache.pulsar.common.policies.data.PolicyName&nbsp;policy,
+ org.apache.pulsar.common.policies.data.PolicyOperation&nbsp;operation)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePeerClusterConflict(java.lang.String,java.util.Set)" class="member-name-link">validatePeerClusterConflict</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;clusterName,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;replicationClusters)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">It validates that peer-clusters can't coexist in replication-clusters.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePoliciesReadOnlyAccess()" class="member-name-link">validatePoliciesReadOnlyAccess</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateSuperUserAccess()" class="member-name-link">validateSuperUserAccess</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validatePoliciesReadOnlyAccess()" class="member-name-link">validatePoliciesReadOnlyAccess</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateSuperUserAccess()" class="member-name-link">validateSuperUserAccess</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Checks whether the user has Pulsar Super-User access to the system.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateSuperUserAccessAsync()" class="member-name-link">validateSuperUserAccessAsync</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTenantOperation(java.lang.String,org.apache.pulsar.common.policies.data.TenantOperation)" class="member-name-link">validateTenantOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
- org.apache.pulsar.common.policies.data.TenantOperation&nbsp;operation)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateSuperUserAccessAsync()" class="member-name-link">validateSuperUserAccessAsync</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTenantOperationAsync(java.lang.String,org.apache.pulsar.common.policies.data.TenantOperation)" class="member-name-link">validateTenantOperationAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTenantOperation(java.lang.String,org.apache.pulsar.common.policies.data.TenantOperation)" class="member-name-link">validateTenantOperation</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
  org.apache.pulsar.common.policies.data.TenantOperation&nbsp;operation)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperation(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation)" class="member-name-link">validateTopicOperation</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
- org.apache.pulsar.common.policies.data.TopicOperation&nbsp;operation)</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTenantOperationAsync(java.lang.String,org.apache.pulsar.common.policies.data.TenantOperation)" class="member-name-link">validateTenantOperationAsync</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;tenant,
+ org.apache.pulsar.common.policies.data.TenantOperation&nbsp;operation)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperation(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation,java.lang.String)" class="member-name-link">validateTopicOperation</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperation(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation)" class="member-name-link">validateTopicOperation</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+ org.apache.pulsar.common.policies.data.TopicOperation&nbsp;operation)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperation(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation,java.lang.String)" class="member-name-link">validateTopicOperation</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
  org.apache.pulsar.common.policies.data.TopicOperation&nbsp;operation,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;subscription)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperationAsync(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation)" class="member-name-link">validateTopicOperationAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
- org.apache.pulsar.common.policies.data.TopicOperation&nbsp;operation)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperationAsync(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation,java.lang.String)" class="member-name-link">validateTopicOperationAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperationAsync(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation)" class="member-name-link">validateTopicOperationAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+ org.apache.pulsar.common.policies.data.TopicOperation&nbsp;operation)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOperationAsync(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.TopicOperation,java.lang.String)" class="member-name-link">validateTopicOperationAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
  org.apache.pulsar.common.policies.data.TopicOperation&nbsp;operation,
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;subscription)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOwnership(org.apache.pulsar.common.naming.TopicName,boolean)" class="member-name-link">validateTopicOwnership</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOwnership(org.apache.pulsar.common.naming.TopicName,boolean)" class="member-name-link">validateTopicOwnership</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
  boolean&nbsp;authoritative)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Checks whether the broker is the owner of the namespace.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link" [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOwnershipAsync(org.apache.pulsar.common.naming.TopicName,boolean)" class="member-name-link">validateTopicOwnershipAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link"> [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicOwnershipAsync(org.apache.pulsar.common.naming.TopicName,boolean)" class="member-name-link">validateTopicOwnershipAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
  boolean&nbsp;authoritative)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicPolicyOperation(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateTopicPolicyOperation</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
- org.apache.pulsar.common.policies.data.PolicyName&nbsp;policy,
- org.apache.pulsar.common.policies.data.PolicyOperation&nbsp;operation)</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>& [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicPolicyOperationAsync(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateTopicPolicyOperationAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicPolicyOperation(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateTopicPolicyOperation</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
  org.apache.pulsar.common.policies.data.PolicyName&nbsp;policy,
  org.apache.pulsar.common.policies.data.PolicyOperation&nbsp;operation)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&g [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#validateTopicPolicyOperationAsync(org.apache.pulsar.common.naming.TopicName,org.apache.pulsar.common.policies.data.PolicyName,org.apache.pulsar.common.policies.data.PolicyOperation)" class="member-name-link">validateTopicPolicyOperationAsync</a><wbr>(org.apache.pulsar.common.naming.TopicName&nbsp;topicName,
+ org.apache.pulsar.common.policies.data.PolicyName&nbsp;policy,
+ org.apache.pulsar.common.policies.data.PolicyOperation&nbsp;operation)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 </div>
 </div>
 </div>
@@ -596,6 +600,13 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
+<section class="detail" id="validateClusterForTenantAsync(java.lang.String,java.lang.String)">
+<h3>validateClusterForTenantAsync</h3>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp [...]
+ <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;cluster)</span></div>
+</section>
+</li>
+<li>
 <section class="detail" id="validateClusterOwnershipAsync(java.lang.String)">
 <h3>validateClusterOwnershipAsync</h3>
 <div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html" title="class or interface in java.util.concurrent" class="external-link">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>&gt;</span>&nbsp [...]
diff --git a/content/docs/assets/reader-interceptor.svg b/content/docs/assets/reader-interceptor.svg
new file mode 100644
index 00000000000..30c41593a5e
--- /dev/null
+++ b/content/docs/assets/reader-interceptor.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:lucid="lucid" width="1048" height="236.89"><g transform="translate(-92.00000000000003 -276.9013361034965)" lucid:page-tab-id="0_0"><path d="M0 0h1870.87v1322.83H0z" fill="#fff"/><path d="M112 302.9a6 6 0 0 1 6-6h338.67a6 6 0 0 1 6 6v184.9a6 6 0 0 1-6 6H118a6 6 0 0 1-6-6z" fill="#fff"/><path d="M113.5 302.9c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5zm5.06-5.92c0 .82-.67 1.5-1 [...]
\ No newline at end of file
diff --git a/content/docs/en/2.7.2/security-encryption.html b/content/docs/en/2.7.2/security-encryption.html
index 12239cd7ae5..304dce3dff8 100644
--- a/content/docs/en/2.7.2/security-encryption.html
+++ b/content/docs/en/2.7.2/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.7.2/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.7.2/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.7.2/security-encryption/index.html b/content/docs/en/2.7.2/security-encryption/index.html
index 12239cd7ae5..304dce3dff8 100644
--- a/content/docs/en/2.7.2/security-encryption/index.html
+++ b/content/docs/en/2.7.2/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.7.2/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.7.2/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.7.3/security-encryption.html b/content/docs/en/2.7.3/security-encryption.html
index d83d42dad59..7c12c35f28c 100644
--- a/content/docs/en/2.7.3/security-encryption.html
+++ b/content/docs/en/2.7.3/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.7.3/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.7.3/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.7.3/security-encryption/index.html b/content/docs/en/2.7.3/security-encryption/index.html
index d83d42dad59..7c12c35f28c 100644
--- a/content/docs/en/2.7.3/security-encryption/index.html
+++ b/content/docs/en/2.7.3/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.7.3/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.7.3/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.7.4/security-encryption.html b/content/docs/en/2.7.4/security-encryption.html
index ab9e8ebc129..6172511670d 100644
--- a/content/docs/en/2.7.4/security-encryption.html
+++ b/content/docs/en/2.7.4/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.7.4/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.7.4/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.7.4/security-encryption/index.html b/content/docs/en/2.7.4/security-encryption/index.html
index ab9e8ebc129..6172511670d 100644
--- a/content/docs/en/2.7.4/security-encryption/index.html
+++ b/content/docs/en/2.7.4/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.7.4/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.7.4/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.8.0/security-encryption.html b/content/docs/en/2.8.0/security-encryption.html
index eb91d23b54b..46c39abb761 100644
--- a/content/docs/en/2.8.0/security-encryption.html
+++ b/content/docs/en/2.8.0/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.8.0/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.8.0/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.8.0/security-encryption/index.html b/content/docs/en/2.8.0/security-encryption/index.html
index eb91d23b54b..46c39abb761 100644
--- a/content/docs/en/2.8.0/security-encryption/index.html
+++ b/content/docs/en/2.8.0/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.8.0/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.8.0/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.8.1/security-encryption.html b/content/docs/en/2.8.1/security-encryption.html
index 58d1f2d1662..8ded4fdc51e 100644
--- a/content/docs/en/2.8.1/security-encryption.html
+++ b/content/docs/en/2.8.1/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.8.1/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.8.1/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.8.1/security-encryption/index.html b/content/docs/en/2.8.1/security-encryption/index.html
index 58d1f2d1662..8ded4fdc51e 100644
--- a/content/docs/en/2.8.1/security-encryption/index.html
+++ b/content/docs/en/2.8.1/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.8.1/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.8.1/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.8.3/security-encryption.html b/content/docs/en/2.8.3/security-encryption.html
index 6a6c7c508bc..3390d2d1e1d 100644
--- a/content/docs/en/2.8.3/security-encryption.html
+++ b/content/docs/en/2.8.3/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Configure a <code>CryptoKeyReader</code> to a producer, consumer or reader.</p></li>
 </ol>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-3758-tab-3759" class="nav-link active" data-group="group_3758" data-tab="tab-group-3758-content-3759">Java</div><div id="tab-group-3758-tab-3760" class="nav-link" data-group="group_3758" data-tab="tab-group-3758-content-3760">C++</div><div id="tab-group-3758-tab-3761" class="nav-link" data-group="group_3758" data-tab="tab-group-3758-content-3761">Python</div><div id="tab-group-3758-tab-3762" class="nav-link" data-group="group_375 [...]
@@ -113,23 +122,23 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.8.3/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.8.3/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.8.3/security-encryption/index.html b/content/docs/en/2.8.3/security-encryption/index.html
index 6a6c7c508bc..3390d2d1e1d 100644
--- a/content/docs/en/2.8.3/security-encryption/index.html
+++ b/content/docs/en/2.8.3/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Configure a <code>CryptoKeyReader</code> to a producer, consumer or reader.</p></li>
 </ol>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-3758-tab-3759" class="nav-link active" data-group="group_3758" data-tab="tab-group-3758-content-3759">Java</div><div id="tab-group-3758-tab-3760" class="nav-link" data-group="group_3758" data-tab="tab-group-3758-content-3760">C++</div><div id="tab-group-3758-tab-3761" class="nav-link" data-group="group_3758" data-tab="tab-group-3758-content-3761">Python</div><div id="tab-group-3758-tab-3762" class="nav-link" data-group="group_375 [...]
@@ -113,23 +122,23 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.8.3/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.8.3/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.9.0/security-encryption.html b/content/docs/en/2.9.0/security-encryption.html
index 5f61894010b..a86cabe7a06 100644
--- a/content/docs/en/2.9.0/security-encryption.html
+++ b/content/docs/en/2.9.0/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.9.0/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.9.0/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.9.0/security-encryption/index.html b/content/docs/en/2.9.0/security-encryption/index.html
index 5f61894010b..a86cabe7a06 100644
--- a/content/docs/en/2.9.0/security-encryption/index.html
+++ b/content/docs/en/2.9.0/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.9.0/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.9.0/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.9.1/security-encryption.html b/content/docs/en/2.9.1/security-encryption.html
index d79f875cb0a..612eb87d6bc 100644
--- a/content/docs/en/2.9.1/security-encryption.html
+++ b/content/docs/en/2.9.1/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,7 +216,7 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
diff --git a/content/docs/en/2.9.1/security-encryption/index.html b/content/docs/en/2.9.1/security-encryption/index.html
index d79f875cb0a..612eb87d6bc 100644
--- a/content/docs/en/2.9.1/security-encryption/index.html
+++ b/content/docs/en/2.9.1/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,7 +216,7 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
diff --git a/content/docs/en/2.9.2/security-encryption.html b/content/docs/en/2.9.2/security-encryption.html
index 839b06b1fbf..6530b3bcb42 100644
--- a/content/docs/en/2.9.2/security-encryption.html
+++ b/content/docs/en/2.9.2/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.9.2/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.9.2/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/2.9.2/security-encryption/index.html b/content/docs/en/2.9.2/security-encryption/index.html
index 839b06b1fbf..6530b3bcb42 100644
--- a/content/docs/en/2.9.2/security-encryption/index.html
+++ b/content/docs/en/2.9.2/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,15 +79,24 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Add CryptoKeyReader implementation to producer or consumer builder: PulsarClient.newProducer().cryptoKeyReader(keyReader) / PulsarClient.newConsumer().cryptoKeyReader(keyReader).</p></li>
 <li><p>Sample producer application:</p></li>
 </ol>
@@ -207,23 +216,23 @@ pulsarClient.close();
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.9.2/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/2.9.2/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/develop-plugin.html b/content/docs/en/develop-plugin.html
index 66ee1d66fdf..dc6af2c0301 100644
--- a/content/docs/en/develop-plugin.html
+++ b/content/docs/en/develop-plugin.html
@@ -100,7 +100,7 @@
 </ul>
 <p>You can get entry metadata, subscriptions, and other information through <code>FilterContext</code>.</p></li>
 <li><p>Describe a NAR file.</p>
-<p>Create an <code>entry_filter.yaml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
+<p>Create an <code>entry_filter.yml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
 <pre><code class="hljs css language-conf"><span class="hljs-comment"># Entry filter name, which should be configured in the broker.conf file later</span>
 name: entryFilter
 <span class="hljs-comment"># Entry filter description</span>
diff --git a/content/docs/en/develop-plugin/index.html b/content/docs/en/develop-plugin/index.html
index 66ee1d66fdf..dc6af2c0301 100644
--- a/content/docs/en/develop-plugin/index.html
+++ b/content/docs/en/develop-plugin/index.html
@@ -100,7 +100,7 @@
 </ul>
 <p>You can get entry metadata, subscriptions, and other information through <code>FilterContext</code>.</p></li>
 <li><p>Describe a NAR file.</p>
-<p>Create an <code>entry_filter.yaml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
+<p>Create an <code>entry_filter.yml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
 <pre><code class="hljs css language-conf"><span class="hljs-comment"># Entry filter name, which should be configured in the broker.conf file later</span>
 name: entryFilter
 <span class="hljs-comment"># Entry filter description</span>
diff --git a/content/docs/en/next/client-libraries-java.html b/content/docs/en/next/client-libraries-java.html
index 334e2842672..5dcd0911dcb 100644
--- a/content/docs/en/next/client-libraries-java.html
+++ b/content/docs/en/next/client-libraries-java.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Java client · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="You can use a Pulsar Java client to create the Java [producer](#producer), [consumer](#consumer), [readers](#reader) and [TableView](#tableview) of messages and to perform [admini [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Java client · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="You can use a Pulsar Java client to create the Java [producer](#producer), [consumer](#consumer), [reader](#reader) and [TableView](#tableview) of messages and to perform [adminis [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,8 +66,8 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/client-libraries-java.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Java client</h1></header><article><div><span><p>You can use a Pulsar Java client to create the Java <a href="#producer">pr [...]
-<p>All the methods in <a href="#producer">producer</a>, <a href="#consumer">consumer</a>, <a href="#reader">readers</a> and <a href="#tableview">TableView</a> of a Java client are thread-safe.</p>
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/client-libraries-java.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Java client</h1></header><article><div><span><p>You can use a Pulsar Java client to create the Java <a href="#producer">pr [...]
+<p>All the methods in <a href="#producer">producer</a>, <a href="#consumer">consumer</a>, <a href="#reader">reader</a> and <a href="#tableview">TableView</a> of a Java client are thread-safe.</p>
 <p>Javadoc for the Pulsar client is divided into two domains by package as follows.</p>
 <table>
 <thead>
@@ -348,12 +348,12 @@ dependencies {
 <h4><a class="anchor" aria-hidden="true" id="how-does-cluster-level-failover-work"></a><a href="#how-does-cluster-level-failover-work" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
 </blockquote>
 <p>This chapter explains the working process of cluster-level failover. For more implementation details, see <a href="https://github.com/apache/pulsar/issues/13315">PIP-121</a>.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-504-tab-505" class="nav-link active" data-group="group_504" data-tab="tab-group-504-content-505">Automatic cluster-level failover</div><div id="tab-group-504-tab-506" class="nav-link" data-group="group_504" data-tab="tab-group-504-content-506">Controlled cluster-level failover</div></div><div class="tab-content"><div id="tab-group-504-content-505" class="tab-pane active" data-group="group_504" tabindex="-1"><div><span><p>In autom [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-504-tab-505" class="nav-link active" data-group="group_504" data-tab="tab-group-504-content-505">Automatic cluster-level failover</div><div id="tab-group-504-tab-506" class="nav-link" data-group="group_504" data-tab="tab-group-504-content-506">Controlled cluster-level failover</div></div><div class="tab-content"><div id="tab-group-504-content-505" class="tab-pane active" data-group="group_504" tabindex="-1"><div><span><p>In an au [...]
 <ol>
 <li><p>The Pulsar client runs a probe task at intervals defined in <code>checkInterval</code>.</p></li>
 <li><p>If the probe task finds the failure time of the primary cluster exceeds the time set in the <code>failoverDelay</code> parameter, it searches backup clusters for an available healthy cluster.</p>
 <p>2a) If there are healthy backup clusters, the Pulsar client switches to a backup cluster in the order defined in <code>secondary</code>.</p>
-<p>2b) If there is no healthy backup cluster, the Pulsar client does not perform the switchover, and the probe task continues to look  for an available backup cluster.</p></li>
+<p>2b) If there is no healthy backup cluster, the Pulsar client does not perform the switchover, and the probe task continues to look for an available backup cluster.</p></li>
 <li><p>The probe task checks whether the primary cluster functions well or not.</p>
 <p>3a) If the primary cluster comes back and the continuous healthy time exceeds the time set in <code>switchBackDelay</code>, the Pulsar client switches back to the primary cluster.</p>
 <p>3b) If the primary cluster does not come back, the Pulsar client does not perform the switchover.</p></li>
@@ -362,10 +362,10 @@ dependencies {
 </span></div></div><div id="tab-group-504-content-506" class="tab-pane" data-group="group_504" tabindex="-1"><div><span><ol>
 <li><p>The Pulsar client runs a probe task at intervals defined in <code>checkInterval</code>.</p></li>
 <li><p>The probe task fetches the service URL configuration from the URL provider service, which is configured by <code>urlProvider</code>.</p>
-<p>2a) If the service URL configuration is changed, the probe task  switches to the target cluster without checking the health status of the target cluster.</p>
+<p>2a) If the service URL configuration is changed, the probe task switches to the target cluster without checking the health status of the target cluster.</p>
 <p>2b) If the service URL configuration is not changed, the Pulsar client does not perform the switchover.</p></li>
 <li><p>If the Pulsar client switches to the target cluster, the probe task continues to fetch service URL configuration from the URL provider service at intervals defined in <code>checkInterval</code>.</p>
-<p>3a) If the service URL configuration is changed, the probe task  switches to the target cluster without checking the health status of the target cluster.</p>
+<p>3a) If the service URL configuration is changed, the probe task switches to the target cluster without checking the health status of the target cluster.</p>
 <p>3b) If the service URL configuration is not changed, it does not perform the switchover.</p></li>
 </ol>
 <p><img src="/docs/assets/cluster-level-failover-5.png" alt="Workflow of controlled failover cluster"></p>
@@ -459,8 +459,8 @@ client.close();
 </code></pre>
 <p>You can terminate the builder chain with <code>sendAsync()</code> and get a future return.</p>
 <h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>Message <a href="/docs/en/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
-<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<p>Message <a href="/docs/en/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages on the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example of how to enable message chunking when creating a producer.</p>
 <pre><code class="hljs css language-java">Producer&lt;<span class="hljs-keyword">byte</span>[]&gt; producer = client.newProducer()
         .topic(topic)
         .enableChunking(<span class="hljs-keyword">true</span>)
@@ -482,7 +482,7 @@ client.close();
         .subscriptionName(<span class="hljs-string">"my-subscription"</span>)
         .subscribe();
 </code></pre>
-<p>The <code>subscribe</code> method will auto subscribe the consumer to the specified topic and subscription. One way to make the consumer listen on the topic is to set up a <code>while</code> loop. In this example loop, the consumer listens for messages, prints the contents of any received message, and then <a href="/docs/en/next/reference-terminology#acknowledgment-ack">acknowledges</a> that the message has been processed. If the processing logic fails, you can use <a href="/docs/en/n [...]
+<p>The <code>subscribe</code> method will auto-subscribe the consumer to the specified topic and subscription. One way to make the consumer listen on the topic is to set up a <code>while</code> loop. In this example loop, the consumer listens for messages, prints the contents of any received message, and then <a href="/docs/en/next/reference-terminology#acknowledgment-ack">acknowledges</a> that the message has been processed. If the processing logic fails, you can use <a href="/docs/en/n [...]
 <pre><code class="hljs css language-java"><span class="hljs-keyword">while</span> (<span class="hljs-keyword">true</span>) {
   <span class="hljs-comment">// Wait for a message</span>
   Message msg = consumer.receive();
@@ -580,7 +580,7 @@ consumer.acknowledge(messages)
 <blockquote>
 <p>Note:</p>
 <p>Batch receive policy limits the number and bytes of messages in a single batch. You can specify a timeout to wait for enough messages.</p>
-<p>The batch receive is completed if any of the following condition is met: enough number of messages, bytes of messages, wait timeout.</p>
+<p>The batch receive is completed if any of the following conditions is met: enough number of messages, bytes of messages, wait timeout.</p>
 <pre><code class="hljs css language-java">Consumer consumer = client.newConsumer()
         .topic(<span class="hljs-string">"my-topic"</span>)
         .subscriptionName(<span class="hljs-string">"my-subscription"</span>)
@@ -732,7 +732,7 @@ consumerBuilder
 <h3><a class="anchor" aria-hidden="true" id="subscription-types"></a><a href="#subscription-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
 <p>Pulsar has various <a href="concepts-messaging#subscription-types">subscription types</a> to match different scenarios. A topic can have multiple subscriptions with different subscription types. However, a subscription can only have one subscription type at a time.</p>
 <p>A subscription is identical with the subscription name; a subscription name can specify only one subscription type at a time. To change the subscription type, you should first stop all consumers of this subscription.</p>
-<p>Different subscription types have different message distribution types. This section describes the differences of subscription types and how to use them.</p>
+<p>Different subscription types have different message distribution types. This section describes the differences between subscription types and how to use them.</p>
 <p>In order to better describe their differences, assuming you have a topic named &quot;my-topic&quot;, and the producer has published 10 messages.</p>
 <pre><code class="hljs css language-java">Producer&lt;String&gt; producer = client.newProducer(Schema.STRING)
         .topic(<span class="hljs-string">"my-topic"</span>)
@@ -814,7 +814,7 @@ Consumer consumer2 = client.newConsumer()
         .subscribe()
 <span class="hljs-comment">//Both consumer1 and consumer 2 is active consumers.</span>
 </code></pre>
-<p>In Shared subscription type, multiple consumers can attach to the same subscription and messages are delivered in a round robin distribution across consumers.</p>
+<p>In Shared subscription type, multiple consumers can attach to the same subscription and messages are delivered in a round-robin distribution across consumers.</p>
 <p>If a broker dispatches only one message at a time, consumer1 receives the following information.</p>
 <pre><code class="hljs">(<span class="hljs-string">"key-1"</span>, <span class="hljs-string">"message-1-1"</span>)
 (<span class="hljs-string">"key-1"</span>, <span class="hljs-string">"message-1-3"</span>)
@@ -935,11 +935,44 @@ Reader reader = pulsarClient.newReader()
         .expireTimeOfIncompleteChunkedMessage(<span class="hljs-number">12</span>, TimeUnit.MILLISECONDS)
         .create();
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="create-reader-with-interceptor"></a><a href="#create-reader-with-interceptor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
+<p>Pulsar reader interceptor intercepts and possibly mutates messages with user-defined processing before <a href="/docs/en/next/concepts-clients#reader-interface">Pulsar reader</a> reads them. With reader interceptors, you can apply unified messaging processes before messages can be read, such as modifying messages, adding properties, collecting statistics and etc, without creating similar mechanisms respectively.</p>
+<p><img src="/docs/assets/reader-interceptor.svg" alt="Reader interceptor"></p>
+<p>Pulsar reader interceptor works on top of Pulsar consumer interceptor. The plugin interface <code>ReaderInterceptor</code> can be treated as a subset of <code>ConsumerInterceptor</code> and it has two main events.</p>
+<ul>
+<li><code>beforeRead</code> is triggered before readers read messages. You can modify messages within this event.</li>
+<li><code>onPartitionsChange</code> is triggered when changes on partitions have been detected.</li>
+</ul>
+<p>To perceive triggered events and perform customized processing, you can add <code>ReaderInterceptor</code> when creating a <code>Reader</code> as follows.</p>
+<pre><code class="hljs css language-java">PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>).build();
+Reader&lt;<span class="hljs-keyword">byte</span>[]&gt; reader = pulsarClient.newReader()
+        .topic(“t1”)
+        .autoUpdatePartitionsInterval(<span class="hljs-number">5</span>, TimeUnit.SECONDS)
+        .intercept(<span class="hljs-keyword">new</span> ReaderInterceptor&lt;<span class="hljs-keyword">byte</span>[]&gt;() {
+            <span class="hljs-meta">@Override</span>
+            <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">close</span><span class="hljs-params">()</span> </span>{
+            }
+
+            <span class="hljs-meta">@Override</span>
+            <span class="hljs-keyword">public</span> Message&lt;<span class="hljs-keyword">byte</span>[]&gt; beforeRead(Reader&lt;<span class="hljs-keyword">byte</span>[]&gt; reader, Message&lt;<span class="hljs-keyword">byte</span>[]&gt; message) {
+                <span class="hljs-comment">// user-defined processing logic</span>
+                <span class="hljs-keyword">return</span> message;
+            }
+
+            <span class="hljs-meta">@Override</span>
+            <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onPartitionsChange</span><span class="hljs-params">(String topicName, <span class="hljs-keyword">int</span> partitions)</span> </span>{
+                <span class="hljs-comment">// user-defined processing logic</span>
+            }
+        })
+        .startMessageId(MessageId.earliest)
+        .create();
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="tableview"></a><a href="#tableview" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>The TableView interface serves an encapsulated access pattern, providing a continuously updated key-value map view of the compacted topic data. Messages without keys will be ignored.</p>
 <p>With TableView, Pulsar clients can fetch all the message updates from a topic and construct a map with the latest values of each key. These values can then be used to build a local cache of data. In addition, you can register consumers with the TableView by specifying a listener to perform a scan of the map and then receive notifications when new messages are received. Consequently, event handling can be triggered to serve use cases, such as event-driven applications and message monit [...]
 <blockquote>
-<p><strong>Note:</strong> Each TableView uses one Reader instance per partition, and reads the topic starting from the compacted view by default. It is highly recommended to enable automatic compaction by <a href="/docs/en/next/cookbooks-compaction#configuring-compaction-to-run-automatically">configuring the topic compaction policies</a> for the given topic or namespace. More frequent compaction results in shorter startup times because less data is replayed to reconstruct the TableView o [...]
+<p><strong>Note</strong></p>
+<p>Each TableView uses one Reader instance per partition, and reads the topic starting from the compacted view by default. It is highly recommended to enable automatic compaction by <a href="/docs/en/next/cookbooks-compaction#configuring-compaction-to-run-automatically">configuring the topic compaction policies</a> for the given topic or namespace. More frequent compaction results in shorter startup times because less data is replayed to reconstruct the TableView of the topic.</p>
 </blockquote>
 <p>The following figure illustrates the dynamic construction of a TableView updated with newer values of each key.
 <img src="/docs/assets/tableview.png" alt="TableView"></p>
@@ -1108,7 +1141,7 @@ PulsarClient client = PulsarClient.builder()
     .authentication(auth)
     .build();
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/client-libraries"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/client-libraries-go"><span>Go</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installation">Installation</a><ul class="toc-headings"><li><a href="#maven">Maven</a></li><li><a href="#gradl [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/client-libraries"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/client-libraries-go"><span>Go</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installation">Installation</a><ul class="toc-headings"><li><a href="#maven">Maven</a></li><li><a href="#gradl [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/client-libraries-java/index.html b/content/docs/en/next/client-libraries-java/index.html
index 334e2842672..5dcd0911dcb 100644
--- a/content/docs/en/next/client-libraries-java/index.html
+++ b/content/docs/en/next/client-libraries-java/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Java client · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="You can use a Pulsar Java client to create the Java [producer](#producer), [consumer](#consumer), [readers](#reader) and [TableView](#tableview) of messages and to perform [admini [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Java client · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="You can use a Pulsar Java client to create the Java [producer](#producer), [consumer](#consumer), [reader](#reader) and [TableView](#tableview) of messages and to perform [adminis [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,8 +66,8 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/client-libraries-java.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Java client</h1></header><article><div><span><p>You can use a Pulsar Java client to create the Java <a href="#producer">pr [...]
-<p>All the methods in <a href="#producer">producer</a>, <a href="#consumer">consumer</a>, <a href="#reader">readers</a> and <a href="#tableview">TableView</a> of a Java client are thread-safe.</p>
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/client-libraries-java.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Java client</h1></header><article><div><span><p>You can use a Pulsar Java client to create the Java <a href="#producer">pr [...]
+<p>All the methods in <a href="#producer">producer</a>, <a href="#consumer">consumer</a>, <a href="#reader">reader</a> and <a href="#tableview">TableView</a> of a Java client are thread-safe.</p>
 <p>Javadoc for the Pulsar client is divided into two domains by package as follows.</p>
 <table>
 <thead>
@@ -348,12 +348,12 @@ dependencies {
 <h4><a class="anchor" aria-hidden="true" id="how-does-cluster-level-failover-work"></a><a href="#how-does-cluster-level-failover-work" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
 </blockquote>
 <p>This chapter explains the working process of cluster-level failover. For more implementation details, see <a href="https://github.com/apache/pulsar/issues/13315">PIP-121</a>.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-504-tab-505" class="nav-link active" data-group="group_504" data-tab="tab-group-504-content-505">Automatic cluster-level failover</div><div id="tab-group-504-tab-506" class="nav-link" data-group="group_504" data-tab="tab-group-504-content-506">Controlled cluster-level failover</div></div><div class="tab-content"><div id="tab-group-504-content-505" class="tab-pane active" data-group="group_504" tabindex="-1"><div><span><p>In autom [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-504-tab-505" class="nav-link active" data-group="group_504" data-tab="tab-group-504-content-505">Automatic cluster-level failover</div><div id="tab-group-504-tab-506" class="nav-link" data-group="group_504" data-tab="tab-group-504-content-506">Controlled cluster-level failover</div></div><div class="tab-content"><div id="tab-group-504-content-505" class="tab-pane active" data-group="group_504" tabindex="-1"><div><span><p>In an au [...]
 <ol>
 <li><p>The Pulsar client runs a probe task at intervals defined in <code>checkInterval</code>.</p></li>
 <li><p>If the probe task finds the failure time of the primary cluster exceeds the time set in the <code>failoverDelay</code> parameter, it searches backup clusters for an available healthy cluster.</p>
 <p>2a) If there are healthy backup clusters, the Pulsar client switches to a backup cluster in the order defined in <code>secondary</code>.</p>
-<p>2b) If there is no healthy backup cluster, the Pulsar client does not perform the switchover, and the probe task continues to look  for an available backup cluster.</p></li>
+<p>2b) If there is no healthy backup cluster, the Pulsar client does not perform the switchover, and the probe task continues to look for an available backup cluster.</p></li>
 <li><p>The probe task checks whether the primary cluster functions well or not.</p>
 <p>3a) If the primary cluster comes back and the continuous healthy time exceeds the time set in <code>switchBackDelay</code>, the Pulsar client switches back to the primary cluster.</p>
 <p>3b) If the primary cluster does not come back, the Pulsar client does not perform the switchover.</p></li>
@@ -362,10 +362,10 @@ dependencies {
 </span></div></div><div id="tab-group-504-content-506" class="tab-pane" data-group="group_504" tabindex="-1"><div><span><ol>
 <li><p>The Pulsar client runs a probe task at intervals defined in <code>checkInterval</code>.</p></li>
 <li><p>The probe task fetches the service URL configuration from the URL provider service, which is configured by <code>urlProvider</code>.</p>
-<p>2a) If the service URL configuration is changed, the probe task  switches to the target cluster without checking the health status of the target cluster.</p>
+<p>2a) If the service URL configuration is changed, the probe task switches to the target cluster without checking the health status of the target cluster.</p>
 <p>2b) If the service URL configuration is not changed, the Pulsar client does not perform the switchover.</p></li>
 <li><p>If the Pulsar client switches to the target cluster, the probe task continues to fetch service URL configuration from the URL provider service at intervals defined in <code>checkInterval</code>.</p>
-<p>3a) If the service URL configuration is changed, the probe task  switches to the target cluster without checking the health status of the target cluster.</p>
+<p>3a) If the service URL configuration is changed, the probe task switches to the target cluster without checking the health status of the target cluster.</p>
 <p>3b) If the service URL configuration is not changed, it does not perform the switchover.</p></li>
 </ol>
 <p><img src="/docs/assets/cluster-level-failover-5.png" alt="Workflow of controlled failover cluster"></p>
@@ -459,8 +459,8 @@ client.close();
 </code></pre>
 <p>You can terminate the builder chain with <code>sendAsync()</code> and get a future return.</p>
 <h3><a class="anchor" aria-hidden="true" id="enable-chunking"></a><a href="#enable-chunking" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>Message <a href="/docs/en/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages at the consumer side.</p>
-<p>The message chunking feature is OFF by default. The following is an example about how to enable message chunking when creating a producer.</p>
+<p>Message <a href="/docs/en/next/concepts-messaging#chunking">chunking</a> enables Pulsar to process large payload messages by splitting the message into chunks at the producer side and aggregating chunked messages on the consumer side.</p>
+<p>The message chunking feature is OFF by default. The following is an example of how to enable message chunking when creating a producer.</p>
 <pre><code class="hljs css language-java">Producer&lt;<span class="hljs-keyword">byte</span>[]&gt; producer = client.newProducer()
         .topic(topic)
         .enableChunking(<span class="hljs-keyword">true</span>)
@@ -482,7 +482,7 @@ client.close();
         .subscriptionName(<span class="hljs-string">"my-subscription"</span>)
         .subscribe();
 </code></pre>
-<p>The <code>subscribe</code> method will auto subscribe the consumer to the specified topic and subscription. One way to make the consumer listen on the topic is to set up a <code>while</code> loop. In this example loop, the consumer listens for messages, prints the contents of any received message, and then <a href="/docs/en/next/reference-terminology#acknowledgment-ack">acknowledges</a> that the message has been processed. If the processing logic fails, you can use <a href="/docs/en/n [...]
+<p>The <code>subscribe</code> method will auto-subscribe the consumer to the specified topic and subscription. One way to make the consumer listen on the topic is to set up a <code>while</code> loop. In this example loop, the consumer listens for messages, prints the contents of any received message, and then <a href="/docs/en/next/reference-terminology#acknowledgment-ack">acknowledges</a> that the message has been processed. If the processing logic fails, you can use <a href="/docs/en/n [...]
 <pre><code class="hljs css language-java"><span class="hljs-keyword">while</span> (<span class="hljs-keyword">true</span>) {
   <span class="hljs-comment">// Wait for a message</span>
   Message msg = consumer.receive();
@@ -580,7 +580,7 @@ consumer.acknowledge(messages)
 <blockquote>
 <p>Note:</p>
 <p>Batch receive policy limits the number and bytes of messages in a single batch. You can specify a timeout to wait for enough messages.</p>
-<p>The batch receive is completed if any of the following condition is met: enough number of messages, bytes of messages, wait timeout.</p>
+<p>The batch receive is completed if any of the following conditions is met: enough number of messages, bytes of messages, wait timeout.</p>
 <pre><code class="hljs css language-java">Consumer consumer = client.newConsumer()
         .topic(<span class="hljs-string">"my-topic"</span>)
         .subscriptionName(<span class="hljs-string">"my-subscription"</span>)
@@ -732,7 +732,7 @@ consumerBuilder
 <h3><a class="anchor" aria-hidden="true" id="subscription-types"></a><a href="#subscription-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
 <p>Pulsar has various <a href="concepts-messaging#subscription-types">subscription types</a> to match different scenarios. A topic can have multiple subscriptions with different subscription types. However, a subscription can only have one subscription type at a time.</p>
 <p>A subscription is identical with the subscription name; a subscription name can specify only one subscription type at a time. To change the subscription type, you should first stop all consumers of this subscription.</p>
-<p>Different subscription types have different message distribution types. This section describes the differences of subscription types and how to use them.</p>
+<p>Different subscription types have different message distribution types. This section describes the differences between subscription types and how to use them.</p>
 <p>In order to better describe their differences, assuming you have a topic named &quot;my-topic&quot;, and the producer has published 10 messages.</p>
 <pre><code class="hljs css language-java">Producer&lt;String&gt; producer = client.newProducer(Schema.STRING)
         .topic(<span class="hljs-string">"my-topic"</span>)
@@ -814,7 +814,7 @@ Consumer consumer2 = client.newConsumer()
         .subscribe()
 <span class="hljs-comment">//Both consumer1 and consumer 2 is active consumers.</span>
 </code></pre>
-<p>In Shared subscription type, multiple consumers can attach to the same subscription and messages are delivered in a round robin distribution across consumers.</p>
+<p>In Shared subscription type, multiple consumers can attach to the same subscription and messages are delivered in a round-robin distribution across consumers.</p>
 <p>If a broker dispatches only one message at a time, consumer1 receives the following information.</p>
 <pre><code class="hljs">(<span class="hljs-string">"key-1"</span>, <span class="hljs-string">"message-1-1"</span>)
 (<span class="hljs-string">"key-1"</span>, <span class="hljs-string">"message-1-3"</span>)
@@ -935,11 +935,44 @@ Reader reader = pulsarClient.newReader()
         .expireTimeOfIncompleteChunkedMessage(<span class="hljs-number">12</span>, TimeUnit.MILLISECONDS)
         .create();
 </code></pre>
+<h3><a class="anchor" aria-hidden="true" id="create-reader-with-interceptor"></a><a href="#create-reader-with-interceptor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
+<p>Pulsar reader interceptor intercepts and possibly mutates messages with user-defined processing before <a href="/docs/en/next/concepts-clients#reader-interface">Pulsar reader</a> reads them. With reader interceptors, you can apply unified messaging processes before messages can be read, such as modifying messages, adding properties, collecting statistics and etc, without creating similar mechanisms respectively.</p>
+<p><img src="/docs/assets/reader-interceptor.svg" alt="Reader interceptor"></p>
+<p>Pulsar reader interceptor works on top of Pulsar consumer interceptor. The plugin interface <code>ReaderInterceptor</code> can be treated as a subset of <code>ConsumerInterceptor</code> and it has two main events.</p>
+<ul>
+<li><code>beforeRead</code> is triggered before readers read messages. You can modify messages within this event.</li>
+<li><code>onPartitionsChange</code> is triggered when changes on partitions have been detected.</li>
+</ul>
+<p>To perceive triggered events and perform customized processing, you can add <code>ReaderInterceptor</code> when creating a <code>Reader</code> as follows.</p>
+<pre><code class="hljs css language-java">PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>).build();
+Reader&lt;<span class="hljs-keyword">byte</span>[]&gt; reader = pulsarClient.newReader()
+        .topic(“t1”)
+        .autoUpdatePartitionsInterval(<span class="hljs-number">5</span>, TimeUnit.SECONDS)
+        .intercept(<span class="hljs-keyword">new</span> ReaderInterceptor&lt;<span class="hljs-keyword">byte</span>[]&gt;() {
+            <span class="hljs-meta">@Override</span>
+            <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">close</span><span class="hljs-params">()</span> </span>{
+            }
+
+            <span class="hljs-meta">@Override</span>
+            <span class="hljs-keyword">public</span> Message&lt;<span class="hljs-keyword">byte</span>[]&gt; beforeRead(Reader&lt;<span class="hljs-keyword">byte</span>[]&gt; reader, Message&lt;<span class="hljs-keyword">byte</span>[]&gt; message) {
+                <span class="hljs-comment">// user-defined processing logic</span>
+                <span class="hljs-keyword">return</span> message;
+            }
+
+            <span class="hljs-meta">@Override</span>
+            <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onPartitionsChange</span><span class="hljs-params">(String topicName, <span class="hljs-keyword">int</span> partitions)</span> </span>{
+                <span class="hljs-comment">// user-defined processing logic</span>
+            }
+        })
+        .startMessageId(MessageId.earliest)
+        .create();
+</code></pre>
 <h2><a class="anchor" aria-hidden="true" id="tableview"></a><a href="#tableview" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>The TableView interface serves an encapsulated access pattern, providing a continuously updated key-value map view of the compacted topic data. Messages without keys will be ignored.</p>
 <p>With TableView, Pulsar clients can fetch all the message updates from a topic and construct a map with the latest values of each key. These values can then be used to build a local cache of data. In addition, you can register consumers with the TableView by specifying a listener to perform a scan of the map and then receive notifications when new messages are received. Consequently, event handling can be triggered to serve use cases, such as event-driven applications and message monit [...]
 <blockquote>
-<p><strong>Note:</strong> Each TableView uses one Reader instance per partition, and reads the topic starting from the compacted view by default. It is highly recommended to enable automatic compaction by <a href="/docs/en/next/cookbooks-compaction#configuring-compaction-to-run-automatically">configuring the topic compaction policies</a> for the given topic or namespace. More frequent compaction results in shorter startup times because less data is replayed to reconstruct the TableView o [...]
+<p><strong>Note</strong></p>
+<p>Each TableView uses one Reader instance per partition, and reads the topic starting from the compacted view by default. It is highly recommended to enable automatic compaction by <a href="/docs/en/next/cookbooks-compaction#configuring-compaction-to-run-automatically">configuring the topic compaction policies</a> for the given topic or namespace. More frequent compaction results in shorter startup times because less data is replayed to reconstruct the TableView of the topic.</p>
 </blockquote>
 <p>The following figure illustrates the dynamic construction of a TableView updated with newer values of each key.
 <img src="/docs/assets/tableview.png" alt="TableView"></p>
@@ -1108,7 +1141,7 @@ PulsarClient client = PulsarClient.builder()
     .authentication(auth)
     .build();
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/client-libraries"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/client-libraries-go"><span>Go</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installation">Installation</a><ul class="toc-headings"><li><a href="#maven">Maven</a></li><li><a href="#gradl [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/client-libraries"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/client-libraries-go"><span>Go</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#installation">Installation</a><ul class="toc-headings"><li><a href="#maven">Maven</a></li><li><a href="#gradl [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/deploy-bare-metal.html b/content/docs/en/next/deploy-bare-metal.html
index 6c5f9162364..e6e0bca0470 100644
--- a/content/docs/en/next/deploy-bare-metal.html
+++ b/content/docs/en/next/deploy-bare-metal.html
@@ -325,7 +325,7 @@ port by configuring the <code>metricsProvider.httpPort</code> in zookeeper.conf.
 <p>You can configure BookKeeper bookies using the <a href="/docs/en/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important step in configuring bookies for our purposes here is ensuring that <a href="/docs/en/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> is set to the connection string for the ZooKeeper cluster. The following is an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">zkServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
-<p>Once you appropriately modify the <code>zkServers</code> parameter, you can make any other configuration changes that you require. You can find a full listing of the available BookKeeper configuration parameters <a href="/docs/en/next/reference-configuration#bookkeeper">here</a>. However, consulting the <a href="http://bookkeeper.apache.org/docs/latest/reference/config/">BookKeeper documentation</a> for a more in-depth guide might be a better choice.</p>
+<p>Once you appropriately modify the <code>zkServers</code> parameter, you can make any other configuration changes that you require. You can find a full listing of the available BookKeeper configuration parameters <a href="/docs/en/next/reference-configuration#bookkeeper">here</a>. However, consulting the <a href="https://bookkeeper.apache.org/docs/next/reference/config/">BookKeeper documentation</a> for a more in-depth guide might be a better choice.</p>
 <p>Once you apply the desired configuration in <code>conf/bookkeeper.conf</code>, you can start up a bookie on each of your BookKeeper hosts. You can start up each bookie either in the background, using <a href="https://en.wikipedia.org/wiki/Nohup">nohup</a>, or in the foreground.</p>
 <p>To start the bookie in the background, use the <a href="/docs/en/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
@@ -407,9 +407,6 @@ port by configuring the <code>metricsProvider.httpPort</code> in zookeeper.conf.
   -n 1 \
   -m <span class="hljs-string">"Hello Pulsar"</span>
 </code></pre>
-<blockquote>
-<p>You may need to use a different cluster name in the topic if you specify a cluster name other than <code>pulsar-cluster-1</code>.</p>
-</blockquote>
 <p>This command publishes a single message to the Pulsar topic. In addition, you can subscribe to the Pulsar topic in a different terminal before publishing messages as below:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-client consume \
   persistent://public/default/<span class="hljs-built_in">test</span> \
diff --git a/content/docs/en/next/deploy-bare-metal/index.html b/content/docs/en/next/deploy-bare-metal/index.html
index 6c5f9162364..e6e0bca0470 100644
--- a/content/docs/en/next/deploy-bare-metal/index.html
+++ b/content/docs/en/next/deploy-bare-metal/index.html
@@ -325,7 +325,7 @@ port by configuring the <code>metricsProvider.httpPort</code> in zookeeper.conf.
 <p>You can configure BookKeeper bookies using the <a href="/docs/en/next/reference-configuration#bookkeeper"><code>conf/bookkeeper.conf</code></a> configuration file. The most important step in configuring bookies for our purposes here is ensuring that <a href="/docs/en/next/reference-configuration#bookkeeper-zkServers"><code>zkServers</code></a> is set to the connection string for the ZooKeeper cluster. The following is an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">zkServers</span>=<span class="hljs-string">zk1.us-west.example.com:2181,zk2.us-west.example.com:2181,zk3.us-west.example.com:2181</span>
 </code></pre>
-<p>Once you appropriately modify the <code>zkServers</code> parameter, you can make any other configuration changes that you require. You can find a full listing of the available BookKeeper configuration parameters <a href="/docs/en/next/reference-configuration#bookkeeper">here</a>. However, consulting the <a href="http://bookkeeper.apache.org/docs/latest/reference/config/">BookKeeper documentation</a> for a more in-depth guide might be a better choice.</p>
+<p>Once you appropriately modify the <code>zkServers</code> parameter, you can make any other configuration changes that you require. You can find a full listing of the available BookKeeper configuration parameters <a href="/docs/en/next/reference-configuration#bookkeeper">here</a>. However, consulting the <a href="https://bookkeeper.apache.org/docs/next/reference/config/">BookKeeper documentation</a> for a more in-depth guide might be a better choice.</p>
 <p>Once you apply the desired configuration in <code>conf/bookkeeper.conf</code>, you can start up a bookie on each of your BookKeeper hosts. You can start up each bookie either in the background, using <a href="https://en.wikipedia.org/wiki/Nohup">nohup</a>, or in the foreground.</p>
 <p>To start the bookie in the background, use the <a href="/docs/en/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start bookie
@@ -407,9 +407,6 @@ port by configuring the <code>metricsProvider.httpPort</code> in zookeeper.conf.
   -n 1 \
   -m <span class="hljs-string">"Hello Pulsar"</span>
 </code></pre>
-<blockquote>
-<p>You may need to use a different cluster name in the topic if you specify a cluster name other than <code>pulsar-cluster-1</code>.</p>
-</blockquote>
 <p>This command publishes a single message to the Pulsar topic. In addition, you can subscribe to the Pulsar topic in a different terminal before publishing messages as below:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-client consume \
   persistent://public/default/<span class="hljs-built_in">test</span> \
diff --git a/content/docs/en/next/develop-plugin.html b/content/docs/en/next/develop-plugin.html
index b0da8f80598..b6ecc157d8a 100644
--- a/content/docs/en/next/develop-plugin.html
+++ b/content/docs/en/next/develop-plugin.html
@@ -100,7 +100,7 @@
 </ul>
 <p>You can get entry metadata, subscriptions, and other information through <code>FilterContext</code>.</p></li>
 <li><p>Describe a NAR file.</p>
-<p>Create an <code>entry_filter.yaml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
+<p>Create an <code>entry_filter.yml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
 <pre><code class="hljs css language-conf"><span class="hljs-comment"># Entry filter name, which should be configured in the broker.conf file later</span>
 name: entryFilter
 <span class="hljs-comment"># Entry filter description</span>
diff --git a/content/docs/en/next/develop-plugin/index.html b/content/docs/en/next/develop-plugin/index.html
index b0da8f80598..b6ecc157d8a 100644
--- a/content/docs/en/next/develop-plugin/index.html
+++ b/content/docs/en/next/develop-plugin/index.html
@@ -100,7 +100,7 @@
 </ul>
 <p>You can get entry metadata, subscriptions, and other information through <code>FilterContext</code>.</p></li>
 <li><p>Describe a NAR file.</p>
-<p>Create an <code>entry_filter.yaml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
+<p>Create an <code>entry_filter.yml</code> file in the <code>resources/META-INF/services</code> directory to describe a NAR file.</p>
 <pre><code class="hljs css language-conf"><span class="hljs-comment"># Entry filter name, which should be configured in the broker.conf file later</span>
 name: entryFilter
 <span class="hljs-comment"># Entry filter description</span>
diff --git a/content/docs/en/next/io-elasticsearch-sink.html b/content/docs/en/next/io-elasticsearch-sink.html
index 0ec4fa9d656..fea11524415 100644
--- a/content/docs/en/next/io-elasticsearch-sink.html
+++ b/content/docs/en/next/io-elasticsearch-sink.html
@@ -11,6 +11,12 @@
           }
         });
       </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/io-elasticsearch-sink.md" [...]
+<h2><a class="anchor" aria-hidden="true" id="requirements"></a><a href="#requirements" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>To deploy an Elasticsearch sink connector, the following are required:</p>
+<ul>
+<li>Elasticsearch 7 (Elasticsearch 8 will be supported in the future)</li>
+<li>OpenSearch 1.x</li>
+</ul>
 <h2><a class="anchor" aria-hidden="true" id="feature"></a><a href="#feature" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <h3><a class="anchor" aria-hidden="true" id="handle-data"></a><a href="#handle-data" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>Since Pulsar 2.9.0, the Elasticsearch sink connector has the following ways of
@@ -188,7 +194,7 @@ You can see the record that published earlier has been successfully written into
 </code></pre></li>
 </ul></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#feature">Feature</a><ul class="toc-headings"><li><a href="#handle-data">Handle data</a></li><li><a href="#map-multiple-indexes">Map multiple indexes</a></li><li><a href="#enable-bulk-writes">Enable bulk writes</a></li><li><a href="#enable-secure-connections-via-tls">Enable secure connections via TLS</a></li></ul></li><li><a href="#configuration">Configur [...]
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#requirements">Requirements</a></li><li><a href="#feature">Feature</a><ul class="toc-headings"><li><a href="#handle-data">Handle data</a></li><li><a href="#map-multiple-indexes">Map multiple indexes</a></li><li><a href="#enable-bulk-writes">Enable bulk writes</a></li><li><a href="#enable-secure-connections-via-tls">Enable secure connections via TLS</a></l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/io-elasticsearch-sink/index.html b/content/docs/en/next/io-elasticsearch-sink/index.html
index 0ec4fa9d656..fea11524415 100644
--- a/content/docs/en/next/io-elasticsearch-sink/index.html
+++ b/content/docs/en/next/io-elasticsearch-sink/index.html
@@ -11,6 +11,12 @@
           }
         });
       </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/io-elasticsearch-sink.md" [...]
+<h2><a class="anchor" aria-hidden="true" id="requirements"></a><a href="#requirements" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>To deploy an Elasticsearch sink connector, the following are required:</p>
+<ul>
+<li>Elasticsearch 7 (Elasticsearch 8 will be supported in the future)</li>
+<li>OpenSearch 1.x</li>
+</ul>
 <h2><a class="anchor" aria-hidden="true" id="feature"></a><a href="#feature" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <h3><a class="anchor" aria-hidden="true" id="handle-data"></a><a href="#handle-data" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>Since Pulsar 2.9.0, the Elasticsearch sink connector has the following ways of
@@ -188,7 +194,7 @@ You can see the record that published earlier has been successfully written into
 </code></pre></li>
 </ul></li>
 </ol>
-</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#feature">Feature</a><ul class="toc-headings"><li><a href="#handle-data">Handle data</a></li><li><a href="#map-multiple-indexes">Map multiple indexes</a></li><li><a href="#enable-bulk-writes">Enable bulk writes</a></li><li><a href="#enable-secure-connections-via-tls">Enable secure connections via TLS</a></li></ul></li><li><a href="#configuration">Configur [...]
+</span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#requirements">Requirements</a></li><li><a href="#feature">Feature</a><ul class="toc-headings"><li><a href="#handle-data">Handle data</a></li><li><a href="#map-multiple-indexes">Map multiple indexes</a></li><li><a href="#enable-bulk-writes">Enable bulk writes</a></li><li><a href="#enable-secure-connections-via-tls">Enable secure connections via TLS</a></l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/io-rabbitmq-sink.html b/content/docs/en/next/io-rabbitmq-sink.html
index 53c608645cb..7e5cc880751 100644
--- a/content/docs/en/next/io-rabbitmq-sink.html
+++ b/content/docs/en/next/io-rabbitmq-sink.html
@@ -33,7 +33,7 @@ and persist the messages to RabbitMQ queues.</p>
 <tr><td><code>handshakeTimeout</code></td><td>int</td><td>false</td><td>10000</td><td>The timeout of AMQP0-9-1 protocol handshake in milliseconds.</td></tr>
 <tr><td><code>requestedHeartbeat</code></td><td>int</td><td>false</td><td>60</td><td>The exchange to publish messages.</td></tr>
 <tr><td><code>exchangeName</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The maximum number of messages that the server delivers.<br><br> 0 means unlimited.</td></tr>
-<tr><td><code>prefetchGlobal</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The routing key used to publish messages.</td></tr>
+<tr><td><code>routingKey</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The routing key used to publish messages.</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -63,7 +63,7 @@ and persist the messages to RabbitMQ queues.</p>
 <pre><code class="hljs css language-yaml"><span class="hljs-attr">configs:</span>
     <span class="hljs-attr">host:</span> <span class="hljs-string">"localhost"</span>
     <span class="hljs-attr">port:</span> <span class="hljs-number">5672</span>
-    <span class="hljs-attr">virtualHost:</span> <span class="hljs-string">"/"</span><span class="hljs-string">,</span>
+    <span class="hljs-attr">virtualHost:</span> <span class="hljs-string">"/"</span>
     <span class="hljs-attr">username:</span> <span class="hljs-string">"guest"</span>
     <span class="hljs-attr">password:</span> <span class="hljs-string">"guest"</span>
     <span class="hljs-attr">queueName:</span> <span class="hljs-string">"test-queue"</span>
diff --git a/content/docs/en/next/io-rabbitmq-sink/index.html b/content/docs/en/next/io-rabbitmq-sink/index.html
index 53c608645cb..7e5cc880751 100644
--- a/content/docs/en/next/io-rabbitmq-sink/index.html
+++ b/content/docs/en/next/io-rabbitmq-sink/index.html
@@ -33,7 +33,7 @@ and persist the messages to RabbitMQ queues.</p>
 <tr><td><code>handshakeTimeout</code></td><td>int</td><td>false</td><td>10000</td><td>The timeout of AMQP0-9-1 protocol handshake in milliseconds.</td></tr>
 <tr><td><code>requestedHeartbeat</code></td><td>int</td><td>false</td><td>60</td><td>The exchange to publish messages.</td></tr>
 <tr><td><code>exchangeName</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The maximum number of messages that the server delivers.<br><br> 0 means unlimited.</td></tr>
-<tr><td><code>prefetchGlobal</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The routing key used to publish messages.</td></tr>
+<tr><td><code>routingKey</code></td><td>String</td><td>true</td><td>&quot; &quot; (empty string)</td><td>The routing key used to publish messages.</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -63,7 +63,7 @@ and persist the messages to RabbitMQ queues.</p>
 <pre><code class="hljs css language-yaml"><span class="hljs-attr">configs:</span>
     <span class="hljs-attr">host:</span> <span class="hljs-string">"localhost"</span>
     <span class="hljs-attr">port:</span> <span class="hljs-number">5672</span>
-    <span class="hljs-attr">virtualHost:</span> <span class="hljs-string">"/"</span><span class="hljs-string">,</span>
+    <span class="hljs-attr">virtualHost:</span> <span class="hljs-string">"/"</span>
     <span class="hljs-attr">username:</span> <span class="hljs-string">"guest"</span>
     <span class="hljs-attr">password:</span> <span class="hljs-string">"guest"</span>
     <span class="hljs-attr">queueName:</span> <span class="hljs-string">"test-queue"</span>
diff --git a/content/docs/en/next/reference-configuration.html b/content/docs/en/next/reference-configuration.html
index 9c9ae6949ea..e80a5da8d9f 100644
--- a/content/docs/en/next/reference-configuration.html
+++ b/content/docs/en/next/reference-configuration.html
@@ -99,7 +99,7 @@
 <tr><td>journalDirectory</td><td>The directory where BookKeeper outputs its write-ahead log (WAL).</td><td>data/bookkeeper/journal</td></tr>
 <tr><td>journalDirectories</td><td>Directories that BookKeeper outputs its write ahead log. Multiple directories are available, being separated by <code>,</code>. For example: <code>journalDirectories=/tmp/bk-journal1,/tmp/bk-journal2</code>. If <code>journalDirectories</code> is set, the bookies skip <code>journalDirectory</code> and use this setting directory.</td><td>/tmp/bk-journal</td></tr>
 <tr><td>ledgerDirectories</td><td>The directory where BookKeeper outputs ledger snapshots. This could define multiple directories to store snapshots separated by <code>,</code>, for example <code>ledgerDirectories=/tmp/bk1-data,/tmp/bk2-data</code>. Ideally, ledger dirs and the journal dir are each in a different device, which reduces the contention between random I/O and sequential write. It is possible to run with a single disk, but performance will be significantly lower.</td><td>data [...]
-<tr><td>ledgerManagerType</td><td>The type of ledger manager used to manage how ledgers are stored, managed, and garbage collected. See <a href="http://bookkeeper.apache.org/docs/latest/getting-started/concepts">BookKeeper Internals</a> for more info.</td><td>hierarchical</td></tr>
+<tr><td>ledgerManagerType</td><td>The type of ledger manager used to manage how ledgers are stored, managed, and garbage collected. See <a href="https://bookkeeper.apache.org/docs/next/getting-started/concepts">BookKeeper Internals</a> for more info.</td><td>hierarchical</td></tr>
 <tr><td>zkLedgersRootPath</td><td>The root ZooKeeper path used to store ledger metadata. This parameter is used by the ZooKeeper-based ledger manager as a root znode to store all ledgers.</td><td>/ledgers</td></tr>
 <tr><td>ledgerStorageClass</td><td>Ledger storage implementation class</td><td>org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage</td></tr>
 <tr><td>entryLogFilePreallocationEnabled</td><td>Enable or disable entry logger preallocation</td><td>true</td></tr>
diff --git a/content/docs/en/next/reference-configuration/index.html b/content/docs/en/next/reference-configuration/index.html
index 9c9ae6949ea..e80a5da8d9f 100644
--- a/content/docs/en/next/reference-configuration/index.html
+++ b/content/docs/en/next/reference-configuration/index.html
@@ -99,7 +99,7 @@
 <tr><td>journalDirectory</td><td>The directory where BookKeeper outputs its write-ahead log (WAL).</td><td>data/bookkeeper/journal</td></tr>
 <tr><td>journalDirectories</td><td>Directories that BookKeeper outputs its write ahead log. Multiple directories are available, being separated by <code>,</code>. For example: <code>journalDirectories=/tmp/bk-journal1,/tmp/bk-journal2</code>. If <code>journalDirectories</code> is set, the bookies skip <code>journalDirectory</code> and use this setting directory.</td><td>/tmp/bk-journal</td></tr>
 <tr><td>ledgerDirectories</td><td>The directory where BookKeeper outputs ledger snapshots. This could define multiple directories to store snapshots separated by <code>,</code>, for example <code>ledgerDirectories=/tmp/bk1-data,/tmp/bk2-data</code>. Ideally, ledger dirs and the journal dir are each in a different device, which reduces the contention between random I/O and sequential write. It is possible to run with a single disk, but performance will be significantly lower.</td><td>data [...]
-<tr><td>ledgerManagerType</td><td>The type of ledger manager used to manage how ledgers are stored, managed, and garbage collected. See <a href="http://bookkeeper.apache.org/docs/latest/getting-started/concepts">BookKeeper Internals</a> for more info.</td><td>hierarchical</td></tr>
+<tr><td>ledgerManagerType</td><td>The type of ledger manager used to manage how ledgers are stored, managed, and garbage collected. See <a href="https://bookkeeper.apache.org/docs/next/getting-started/concepts">BookKeeper Internals</a> for more info.</td><td>hierarchical</td></tr>
 <tr><td>zkLedgersRootPath</td><td>The root ZooKeeper path used to store ledger metadata. This parameter is used by the ZooKeeper-based ledger manager as a root znode to store all ledgers.</td><td>/ledgers</td></tr>
 <tr><td>ledgerStorageClass</td><td>Ledger storage implementation class</td><td>org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage</td></tr>
 <tr><td>entryLogFilePreallocationEnabled</td><td>Enable or disable entry logger preallocation</td><td>true</td></tr>
diff --git a/content/docs/en/next/reference-pulsar-admin.html b/content/docs/en/next/reference-pulsar-admin.html
index 23dcb96b476..2c23eef6195 100644
--- a/content/docs/en/next/reference-pulsar-admin.html
+++ b/content/docs/en/next/reference-pulsar-admin.html
@@ -1021,7 +1021,7 @@
 </thead>
 <tbody>
 <tr><td><code>-l</code>, <code>--limit</code></td><td>The backlog size limit (for example <code>10M</code> or <code>16G</code>)</td><td></td></tr>
-<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second, non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
+<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w), non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
 <tr><td><code>-p</code>, <code>--policy</code></td><td>The retention policy to enforce when the limit is reached. The valid options are: <code>producer_request_hold</code>, <code>producer_exception</code> or <code>consumer_backlog_eviction</code></td></tr>
 <tr><td><code>-t</code>, <code>--type</code></td><td>Backlog quota type to set. The valid options are: <code>destination_storage</code>, <code>message_age</code></td><td>destination_storage</td></tr>
 </tbody>
@@ -2046,7 +2046,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 <tr><th>Flag</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time (in seconds)</td><td>0</td></tr>
+<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time in seconds (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)</td><td>0</td></tr>
 <tr><td><code>-s</code>, <code>--subscription</code></td><td>The subscription to skip messages on</td><td></td></tr>
 </tbody>
 </table>
@@ -2061,7 +2061,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 <tr><th>Flag</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time (in seconds)</td><td>0</td></tr>
+<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time in seconds (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)</td><td>0</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="peek-messages"></a><a href="#peek-messages" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
@@ -2128,7 +2128,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 </thead>
 <tbody>
 <tr><td><code>-l</code>, <code>--limit</code></td><td>The backlog size limit (for example <code>10M</code> or <code>16G</code>)</td><td></td></tr>
-<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second, non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
+<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w), non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
 <tr><td><code>-p</code>, <code>--policy</code></td><td>The retention policy to enforce when the limit is reached. The valid options are: <code>producer_request_hold</code>, <code>producer_exception</code> or <code>consumer_backlog_eviction</code></td></tr>
 <tr><td><code>-t</code>, <code>--type</code></td><td>Backlog quota type to set. The valid options are: <code>destination_storage</code>, <code>message_age</code></td><td>destination_storage</td></tr>
 </tbody>
@@ -2202,7 +2202,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 <tr><th>Flag</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-ttl</code>, <code>--messageTTL</code></td><td>Message TTL for a topic in second, allowed range from 1 to <code>Integer.MAX_VALUE</code></td><td>0</td></tr>
+<tr><td><code>-t</code>, <code>--ttl</code></td><td>Message TTL for a topic in second (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w), allowed range from 1 to <code>Integer.MAX_VALUE</code></td><td>0</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="remove-message-ttl-1"></a><a href="#remove-message-ttl-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
diff --git a/content/docs/en/next/reference-pulsar-admin/index.html b/content/docs/en/next/reference-pulsar-admin/index.html
index 23dcb96b476..2c23eef6195 100644
--- a/content/docs/en/next/reference-pulsar-admin/index.html
+++ b/content/docs/en/next/reference-pulsar-admin/index.html
@@ -1021,7 +1021,7 @@
 </thead>
 <tbody>
 <tr><td><code>-l</code>, <code>--limit</code></td><td>The backlog size limit (for example <code>10M</code> or <code>16G</code>)</td><td></td></tr>
-<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second, non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
+<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w), non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
 <tr><td><code>-p</code>, <code>--policy</code></td><td>The retention policy to enforce when the limit is reached. The valid options are: <code>producer_request_hold</code>, <code>producer_exception</code> or <code>consumer_backlog_eviction</code></td></tr>
 <tr><td><code>-t</code>, <code>--type</code></td><td>Backlog quota type to set. The valid options are: <code>destination_storage</code>, <code>message_age</code></td><td>destination_storage</td></tr>
 </tbody>
@@ -2046,7 +2046,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 <tr><th>Flag</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time (in seconds)</td><td>0</td></tr>
+<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time in seconds (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)</td><td>0</td></tr>
 <tr><td><code>-s</code>, <code>--subscription</code></td><td>The subscription to skip messages on</td><td></td></tr>
 </tbody>
 </table>
@@ -2061,7 +2061,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 <tr><th>Flag</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time (in seconds)</td><td>0</td></tr>
+<tr><td><code>-t</code>, <code>--expireTime</code></td><td>Expire messages older than the time in seconds (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)</td><td>0</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="peek-messages"></a><a href="#peek-messages" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
@@ -2128,7 +2128,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 </thead>
 <tbody>
 <tr><td><code>-l</code>, <code>--limit</code></td><td>The backlog size limit (for example <code>10M</code> or <code>16G</code>)</td><td></td></tr>
-<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second, non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
+<tr><td><code>-lt</code>, <code>--limitTime</code></td><td>Time limit in second (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w), non-positive number for disabling time limit. (for example 3600 for 1 hour)</td><td></td></tr>
 <tr><td><code>-p</code>, <code>--policy</code></td><td>The retention policy to enforce when the limit is reached. The valid options are: <code>producer_request_hold</code>, <code>producer_exception</code> or <code>consumer_backlog_eviction</code></td></tr>
 <tr><td><code>-t</code>, <code>--type</code></td><td>Backlog quota type to set. The valid options are: <code>destination_storage</code>, <code>message_age</code></td><td>destination_storage</td></tr>
 </tbody>
@@ -2202,7 +2202,7 @@ The unit of <code>storageSize</code> and <code>averageMsgSize</code> is Byte.</p
 <tr><th>Flag</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>-ttl</code>, <code>--messageTTL</code></td><td>Message TTL for a topic in second, allowed range from 1 to <code>Integer.MAX_VALUE</code></td><td>0</td></tr>
+<tr><td><code>-t</code>, <code>--ttl</code></td><td>Message TTL for a topic in second (or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w), allowed range from 1 to <code>Integer.MAX_VALUE</code></td><td>0</td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="remove-message-ttl-1"></a><a href="#remove-message-ttl-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
diff --git a/content/docs/en/next/security-encryption.html b/content/docs/en/next/security-encryption.html
index ed8f4237765..729fb2f43ab 100644
--- a/content/docs/en/next/security-encryption.html
+++ b/content/docs/en/next/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,18 +79,27 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Configure a <code>CryptoKeyReader</code> to a producer, consumer or reader.</p></li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-726-tab-727" class="nav-link active" data-group="group_726" data-tab="tab-group-726-content-727">Java</div><div id="tab-group-726-tab-728" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-728">C++</div><div id="tab-group-726-tab-729" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-729">Python</div><div id="tab-group-726-tab-730" class="nav-link" data-group="group_726" data-tab="tab-g [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-726-tab-727" class="nav-link active" data-group="group_726" data-tab="tab-group-726-content-727">Java</div><div id="tab-group-726-tab-728" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-728">C++</div><div id="tab-group-726-tab-729" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-729">Python</div><div id="tab-group-726-tab-730" class="nav-link" data-group="group_726" data-tab="tab-g [...]
 </span></div></div><div id="tab-group-726-content-728" class="tab-pane" data-group="group_726" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;<br /><span class="hljs-built_in">std</span>::<span class="hljs-built_in">string</span> topic = <span class="hljs-string"> [...]
 </span></div></div><div id="tab-group-726-content-729" class="tab-pane" data-group="group_726" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client, CryptoKeyReader<br /><br />client = Client(<span class="hljs-string">'pulsar://localhost:6650'</span>)<br />topic = <span class="hljs-string">'persistent://my-tenant/my-ns/my-topic'</span><br /><span class="hljs-comment"># CryptoKeyR [...]
 </span></div></div><div id="tab-group-726-content-730" class="tab-pane" data-group="group_726" tabindex="-1"><div><span><pre><code class="hljs css language-nodejs"><span class="hljs-keyword">const</span> Pulsar = <span class="hljs-built_in">require</span>(<span class="hljs-string">'pulsar-client'</span>);<br /><br /><span class="hljs-function">(<span class="hljs-params"><span class="hljs-keyword">async</span> (<span class="hljs-params"></span>) =&gt; {<br /><span class="hljs-comment">//  [...]
@@ -98,11 +107,11 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <ol start="6">
 <li>Below is an example of a <strong>customized</strong> <code>CryptoKeyReader</code> implementation.</li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-731-tab-732" class="nav-link active" data-group="group_731" data-tab="tab-group-731-content-732">Java</div><div id="tab-group-731-tab-733" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-733">C++</div><div id="tab-group-731-tab-734" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-734">Python</div><div id="tab-group-731-tab-735" class="nav-link" data-group="group_731" data-tab="tab-g [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-731-tab-732" class="nav-link active" data-group="group_731" data-tab="tab-group-731-content-732">Java</div><div id="tab-group-731-tab-733" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-733">C++</div><div id="tab-group-731-tab-734" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-734">Python</div><div id="tab-group-731-tab-735" class="nav-link" data-group="group_731" data-tab="tab-g [...]
 </span></div></div><div id="tab-group-731-content-733" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomCryptoKeyReader</span> :</span> <span class="hljs-keyword">public</span> CryptoKeyReader {<br />    <span class="hljs-keyword">public</span>:<br />    <span class="hljs-function">Result <span class="hljs-title">getPublicKey</span><span [...]
 <p>Besides, you can use the <strong>default</strong> implementation of <code>CryptoKeyReader</code> by specifying the paths of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div><div id="tab-group-731-content-734" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Python. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
-</span></div></div><div id="tab-group-731-content-735" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.JS. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
+</span></div></div><div id="tab-group-731-content-735" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.js. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="key-rotation"></a><a href="#key-rotation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>Pulsar generates a new AES data key every 4 hours or after publishing a certain number of messages. A producer fetches the asymmetric public key every 4 hours by calling CryptoKeyReader.getPublicKey() to retrieve the latest version.</p>
@@ -113,23 +122,23 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/next/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and s [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/next/security-encryption/index.html b/content/docs/en/next/security-encryption/index.html
index ed8f4237765..729fb2f43ab 100644
--- a/content/docs/en/next/security-encryption/index.html
+++ b/content/docs/en/next/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,18 +79,27 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Configure a <code>CryptoKeyReader</code> to a producer, consumer or reader.</p></li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-726-tab-727" class="nav-link active" data-group="group_726" data-tab="tab-group-726-content-727">Java</div><div id="tab-group-726-tab-728" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-728">C++</div><div id="tab-group-726-tab-729" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-729">Python</div><div id="tab-group-726-tab-730" class="nav-link" data-group="group_726" data-tab="tab-g [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-726-tab-727" class="nav-link active" data-group="group_726" data-tab="tab-group-726-content-727">Java</div><div id="tab-group-726-tab-728" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-728">C++</div><div id="tab-group-726-tab-729" class="nav-link" data-group="group_726" data-tab="tab-group-726-content-729">Python</div><div id="tab-group-726-tab-730" class="nav-link" data-group="group_726" data-tab="tab-g [...]
 </span></div></div><div id="tab-group-726-content-728" class="tab-pane" data-group="group_726" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;<br /><span class="hljs-built_in">std</span>::<span class="hljs-built_in">string</span> topic = <span class="hljs-string"> [...]
 </span></div></div><div id="tab-group-726-content-729" class="tab-pane" data-group="group_726" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client, CryptoKeyReader<br /><br />client = Client(<span class="hljs-string">'pulsar://localhost:6650'</span>)<br />topic = <span class="hljs-string">'persistent://my-tenant/my-ns/my-topic'</span><br /><span class="hljs-comment"># CryptoKeyR [...]
 </span></div></div><div id="tab-group-726-content-730" class="tab-pane" data-group="group_726" tabindex="-1"><div><span><pre><code class="hljs css language-nodejs"><span class="hljs-keyword">const</span> Pulsar = <span class="hljs-built_in">require</span>(<span class="hljs-string">'pulsar-client'</span>);<br /><br /><span class="hljs-function">(<span class="hljs-params"><span class="hljs-keyword">async</span> (<span class="hljs-params"></span>) =&gt; {<br /><span class="hljs-comment">//  [...]
@@ -98,11 +107,11 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <ol start="6">
 <li>Below is an example of a <strong>customized</strong> <code>CryptoKeyReader</code> implementation.</li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-731-tab-732" class="nav-link active" data-group="group_731" data-tab="tab-group-731-content-732">Java</div><div id="tab-group-731-tab-733" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-733">C++</div><div id="tab-group-731-tab-734" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-734">Python</div><div id="tab-group-731-tab-735" class="nav-link" data-group="group_731" data-tab="tab-g [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-731-tab-732" class="nav-link active" data-group="group_731" data-tab="tab-group-731-content-732">Java</div><div id="tab-group-731-tab-733" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-733">C++</div><div id="tab-group-731-tab-734" class="nav-link" data-group="group_731" data-tab="tab-group-731-content-734">Python</div><div id="tab-group-731-tab-735" class="nav-link" data-group="group_731" data-tab="tab-g [...]
 </span></div></div><div id="tab-group-731-content-733" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomCryptoKeyReader</span> :</span> <span class="hljs-keyword">public</span> CryptoKeyReader {<br />    <span class="hljs-keyword">public</span>:<br />    <span class="hljs-function">Result <span class="hljs-title">getPublicKey</span><span [...]
 <p>Besides, you can use the <strong>default</strong> implementation of <code>CryptoKeyReader</code> by specifying the paths of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div><div id="tab-group-731-content-734" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Python. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
-</span></div></div><div id="tab-group-731-content-735" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.JS. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
+</span></div></div><div id="tab-group-731-content-735" class="tab-pane" data-group="group_731" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.js. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="key-rotation"></a><a href="#key-rotation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>Pulsar generates a new AES data key every 4 hours or after publishing a certain number of messages. A producer fetches the asymmetric public key every 4 hours by calling CryptoKeyReader.getPublicKey() to retrieve the latest version.</p>
@@ -113,23 +122,23 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/next/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and s [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/next/security-kerberos.html b/content/docs/en/next/security-kerberos.html
index 9ba3cb035cc..a8b74eda1f4 100644
--- a/content/docs/en/next/security-kerberos.html
+++ b/content/docs/en/next/security-kerberos.html
@@ -329,7 +329,7 @@ requireClientAuthScheme=sasl
 </code></pre>
 <p>In this setting, the principal of Pulsar Broker and keyTab file indicates the role of Broker when you authenticate with ZooKeeper.</p>
 <h2><a class="anchor" aria-hidden="true" id="regarding-authentication-between-bookkeeper-and-broker"></a><a href="#regarding-authentication-between-bookkeeper-and-broker" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Pulsar Broker acts as a Kerberos client when you authenticate with Bookie. According to <a href="http://bookkeeper.apache.org/docs/latest/security/sasl/">BookKeeper document</a>, you need to add <code>bookkeeperClientAuthenticationPlugin</code> parameter in <code>broker.conf</code>:</p>
+<p>Pulsar Broker acts as a Kerberos client when you authenticate with Bookie. According to <a href="https://bookkeeper.apache.org/docs/next/security/sasl/">BookKeeper document</a>, you need to add <code>bookkeeperClientAuthenticationPlugin</code> parameter in <code>broker.conf</code>:</p>
 <pre><code class="hljs">bookkeeperClientAuthenticationPlugin=org<span class="hljs-selector-class">.apache</span><span class="hljs-selector-class">.bookkeeper</span><span class="hljs-selector-class">.sasl</span><span class="hljs-selector-class">.SASLClientProviderFactory</span>
 </code></pre>
 <p>In this setting, <code>SASLClientProviderFactory</code> creates a BookKeeper SASL client in a Broker, and the Broker uses the created SASL client to authenticate with a Bookie node.</p>
diff --git a/content/docs/en/next/security-kerberos/index.html b/content/docs/en/next/security-kerberos/index.html
index 9ba3cb035cc..a8b74eda1f4 100644
--- a/content/docs/en/next/security-kerberos/index.html
+++ b/content/docs/en/next/security-kerberos/index.html
@@ -329,7 +329,7 @@ requireClientAuthScheme=sasl
 </code></pre>
 <p>In this setting, the principal of Pulsar Broker and keyTab file indicates the role of Broker when you authenticate with ZooKeeper.</p>
 <h2><a class="anchor" aria-hidden="true" id="regarding-authentication-between-bookkeeper-and-broker"></a><a href="#regarding-authentication-between-bookkeeper-and-broker" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Pulsar Broker acts as a Kerberos client when you authenticate with Bookie. According to <a href="http://bookkeeper.apache.org/docs/latest/security/sasl/">BookKeeper document</a>, you need to add <code>bookkeeperClientAuthenticationPlugin</code> parameter in <code>broker.conf</code>:</p>
+<p>Pulsar Broker acts as a Kerberos client when you authenticate with Bookie. According to <a href="https://bookkeeper.apache.org/docs/next/security/sasl/">BookKeeper document</a>, you need to add <code>bookkeeperClientAuthenticationPlugin</code> parameter in <code>broker.conf</code>:</p>
 <pre><code class="hljs">bookkeeperClientAuthenticationPlugin=org<span class="hljs-selector-class">.apache</span><span class="hljs-selector-class">.bookkeeper</span><span class="hljs-selector-class">.sasl</span><span class="hljs-selector-class">.SASLClientProviderFactory</span>
 </code></pre>
 <p>In this setting, <code>SASLClientProviderFactory</code> creates a BookKeeper SASL client in a Broker, and the Broker uses the created SASL client to authenticate with a Bookie node.</p>
diff --git a/content/docs/en/security-encryption.html b/content/docs/en/security-encryption.html
index 159dfa34aae..53dfd4e795a 100644
--- a/content/docs/en/security-encryption.html
+++ b/content/docs/en/security-encryption.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,18 +79,27 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Configure a <code>CryptoKeyReader</code> to a producer, consumer or reader.</p></li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1020-tab-1021" class="nav-link active" data-group="group_1020" data-tab="tab-group-1020-content-1021">Java</div><div id="tab-group-1020-tab-1022" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1022">C++</div><div id="tab-group-1020-tab-1023" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1023">Python</div><div id="tab-group-1020-tab-1024" class="nav-link" data-group="group_102 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1020-tab-1021" class="nav-link active" data-group="group_1020" data-tab="tab-group-1020-content-1021">Java</div><div id="tab-group-1020-tab-1022" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1022">C++</div><div id="tab-group-1020-tab-1023" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1023">Python</div><div id="tab-group-1020-tab-1024" class="nav-link" data-group="group_102 [...]
 </span></div></div><div id="tab-group-1020-content-1022" class="tab-pane" data-group="group_1020" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;<br /><span class="hljs-built_in">std</span>::<span class="hljs-built_in">string</span> topic = <span class="hljs-strin [...]
 </span></div></div><div id="tab-group-1020-content-1023" class="tab-pane" data-group="group_1020" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client, CryptoKeyReader<br /><br />client = Client(<span class="hljs-string">'pulsar://localhost:6650'</span>)<br />topic = <span class="hljs-string">'persistent://my-tenant/my-ns/my-topic'</span><br /><span class="hljs-comment"># CryptoK [...]
 </span></div></div><div id="tab-group-1020-content-1024" class="tab-pane" data-group="group_1020" tabindex="-1"><div><span><pre><code class="hljs css language-nodejs"><span class="hljs-keyword">const</span> Pulsar = <span class="hljs-built_in">require</span>(<span class="hljs-string">'pulsar-client'</span>);<br /><br /><span class="hljs-function">(<span class="hljs-params"><span class="hljs-keyword">async</span> (<span class="hljs-params"></span>) =&gt; {<br /><span class="hljs-comment"> [...]
@@ -98,11 +107,11 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <ol start="6">
 <li>Below is an example of a <strong>customized</strong> <code>CryptoKeyReader</code> implementation.</li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1025-tab-1026" class="nav-link active" data-group="group_1025" data-tab="tab-group-1025-content-1026">Java</div><div id="tab-group-1025-tab-1027" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1027">C++</div><div id="tab-group-1025-tab-1028" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1028">Python</div><div id="tab-group-1025-tab-1029" class="nav-link" data-group="group_102 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1025-tab-1026" class="nav-link active" data-group="group_1025" data-tab="tab-group-1025-content-1026">Java</div><div id="tab-group-1025-tab-1027" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1027">C++</div><div id="tab-group-1025-tab-1028" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1028">Python</div><div id="tab-group-1025-tab-1029" class="nav-link" data-group="group_102 [...]
 </span></div></div><div id="tab-group-1025-content-1027" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomCryptoKeyReader</span> :</span> <span class="hljs-keyword">public</span> CryptoKeyReader {<br />    <span class="hljs-keyword">public</span>:<br />    <span class="hljs-function">Result <span class="hljs-title">getPublicKey</span><s [...]
 <p>Besides, you can use the <strong>default</strong> implementation of <code>CryptoKeyReader</code> by specifying the paths of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div><div id="tab-group-1025-content-1028" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Python. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
-</span></div></div><div id="tab-group-1025-content-1029" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.JS. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
+</span></div></div><div id="tab-group-1025-content-1029" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.js. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="key-rotation"></a><a href="#key-rotation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>Pulsar generates a new AES data key every 4 hours or after publishing a certain number of messages. A producer fetches the asymmetric public key every 4 hours by calling CryptoKeyReader.getPublicKey() to retrieve the latest version.</p>
@@ -113,23 +122,23 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and symmetric e [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/en/security-encryption/index.html b/content/docs/en/security-encryption/index.html
index 159dfa34aae..53dfd4e795a 100644
--- a/content/docs/en/security-encryption/index.html
+++ b/content/docs/en/security-encryption/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages at the producer side and decrypt messages at the consumer side. You can use the public and private key pair that the appl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar Encryption · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Applications can use Pulsar encryption to encrypt messages on the producer side and decrypt messages on the consumer side. You can use the public and private key pair that the appl [...]
         const languagesMenuItem = document.getElementById("languages-menu");
         const languagesDropDown = document.getElementById("languages-dropdown");
         languagesMenuItem.addEventListener("click", function(event) {
@@ -66,9 +66,9 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages at the producer si [...]
+        </script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/security-encryption.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Pulsar Encryption</h1></header><article><div><span><p>Applications can use Pulsar encryption to encrypt messages on the producer si [...]
 <h2><a class="anchor" aria-hidden="true" id="asymmetric-and-symmetric-encryption"></a><a href="#asymmetric-and-symmetric-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2 [...]
-<p>Pulsar uses dynamically generated symmetric AES key to encrypt messages(data). You can use the application provided ECDSA/RSA key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
+<p>Pulsar uses a dynamically generated symmetric AES key to encrypt messages(data). You can use the application-provided ECDSA (Elliptic Curve Digital Signature Algorithm) or RSA (Rivest–Shamir–Adleman) key pair to encrypt the AES key(data key), so you do not have to share the secret with everyone.</p>
 <p>Key is a public and private key pair used for encryption or decryption. The producer key is the public key of the key pair, and the consumer key is the private key of the key pair.</p>
 <p>The application configures the producer with the public key. You can use this key to encrypt the AES data key. The encrypted data key is sent as part of message header. Only entities with the private key (in this case the consumer) are able to decrypt the data key which is used to decrypt the message.</p>
 <p>You can encrypt a message with more than one key. Any one of the keys used for encrypting the message is sufficient to decrypt the message.</p>
@@ -79,18 +79,27 @@
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="get-started"></a><a href="#get-started" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <ol>
-<li>Enter the commands below to create your ECDSA or RSA public and private key pair.</li>
+<li>Create your ECDSA or RSA public and private key pair by using the following commands.</li>
 </ol>
+<ul>
+<li>ECDSA(for Java clients only)</li>
+</ul>
 <pre><code class="hljs css language-shell">openssl ecparam -name secp521r1 -genkey -param_enc explicit -out test_ecdsa_privkey.pem
 openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubkey.pem
 </code></pre>
+<ul>
+<li>RSA (for C++, Python and Node.js clients)</li>
+</ul>
+<pre><code class="hljs css language-shell">openssl genrsa -out test_rsa_privkey.pem 2048
+openssl rsa -in test_rsa_privkey.pem -pubout -outform pkcs8 -out test_rsa_pubkey.pem
+</code></pre>
 <ol start="2">
 <li><p>Add the public and private key to the key management and configure your producers to retrieve public keys and consumers clients to retrieve private keys.</p></li>
-<li><p>Implement the CryptoKeyReader interface, specifically CryptoKeyReader.getPublicKey() for producer and CryptoKeyReader.getPrivateKey() for consumer, which Pulsar client invokes to load the key.</p></li>
-<li><p>Add encryption key name to producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
+<li><p>Implement the <code>CryptoKeyReader</code> interface, specifically <code>CryptoKeyReader.getPublicKey()</code> for producer and <code>CryptoKeyReader.getPrivateKey()</code> for consumer, which Pulsar client invokes to load the key.</p></li>
+<li><p>Add the encryption key name to the producer builder: PulsarClient.newProducer().addEncryptionKey(&quot;myapp.key&quot;).</p></li>
 <li><p>Configure a <code>CryptoKeyReader</code> to a producer, consumer or reader.</p></li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1020-tab-1021" class="nav-link active" data-group="group_1020" data-tab="tab-group-1020-content-1021">Java</div><div id="tab-group-1020-tab-1022" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1022">C++</div><div id="tab-group-1020-tab-1023" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1023">Python</div><div id="tab-group-1020-tab-1024" class="nav-link" data-group="group_102 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1020-tab-1021" class="nav-link active" data-group="group_1020" data-tab="tab-group-1020-content-1021">Java</div><div id="tab-group-1020-tab-1022" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1022">C++</div><div id="tab-group-1020-tab-1023" class="nav-link" data-group="group_1020" data-tab="tab-group-1020-content-1023">Python</div><div id="tab-group-1020-tab-1024" class="nav-link" data-group="group_102 [...]
 </span></div></div><div id="tab-group-1020-content-1022" class="tab-pane" data-group="group_1020" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;<br /><span class="hljs-built_in">std</span>::<span class="hljs-built_in">string</span> topic = <span class="hljs-strin [...]
 </span></div></div><div id="tab-group-1020-content-1023" class="tab-pane" data-group="group_1020" tabindex="-1"><div><span><pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client, CryptoKeyReader<br /><br />client = Client(<span class="hljs-string">'pulsar://localhost:6650'</span>)<br />topic = <span class="hljs-string">'persistent://my-tenant/my-ns/my-topic'</span><br /><span class="hljs-comment"># CryptoK [...]
 </span></div></div><div id="tab-group-1020-content-1024" class="tab-pane" data-group="group_1020" tabindex="-1"><div><span><pre><code class="hljs css language-nodejs"><span class="hljs-keyword">const</span> Pulsar = <span class="hljs-built_in">require</span>(<span class="hljs-string">'pulsar-client'</span>);<br /><br /><span class="hljs-function">(<span class="hljs-params"><span class="hljs-keyword">async</span> (<span class="hljs-params"></span>) =&gt; {<br /><span class="hljs-comment"> [...]
@@ -98,11 +107,11 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <ol start="6">
 <li>Below is an example of a <strong>customized</strong> <code>CryptoKeyReader</code> implementation.</li>
 </ol>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1025-tab-1026" class="nav-link active" data-group="group_1025" data-tab="tab-group-1025-content-1026">Java</div><div id="tab-group-1025-tab-1027" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1027">C++</div><div id="tab-group-1025-tab-1028" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1028">Python</div><div id="tab-group-1025-tab-1029" class="nav-link" data-group="group_102 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1025-tab-1026" class="nav-link active" data-group="group_1025" data-tab="tab-group-1025-content-1026">Java</div><div id="tab-group-1025-tab-1027" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1027">C++</div><div id="tab-group-1025-tab-1028" class="nav-link" data-group="group_1025" data-tab="tab-group-1025-content-1028">Python</div><div id="tab-group-1025-tab-1029" class="nav-link" data-group="group_102 [...]
 </span></div></div><div id="tab-group-1025-content-1027" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><pre><code class="hljs css language-c++"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomCryptoKeyReader</span> :</span> <span class="hljs-keyword">public</span> CryptoKeyReader {<br />    <span class="hljs-keyword">public</span>:<br />    <span class="hljs-function">Result <span class="hljs-title">getPublicKey</span><s [...]
 <p>Besides, you can use the <strong>default</strong> implementation of <code>CryptoKeyReader</code> by specifying the paths of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div><div id="tab-group-1025-content-1028" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Python. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
-</span></div></div><div id="tab-group-1025-content-1029" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.JS. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
+</span></div></div><div id="tab-group-1025-content-1029" class="tab-pane" data-group="group_1025" tabindex="-1"><div><span><p>Currently, <strong>customized</strong> <code>CryptoKeyReader</code> implementation is not supported in Node.js. However, you can use the <strong>default</strong> implementation by specifying the path of <code>private key</code> and <code>public key</code>.</p>
 </span></div></div></div></div>
 <h2><a class="anchor" aria-hidden="true" id="key-rotation"></a><a href="#key-rotation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>Pulsar generates a new AES data key every 4 hours or after publishing a certain number of messages. A producer fetches the asymmetric public key every 4 hours by calling CryptoKeyReader.getPublicKey() to retrieve the latest version.</p>
@@ -113,23 +122,23 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 <li>You grant access to one of the private keys from the pairs that producer uses.</li>
 </ol>
 <p>When producers want to encrypt the messages with multiple keys, producers add all such keys to the config. Consumer can decrypt the message as long as the consumer has access to at least one of the keys.</p>
-<p>If you need to encrypt the messages using 2 keys (myapp.messagekey1 and myapp.messagekey2), refer to the following example.</p>
+<p>If you need to encrypt the messages using 2 keys (<code>myapp.messagekey1</code> and <code>myapp.messagekey2</code>), refer to the following example.</p>
 <pre><code class="hljs css language-java">PulsarClient.newProducer().addEncryptionKey(<span class="hljs-string">"myapp.messagekey1"</span>).addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="decrypt-encrypted-messages-at-the-consumer-application"></a><a href="#decrypt-encrypted-messages-at-the-consumer-application" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2  [...]
-<p>Consumers require access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
+<p>Consumers require to access one of the private keys to decrypt messages that the producer produces. If you want to receive encrypted messages, create a public or private key and give your public key to the producer application to encrypt messages using your public key.</p>
 <h2><a class="anchor" aria-hidden="true" id="handle-failures"></a><a href="#handle-failures" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <ul>
-<li>Producer/ Consumer loses access to the key
+<li>Producer/Consumer loses access to the key
 <ul>
-<li>Producer action fails indicating the cause of the failure. Application has the option to proceed with sending unencrypted message in such cases. Call PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction) to control the producer behavior. The default behavior is to fail the request.</li>
-<li>If consumption fails due to decryption failure or missing keys in consumer, application has the option to consume the encrypted message or discard it. Call PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction) to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
+<li>Producer action fails to indicate the cause of the failure. Application has the option to proceed with sending unencrypted messages in such cases. Call <code>PulsarClient.newProducer().cryptoFailureAction(ProducerCryptoFailureAction)</code> to control the producer behavior. The default behavior is to fail the request.</li>
+<li>If consumption fails due to decryption failure or missing keys in consumer, the application has the option to consume the encrypted message or discard it. Call <code>PulsarClient.newConsumer().cryptoFailureAction(ConsumerCryptoFailureAction)</code> to control the consumer behavior. The default behavior is to fail the request. Application is never able to decrypt the messages if the private key is permanently lost.</li>
 </ul></li>
 <li>Batch messaging
 <ul>
-<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to ConsumerCryptoFailureAction.CONSUME.</li>
+<li>If decryption fails and the message contains batch messages, client is not able to retrieve individual messages in the batch, hence message consumption fails even if cryptoFailureAction() is set to <code>ConsumerCryptoFailureAction.CONSUME</code>.</li>
 </ul></li>
-<li>If decryption fails, the message consumption stops and application notices backlog growth in addition to decryption failure messages in the client log. If application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
+<li>If decryption fails, the message consumption stops and the application notices backlog growth in addition to decryption failure messages in the client log. If the application does not have access to the private key to decrypt the message, the only option is to skip or discard backlogged messages.</li>
 </ul>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/security-authorization"><span class="arrow-prev">← </span><span>Authorization and ACLs</span></a><a class="docs-next button" href="/docs/en/security-extending"><span>Extend Authentication and Authorization</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#asymmetric-and-symmetric-encryption">Asymmetric and symmetric e [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/swagger/2.11.0-SNAPSHOT/swagger.json b/content/swagger/2.11.0-SNAPSHOT/swagger.json
index b1027546b7c..07492c39981 100644
--- a/content/swagger/2.11.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.11.0-SNAPSHOT/swagger.json
@@ -3990,20 +3990,6 @@
           "type" : "string"
         } ],
         "responses" : {
-          "200" : {
-            "description" : "successful operation",
-            "schema" : {
-              "type" : "object",
-              "additionalProperties" : {
-                "type" : "array",
-                "uniqueItems" : true,
-                "items" : {
-                  "type" : "string",
-                  "enum" : [ "produce", "consume", "functions", "sources", "sinks", "packages" ]
-                }
-              }
-            }
-          },
           "403" : {
             "description" : "Don't have admin permission"
           },
@@ -21575,10 +21561,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -21678,10 +21664,10 @@
     "BookieInfo" : {
       "type" : "object",
       "properties" : {
-        "hostname" : {
+        "rack" : {
           "type" : "string"
         },
-        "rack" : {
+        "hostname" : {
           "type" : "string"
         }
       }
@@ -22241,10 +22227,6 @@
     "DispatchRate" : {
       "type" : "object",
       "properties" : {
-        "ratePeriodInSecond" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "dispatchThrottlingRateInMsg" : {
           "type" : "integer",
           "format" : "int32"
@@ -22255,6 +22237,10 @@
         },
         "relativeToPublishRate" : {
           "type" : "boolean"
+        },
+        "ratePeriodInSecond" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -22313,13 +22299,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "lastInvocation" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "userMetrics" : {
           "type" : "object",
           "additionalProperties" : {
@@ -22327,6 +22306,13 @@
             "format" : "double"
           }
         },
+        "lastInvocation" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -22855,11 +22841,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -23172,10 +23158,6 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "underLoaded" : {
           "type" : "boolean"
         },
@@ -23185,21 +23167,16 @@
         "loadReportType" : {
           "type" : "string"
         },
-        "cpu" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "memory" : {
+        "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
         "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
@@ -23207,6 +23184,15 @@
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
+        },
+        "bandwidthIn" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "bandwidthOut" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         }
       }
     },
@@ -23564,9 +23550,28 @@
     "OffloadPolicies" : {
       "type" : "object",
       "properties" : {
-        "s3ManagedLedgerOffloadRegion" : {
+        "managedLedgerOffloadPrefetchRounds" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "offloadersDirectory" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadMaxThreads" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "managedLedgerOffloadDriver" : {
           "type" : "string"
         },
+        "managedLedgerOffloadThresholdInBytes" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "managedLedgerOffloadDeletionLagInMillis" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "s3ManagedLedgerOffloadBucket" : {
           "type" : "string"
         },
@@ -23603,32 +23608,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "managedLedgerOffloadedReadPriority" : {
-          "type" : "string",
-          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
-        },
-        "managedLedgerOffloadMaxThreads" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "managedLedgerOffloadDriver" : {
-          "type" : "string"
-        },
-        "offloadersDirectory" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadThresholdInBytes" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "managedLedgerOffloadDeletionLagInMillis" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "managedLedgerOffloadPrefetchRounds" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "gcsManagedLedgerOffloadReadBufferSizeInBytes" : {
           "type" : "integer",
           "format" : "int32"
@@ -23658,6 +23637,13 @@
         "managedLedgerOffloadReadBufferSizeInBytes" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "managedLedgerOffloadedReadPriority" : {
+          "type" : "string",
+          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
+        },
+        "s3ManagedLedgerOffloadRegion" : {
+          "type" : "string"
         }
       }
     },
@@ -24843,11 +24829,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
@@ -25307,9 +25293,6 @@
         "initialized" : {
           "type" : "boolean"
         },
-        "functions" : {
-          "$ref" : "#/definitions/FunctionsWorkerService"
-        },
         "workerConfig" : {
           "$ref" : "#/definitions/WorkerConfig"
         },
@@ -25319,6 +25302,9 @@
         "workers" : {
           "$ref" : "#/definitions/WorkersWorkerService"
         },
+        "functions" : {
+          "$ref" : "#/definitions/FunctionsWorkerService"
+        },
         "sinks" : {
           "$ref" : "#/definitions/SinksWorkerService"
         }
diff --git a/content/swagger/2.11.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.11.0-SNAPSHOT/swaggerfunctions.json
index b315c975639..9d6705def06 100644
--- a/content/swagger/2.11.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.11.0-SNAPSHOT/swaggerfunctions.json
@@ -971,10 +971,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1574,13 +1574,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "lastInvocation" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "userMetrics" : {
           "type" : "object",
           "additionalProperties" : {
@@ -1588,6 +1581,13 @@
             "format" : "double"
           }
         },
+        "lastInvocation" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -2216,11 +2216,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2709,15 +2709,15 @@
           "type" : "string",
           "enum" : [ "NONE", "STRING", "JSON", "PROTOBUF", "AVRO", "BOOLEAN", "INT8", "INT16", "INT32", "INT64", "FLOAT", "DOUBLE", "DATE", "TIME", "TIMESTAMP", "KEY_VALUE", "INSTANT", "LOCAL_DATE", "LOCAL_TIME", "LOCAL_DATE_TIME", "PROTOBUF_NATIVE", "BYTES", "AUTO", "AUTO_CONSUME", "AUTO_PUBLISH" ]
         },
-        "schemaDefinition" : {
-          "type" : "string"
-        },
         "schema" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "schemaDefinition" : {
+          "type" : "string"
         }
       }
     },
@@ -2897,11 +2897,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/2.11.0-SNAPSHOT/swaggerpackages.json b/content/swagger/2.11.0-SNAPSHOT/swaggerpackages.json
index 9b2d020b9d5..1924892d9f5 100644
--- a/content/swagger/2.11.0-SNAPSHOT/swaggerpackages.json
+++ b/content/swagger/2.11.0-SNAPSHOT/swaggerpackages.json
@@ -420,10 +420,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1090,11 +1090,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1607,11 +1607,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/2.11.0-SNAPSHOT/swaggersink.json b/content/swagger/2.11.0-SNAPSHOT/swaggersink.json
index 10c214efb12..e624580544d 100644
--- a/content/swagger/2.11.0-SNAPSHOT/swaggersink.json
+++ b/content/swagger/2.11.0-SNAPSHOT/swaggersink.json
@@ -810,10 +810,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1596,11 +1596,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2312,11 +2312,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/2.11.0-SNAPSHOT/swaggersource.json b/content/swagger/2.11.0-SNAPSHOT/swaggersource.json
index 85cacdd4fd9..5c2f10764e5 100644
--- a/content/swagger/2.11.0-SNAPSHOT/swaggersource.json
+++ b/content/swagger/2.11.0-SNAPSHOT/swaggersource.json
@@ -813,10 +813,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1577,11 +1577,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2263,11 +2263,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/2.11.0-SNAPSHOT/v2/swagger.json b/content/swagger/2.11.0-SNAPSHOT/v2/swagger.json
index 23e83a3b60f..47851248e41 100644
--- a/content/swagger/2.11.0-SNAPSHOT/v2/swagger.json
+++ b/content/swagger/2.11.0-SNAPSHOT/v2/swagger.json
@@ -4963,27 +4963,6 @@
                     }
                 ],
                 "responses": {
-                    "200": {
-                        "description": "successful operation",
-                        "schema": {
-                            "type": "object",
-                            "additionalProperties": {
-                                "type": "array",
-                                "uniqueItems": true,
-                                "items": {
-                                    "type": "string",
-                                    "enum": [
-                                        "produce",
-                                        "consume",
-                                        "functions",
-                                        "sources",
-                                        "sinks",
-                                        "packages"
-                                    ]
-                                }
-                            }
-                        }
-                    },
                     "403": {
                         "description": "Don't have admin permission"
                     },
@@ -25938,10 +25917,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -26047,10 +26026,10 @@
         "BookieInfo": {
             "type": "object",
             "properties": {
-                "hostname": {
+                "rack": {
                     "type": "string"
                 },
-                "rack": {
+                "hostname": {
                     "type": "string"
                 }
             }
@@ -26612,10 +26591,6 @@
         "DispatchRate": {
             "type": "object",
             "properties": {
-                "ratePeriodInSecond": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "dispatchThrottlingRateInMsg": {
                     "type": "integer",
                     "format": "int32"
@@ -26626,6 +26601,10 @@
                 },
                 "relativeToPublishRate": {
                     "type": "boolean"
+                },
+                "ratePeriodInSecond": {
+                    "type": "integer",
+                    "format": "int32"
                 }
             }
         },
@@ -26684,13 +26663,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "lastInvocation": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
                 "userMetrics": {
                     "type": "object",
                     "additionalProperties": {
@@ -26698,6 +26670,13 @@
                         "format": "double"
                     }
                 },
+                "lastInvocation": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -27290,11 +27269,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -27607,10 +27586,6 @@
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "underLoaded": {
                     "type": "boolean"
                 },
@@ -27620,21 +27595,16 @@
                 "loadReportType": {
                     "type": "string"
                 },
-                "cpu": {
-                    "$ref": "#/definitions/ResourceUsage"
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "memory": {
+                "cpu": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
                 "directMemory": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "bandwidthIn": {
-                    "$ref": "#/definitions/ResourceUsage"
-                },
-                "bandwidthOut": {
-                    "$ref": "#/definitions/ResourceUsage"
-                },
                 "lastUpdate": {
                     "type": "integer",
                     "format": "int64"
@@ -27642,6 +27612,15 @@
                 "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
+                },
+                "bandwidthIn": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "bandwidthOut": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "memory": {
+                    "$ref": "#/definitions/ResourceUsage"
                 }
             }
         },
@@ -28017,9 +27996,28 @@
         "OffloadPolicies": {
             "type": "object",
             "properties": {
-                "s3ManagedLedgerOffloadRegion": {
+                "managedLedgerOffloadPrefetchRounds": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "offloadersDirectory": {
+                    "type": "string"
+                },
+                "managedLedgerOffloadMaxThreads": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "managedLedgerOffloadDriver": {
                     "type": "string"
                 },
+                "managedLedgerOffloadThresholdInBytes": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "managedLedgerOffloadDeletionLagInMillis": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "s3ManagedLedgerOffloadBucket": {
                     "type": "string"
                 },
@@ -28056,35 +28054,6 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "managedLedgerOffloadedReadPriority": {
-                    "type": "string",
-                    "enum": [
-                        "BOOKKEEPER_FIRST",
-                        "TIERED_STORAGE_FIRST"
-                    ]
-                },
-                "managedLedgerOffloadMaxThreads": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "managedLedgerOffloadDriver": {
-                    "type": "string"
-                },
-                "offloadersDirectory": {
-                    "type": "string"
-                },
-                "managedLedgerOffloadThresholdInBytes": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "managedLedgerOffloadDeletionLagInMillis": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "managedLedgerOffloadPrefetchRounds": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "gcsManagedLedgerOffloadReadBufferSizeInBytes": {
                     "type": "integer",
                     "format": "int32"
@@ -28114,6 +28083,16 @@
                 "managedLedgerOffloadReadBufferSizeInBytes": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "managedLedgerOffloadedReadPriority": {
+                    "type": "string",
+                    "enum": [
+                        "BOOKKEEPER_FIRST",
+                        "TIERED_STORAGE_FIRST"
+                    ]
+                },
+                "s3ManagedLedgerOffloadRegion": {
+                    "type": "string"
                 }
             }
         },
@@ -29331,7 +29310,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -29342,7 +29321,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -29809,9 +29788,6 @@
                 "initialized": {
                     "type": "boolean"
                 },
-                "functions": {
-                    "$ref": "#/definitions/FunctionsWorkerService"
-                },
                 "workerConfig": {
                     "$ref": "#/definitions/WorkerConfig"
                 },
@@ -29821,6 +29797,9 @@
                 "workers": {
                     "$ref": "#/definitions/WorkersWorkerService"
                 },
+                "functions": {
+                    "$ref": "#/definitions/FunctionsWorkerService"
+                },
                 "sinks": {
                     "$ref": "#/definitions/SinksWorkerService"
                 }
diff --git a/content/swagger/2.11.0-SNAPSHOT/v3/swaggerfunctions.json b/content/swagger/2.11.0-SNAPSHOT/v3/swaggerfunctions.json
index 40bf77f1d83..18d15b6f859 100644
--- a/content/swagger/2.11.0-SNAPSHOT/v3/swaggerfunctions.json
+++ b/content/swagger/2.11.0-SNAPSHOT/v3/swaggerfunctions.json
@@ -1174,10 +1174,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1801,13 +1801,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "lastInvocation": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
                 "userMetrics": {
                     "type": "object",
                     "additionalProperties": {
@@ -1815,6 +1808,13 @@
                         "format": "double"
                     }
                 },
+                "lastInvocation": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -2478,11 +2478,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -3006,15 +3006,15 @@
                         "AUTO_PUBLISH"
                     ]
                 },
-                "schemaDefinition": {
-                    "type": "string"
-                },
                 "schema": {
                     "type": "array",
                     "items": {
                         "type": "string",
                         "format": "byte"
                     }
+                },
+                "schemaDefinition": {
+                    "type": "string"
                 }
             }
         },
@@ -3201,7 +3201,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -3212,7 +3212,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/2.11.0-SNAPSHOT/v3/swaggerpackages.json b/content/swagger/2.11.0-SNAPSHOT/v3/swaggerpackages.json
index 9cf00408203..7c19a864eba 100644
--- a/content/swagger/2.11.0-SNAPSHOT/v3/swaggerpackages.json
+++ b/content/swagger/2.11.0-SNAPSHOT/v3/swaggerpackages.json
@@ -506,10 +506,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1211,11 +1211,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -1744,7 +1744,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -1755,7 +1755,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/2.11.0-SNAPSHOT/v3/swaggersink.json b/content/swagger/2.11.0-SNAPSHOT/v3/swaggersink.json
index 5e3ae73212d..62275048869 100644
--- a/content/swagger/2.11.0-SNAPSHOT/v3/swaggersink.json
+++ b/content/swagger/2.11.0-SNAPSHOT/v3/swaggersink.json
@@ -971,10 +971,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1799,11 +1799,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -2538,7 +2538,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -2549,7 +2549,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/2.11.0-SNAPSHOT/v3/swaggersource.json b/content/swagger/2.11.0-SNAPSHOT/v3/swaggersource.json
index d51ce010e21..5f3d5a0068b 100644
--- a/content/swagger/2.11.0-SNAPSHOT/v3/swaggersource.json
+++ b/content/swagger/2.11.0-SNAPSHOT/v3/swaggersource.json
@@ -974,10 +974,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1780,11 +1780,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -2486,7 +2486,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -2497,7 +2497,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/master/swagger.json b/content/swagger/master/swagger.json
index b1027546b7c..07492c39981 100644
--- a/content/swagger/master/swagger.json
+++ b/content/swagger/master/swagger.json
@@ -3990,20 +3990,6 @@
           "type" : "string"
         } ],
         "responses" : {
-          "200" : {
-            "description" : "successful operation",
-            "schema" : {
-              "type" : "object",
-              "additionalProperties" : {
-                "type" : "array",
-                "uniqueItems" : true,
-                "items" : {
-                  "type" : "string",
-                  "enum" : [ "produce", "consume", "functions", "sources", "sinks", "packages" ]
-                }
-              }
-            }
-          },
           "403" : {
             "description" : "Don't have admin permission"
           },
@@ -21575,10 +21561,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -21678,10 +21664,10 @@
     "BookieInfo" : {
       "type" : "object",
       "properties" : {
-        "hostname" : {
+        "rack" : {
           "type" : "string"
         },
-        "rack" : {
+        "hostname" : {
           "type" : "string"
         }
       }
@@ -22241,10 +22227,6 @@
     "DispatchRate" : {
       "type" : "object",
       "properties" : {
-        "ratePeriodInSecond" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "dispatchThrottlingRateInMsg" : {
           "type" : "integer",
           "format" : "int32"
@@ -22255,6 +22237,10 @@
         },
         "relativeToPublishRate" : {
           "type" : "boolean"
+        },
+        "ratePeriodInSecond" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -22313,13 +22299,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "lastInvocation" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "userMetrics" : {
           "type" : "object",
           "additionalProperties" : {
@@ -22327,6 +22306,13 @@
             "format" : "double"
           }
         },
+        "lastInvocation" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -22855,11 +22841,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -23172,10 +23158,6 @@
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "underLoaded" : {
           "type" : "boolean"
         },
@@ -23185,21 +23167,16 @@
         "loadReportType" : {
           "type" : "string"
         },
-        "cpu" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "msgThroughputOut" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "memory" : {
+        "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
         "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
@@ -23207,6 +23184,15 @@
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
+        },
+        "bandwidthIn" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "bandwidthOut" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         }
       }
     },
@@ -23564,9 +23550,28 @@
     "OffloadPolicies" : {
       "type" : "object",
       "properties" : {
-        "s3ManagedLedgerOffloadRegion" : {
+        "managedLedgerOffloadPrefetchRounds" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "offloadersDirectory" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadMaxThreads" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "managedLedgerOffloadDriver" : {
           "type" : "string"
         },
+        "managedLedgerOffloadThresholdInBytes" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "managedLedgerOffloadDeletionLagInMillis" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "s3ManagedLedgerOffloadBucket" : {
           "type" : "string"
         },
@@ -23603,32 +23608,6 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "managedLedgerOffloadedReadPriority" : {
-          "type" : "string",
-          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
-        },
-        "managedLedgerOffloadMaxThreads" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "managedLedgerOffloadDriver" : {
-          "type" : "string"
-        },
-        "offloadersDirectory" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadThresholdInBytes" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "managedLedgerOffloadDeletionLagInMillis" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "managedLedgerOffloadPrefetchRounds" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "gcsManagedLedgerOffloadReadBufferSizeInBytes" : {
           "type" : "integer",
           "format" : "int32"
@@ -23658,6 +23637,13 @@
         "managedLedgerOffloadReadBufferSizeInBytes" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "managedLedgerOffloadedReadPriority" : {
+          "type" : "string",
+          "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
+        },
+        "s3ManagedLedgerOffloadRegion" : {
+          "type" : "string"
         }
       }
     },
@@ -24843,11 +24829,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
@@ -25307,9 +25293,6 @@
         "initialized" : {
           "type" : "boolean"
         },
-        "functions" : {
-          "$ref" : "#/definitions/FunctionsWorkerService"
-        },
         "workerConfig" : {
           "$ref" : "#/definitions/WorkerConfig"
         },
@@ -25319,6 +25302,9 @@
         "workers" : {
           "$ref" : "#/definitions/WorkersWorkerService"
         },
+        "functions" : {
+          "$ref" : "#/definitions/FunctionsWorkerService"
+        },
         "sinks" : {
           "$ref" : "#/definitions/SinksWorkerService"
         }
diff --git a/content/swagger/master/swaggerfunctions.json b/content/swagger/master/swaggerfunctions.json
index b315c975639..9d6705def06 100644
--- a/content/swagger/master/swaggerfunctions.json
+++ b/content/swagger/master/swaggerfunctions.json
@@ -971,10 +971,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1574,13 +1574,6 @@
     "FunctionInstanceStatsData" : {
       "type" : "object",
       "properties" : {
-        "lastInvocation" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "oneMin" : {
-          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
-        },
         "userMetrics" : {
           "type" : "object",
           "additionalProperties" : {
@@ -1588,6 +1581,13 @@
             "format" : "double"
           }
         },
+        "lastInvocation" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "oneMin" : {
+          "$ref" : "#/definitions/FunctionInstanceStatsDataBase"
+        },
         "receivedTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -2216,11 +2216,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2709,15 +2709,15 @@
           "type" : "string",
           "enum" : [ "NONE", "STRING", "JSON", "PROTOBUF", "AVRO", "BOOLEAN", "INT8", "INT16", "INT32", "INT64", "FLOAT", "DOUBLE", "DATE", "TIME", "TIMESTAMP", "KEY_VALUE", "INSTANT", "LOCAL_DATE", "LOCAL_TIME", "LOCAL_DATE_TIME", "PROTOBUF_NATIVE", "BYTES", "AUTO", "AUTO_CONSUME", "AUTO_PUBLISH" ]
         },
-        "schemaDefinition" : {
-          "type" : "string"
-        },
         "schema" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
+        },
+        "schemaDefinition" : {
+          "type" : "string"
         }
       }
     },
@@ -2897,11 +2897,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/master/swaggerpackages.json b/content/swagger/master/swaggerpackages.json
index 9b2d020b9d5..1924892d9f5 100644
--- a/content/swagger/master/swaggerpackages.json
+++ b/content/swagger/master/swaggerpackages.json
@@ -420,10 +420,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1090,11 +1090,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1607,11 +1607,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/master/swaggersink.json b/content/swagger/master/swaggersink.json
index 10c214efb12..e624580544d 100644
--- a/content/swagger/master/swaggersink.json
+++ b/content/swagger/master/swaggersink.json
@@ -810,10 +810,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1596,11 +1596,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2312,11 +2312,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/master/swaggersource.json b/content/swagger/master/swaggersource.json
index 85cacdd4fd9..5c2f10764e5 100644
--- a/content/swagger/master/swaggersource.json
+++ b/content/swagger/master/swaggersource.json
@@ -813,10 +813,10 @@
             "$ref" : "#/definitions/Certificate"
           }
         },
-        "httpAuthType" : {
+        "commandData" : {
           "type" : "string"
         },
-        "commandData" : {
+        "httpAuthType" : {
           "type" : "string"
         },
         "subscription" : {
@@ -1577,11 +1577,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2263,11 +2263,11 @@
     "Value" : {
       "type" : "object",
       "properties" : {
-        "contentInclusion" : {
+        "valueInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         },
-        "valueInclusion" : {
+        "contentInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
         }
diff --git a/content/swagger/master/v2/swagger.json b/content/swagger/master/v2/swagger.json
index 23e83a3b60f..47851248e41 100644
--- a/content/swagger/master/v2/swagger.json
+++ b/content/swagger/master/v2/swagger.json
@@ -4963,27 +4963,6 @@
                     }
                 ],
                 "responses": {
-                    "200": {
-                        "description": "successful operation",
-                        "schema": {
-                            "type": "object",
-                            "additionalProperties": {
-                                "type": "array",
-                                "uniqueItems": true,
-                                "items": {
-                                    "type": "string",
-                                    "enum": [
-                                        "produce",
-                                        "consume",
-                                        "functions",
-                                        "sources",
-                                        "sinks",
-                                        "packages"
-                                    ]
-                                }
-                            }
-                        }
-                    },
                     "403": {
                         "description": "Don't have admin permission"
                     },
@@ -25938,10 +25917,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -26047,10 +26026,10 @@
         "BookieInfo": {
             "type": "object",
             "properties": {
-                "hostname": {
+                "rack": {
                     "type": "string"
                 },
-                "rack": {
+                "hostname": {
                     "type": "string"
                 }
             }
@@ -26612,10 +26591,6 @@
         "DispatchRate": {
             "type": "object",
             "properties": {
-                "ratePeriodInSecond": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "dispatchThrottlingRateInMsg": {
                     "type": "integer",
                     "format": "int32"
@@ -26626,6 +26601,10 @@
                 },
                 "relativeToPublishRate": {
                     "type": "boolean"
+                },
+                "ratePeriodInSecond": {
+                    "type": "integer",
+                    "format": "int32"
                 }
             }
         },
@@ -26684,13 +26663,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "lastInvocation": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
                 "userMetrics": {
                     "type": "object",
                     "additionalProperties": {
@@ -26698,6 +26670,13 @@
                         "format": "double"
                     }
                 },
+                "lastInvocation": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -27290,11 +27269,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -27607,10 +27586,6 @@
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "underLoaded": {
                     "type": "boolean"
                 },
@@ -27620,21 +27595,16 @@
                 "loadReportType": {
                     "type": "string"
                 },
-                "cpu": {
-                    "$ref": "#/definitions/ResourceUsage"
+                "msgThroughputOut": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "memory": {
+                "cpu": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
                 "directMemory": {
                     "$ref": "#/definitions/ResourceUsage"
                 },
-                "bandwidthIn": {
-                    "$ref": "#/definitions/ResourceUsage"
-                },
-                "bandwidthOut": {
-                    "$ref": "#/definitions/ResourceUsage"
-                },
                 "lastUpdate": {
                     "type": "integer",
                     "format": "int64"
@@ -27642,6 +27612,15 @@
                 "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
+                },
+                "bandwidthIn": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "bandwidthOut": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "memory": {
+                    "$ref": "#/definitions/ResourceUsage"
                 }
             }
         },
@@ -28017,9 +27996,28 @@
         "OffloadPolicies": {
             "type": "object",
             "properties": {
-                "s3ManagedLedgerOffloadRegion": {
+                "managedLedgerOffloadPrefetchRounds": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "offloadersDirectory": {
+                    "type": "string"
+                },
+                "managedLedgerOffloadMaxThreads": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "managedLedgerOffloadDriver": {
                     "type": "string"
                 },
+                "managedLedgerOffloadThresholdInBytes": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "managedLedgerOffloadDeletionLagInMillis": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "s3ManagedLedgerOffloadBucket": {
                     "type": "string"
                 },
@@ -28056,35 +28054,6 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "managedLedgerOffloadedReadPriority": {
-                    "type": "string",
-                    "enum": [
-                        "BOOKKEEPER_FIRST",
-                        "TIERED_STORAGE_FIRST"
-                    ]
-                },
-                "managedLedgerOffloadMaxThreads": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "managedLedgerOffloadDriver": {
-                    "type": "string"
-                },
-                "offloadersDirectory": {
-                    "type": "string"
-                },
-                "managedLedgerOffloadThresholdInBytes": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "managedLedgerOffloadDeletionLagInMillis": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "managedLedgerOffloadPrefetchRounds": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "gcsManagedLedgerOffloadReadBufferSizeInBytes": {
                     "type": "integer",
                     "format": "int32"
@@ -28114,6 +28083,16 @@
                 "managedLedgerOffloadReadBufferSizeInBytes": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "managedLedgerOffloadedReadPriority": {
+                    "type": "string",
+                    "enum": [
+                        "BOOKKEEPER_FIRST",
+                        "TIERED_STORAGE_FIRST"
+                    ]
+                },
+                "s3ManagedLedgerOffloadRegion": {
+                    "type": "string"
                 }
             }
         },
@@ -29331,7 +29310,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -29342,7 +29321,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -29809,9 +29788,6 @@
                 "initialized": {
                     "type": "boolean"
                 },
-                "functions": {
-                    "$ref": "#/definitions/FunctionsWorkerService"
-                },
                 "workerConfig": {
                     "$ref": "#/definitions/WorkerConfig"
                 },
@@ -29821,6 +29797,9 @@
                 "workers": {
                     "$ref": "#/definitions/WorkersWorkerService"
                 },
+                "functions": {
+                    "$ref": "#/definitions/FunctionsWorkerService"
+                },
                 "sinks": {
                     "$ref": "#/definitions/SinksWorkerService"
                 }
diff --git a/content/swagger/master/v3/swaggerfunctions.json b/content/swagger/master/v3/swaggerfunctions.json
index 40bf77f1d83..18d15b6f859 100644
--- a/content/swagger/master/v3/swaggerfunctions.json
+++ b/content/swagger/master/v3/swaggerfunctions.json
@@ -1174,10 +1174,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1801,13 +1801,6 @@
         "FunctionInstanceStatsData": {
             "type": "object",
             "properties": {
-                "lastInvocation": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "oneMin": {
-                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
-                },
                 "userMetrics": {
                     "type": "object",
                     "additionalProperties": {
@@ -1815,6 +1808,13 @@
                         "format": "double"
                     }
                 },
+                "lastInvocation": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "oneMin": {
+                    "$ref": "#/definitions/FunctionInstanceStatsDataBase"
+                },
                 "receivedTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -2478,11 +2478,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -3006,15 +3006,15 @@
                         "AUTO_PUBLISH"
                     ]
                 },
-                "schemaDefinition": {
-                    "type": "string"
-                },
                 "schema": {
                     "type": "array",
                     "items": {
                         "type": "string",
                         "format": "byte"
                     }
+                },
+                "schemaDefinition": {
+                    "type": "string"
                 }
             }
         },
@@ -3201,7 +3201,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -3212,7 +3212,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/master/v3/swaggerpackages.json b/content/swagger/master/v3/swaggerpackages.json
index 9cf00408203..7c19a864eba 100644
--- a/content/swagger/master/v3/swaggerpackages.json
+++ b/content/swagger/master/v3/swaggerpackages.json
@@ -506,10 +506,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1211,11 +1211,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -1744,7 +1744,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -1755,7 +1755,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/master/v3/swaggersink.json b/content/swagger/master/v3/swaggersink.json
index 5e3ae73212d..62275048869 100644
--- a/content/swagger/master/v3/swaggersink.json
+++ b/content/swagger/master/v3/swaggersink.json
@@ -971,10 +971,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1799,11 +1799,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -2538,7 +2538,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -2549,7 +2549,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
diff --git a/content/swagger/master/v3/swaggersource.json b/content/swagger/master/v3/swaggersource.json
index d51ce010e21..5f3d5a0068b 100644
--- a/content/swagger/master/v3/swaggersource.json
+++ b/content/swagger/master/v3/swaggersource.json
@@ -974,10 +974,10 @@
                         "$ref": "#/definitions/Certificate"
                     }
                 },
-                "httpAuthType": {
+                "commandData": {
                     "type": "string"
                 },
-                "commandData": {
+                "httpAuthType": {
                     "type": "string"
                 },
                 "subscription": {
@@ -1780,11 +1780,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -2486,7 +2486,7 @@
         "Value": {
             "type": "object",
             "properties": {
-                "contentInclusion": {
+                "valueInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",
@@ -2497,7 +2497,7 @@
                         "USE_DEFAULTS"
                     ]
                 },
-                "valueInclusion": {
+                "contentInclusion": {
                     "type": "string",
                     "enum": [
                         "ALWAYS",