You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/12/21 07:34:06 UTC

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

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

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


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

commit 9d7ba43a415c679b549275a8e946b0a5e5f0b848
Author: Pulsar Site Updater <de...@pulsar.incubator.apache.org>
AuthorDate: Tue Dec 21 07:30:28 2021 +0000

    Updated site at revision cfa26b5
---
 content/api/python/2.10.0-SNAPSHOT/index.html      |   6 +-
 content/api/python/index.html                      |   6 +-
 content/docs/fr/next/admin-api-packages.html       | 175 +++---
 content/docs/fr/next/admin-api-packages/index.html | 175 +++---
 content/docs/fr/next/develop-binary-protocol.html  |   6 +
 .../fr/next/develop-binary-protocol/index.html     |   6 +
 content/docs/fr/next/reference-configuration.html  | 297 ++++-----
 .../fr/next/reference-configuration/index.html     | 297 ++++-----
 content/docs/ja/next/admin-api-packages.html       | 175 +++---
 content/docs/ja/next/admin-api-packages/index.html | 175 +++---
 content/docs/ja/next/develop-binary-protocol.html  |   6 +
 .../ja/next/develop-binary-protocol/index.html     |   6 +
 content/docs/ja/next/reference-configuration.html  | 297 ++++-----
 .../ja/next/reference-configuration/index.html     | 297 ++++-----
 content/docs/ko/next/admin-api-packages.html       | 175 +++---
 content/docs/ko/next/admin-api-packages/index.html | 175 +++---
 content/docs/ko/next/develop-binary-protocol.html  |   6 +
 .../ko/next/develop-binary-protocol/index.html     |   6 +
 content/docs/ko/next/reference-configuration.html  | 297 ++++-----
 .../ko/next/reference-configuration/index.html     | 297 ++++-----
 content/docs/zh-CN/next/admin-api-packages.html    | 175 +++---
 .../docs/zh-CN/next/admin-api-packages/index.html  | 175 +++---
 content/docs/zh-CN/next/admin-api-topics.html      |  38 +-
 .../docs/zh-CN/next/admin-api-topics/index.html    |  38 +-
 .../docs/zh-CN/next/develop-binary-protocol.html   |   6 +
 .../zh-CN/next/develop-binary-protocol/index.html  |   6 +
 .../docs/zh-CN/next/reference-configuration.html   | 297 ++++-----
 .../zh-CN/next/reference-configuration/index.html  | 297 ++++-----
 content/docs/zh-TW/next/admin-api-packages.html    | 175 +++---
 .../docs/zh-TW/next/admin-api-packages/index.html  | 175 +++---
 .../docs/zh-TW/next/develop-binary-protocol.html   |   6 +
 .../zh-TW/next/develop-binary-protocol/index.html  |   6 +
 .../docs/zh-TW/next/reference-configuration.html   | 297 ++++-----
 .../zh-TW/next/reference-configuration/index.html  | 297 ++++-----
 content/swagger/2.10.0-SNAPSHOT/swagger.json       | 698 ++++++++++-----------
 .../swagger/2.10.0-SNAPSHOT/swaggerfunctions.json  | 154 ++---
 .../swagger/2.10.0-SNAPSHOT/swaggerpackages.json   | 132 ++--
 content/swagger/2.10.0-SNAPSHOT/swaggersink.json   | 132 ++--
 content/swagger/2.10.0-SNAPSHOT/swaggersource.json | 132 ++--
 content/swagger/2.10.0-SNAPSHOT/v2/swagger.json    | 698 ++++++++++-----------
 .../2.10.0-SNAPSHOT/v3/swaggerfunctions.json       | 154 ++---
 .../2.10.0-SNAPSHOT/v3/swaggerpackages.json        | 132 ++--
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersink.json    | 132 ++--
 .../swagger/2.10.0-SNAPSHOT/v3/swaggersource.json  | 132 ++--
 content/swagger/master/swagger.json                | 698 ++++++++++-----------
 content/swagger/master/swaggerfunctions.json       | 154 ++---
 content/swagger/master/swaggerpackages.json        | 132 ++--
 content/swagger/master/swaggersink.json            | 132 ++--
 content/swagger/master/swaggersource.json          | 132 ++--
 content/swagger/master/v2/swagger.json             | 698 ++++++++++-----------
 content/swagger/master/v3/swaggerfunctions.json    | 154 ++---
 content/swagger/master/v3/swaggerpackages.json     | 132 ++--
 content/swagger/master/v3/swaggersink.json         | 132 ++--
 content/swagger/master/v3/swaggersource.json       | 132 ++--
 54 files changed, 4920 insertions(+), 4940 deletions(-)

diff --git a/content/api/python/2.10.0-SNAPSHOT/index.html b/content/api/python/2.10.0-SNAPSHOT/index.html
index 14fa89c..5006319 100644
--- a/content/api/python/2.10.0-SNAPSHOT/index.html
+++ b/content/api/python/2.10.0-SNAPSHOT/index.html
@@ -3764,7 +3764,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f0ac59c8cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fbe2c4fecd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4018,7 +4018,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f0abdf481d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fbe2b5f41d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4235,7 +4235,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f0abdf48110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fbe2b5f4110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/api/python/index.html b/content/api/python/index.html
index 14fa89c..5006319 100644
--- a/content/api/python/index.html
+++ b/content/api/python/index.html
@@ -3764,7 +3764,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f0ac59c8cd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fbe2c4fecd0&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -4018,7 +4018,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f0abdf481d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fbe2b5f41d0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False, crypto_key_reader=None)</p>
     </div>
     
 
@@ -4235,7 +4235,7 @@ for ongoing operations to complete.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7f0abdf48110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fbe2b5f4110&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/docs/fr/next/admin-api-packages.html b/content/docs/fr/next/admin-api-packages.html
index f91278a2..5ceb362 100644
--- a/content/docs/fr/next/admin-api-packages.html
+++ b/content/docs/fr/next/admin-api-packages.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" 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>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1206-tab-1207" class="nav-link active" data-group="group_1206" data-tab="tab-group-1206-content-1207">pulsar-admin</div><div id="tab-group-1206-tab-1208" class="nav-link" data-group="group_1206" data-tab="tab-group-1206-content-1208">REST API</div><div id="tab-group-1206-tab-1209" class="nav-link" data-group="group_1206" data-tab="tab-group-1206-content-1209">JAVA</div></div><div class="tab-content"><div id="tab-group-1206-conten [...]
-</span></div></div><div id="tab-group-1206-content-1208" class="tab-pane" data-group="group_1206" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1206-content-1208" class="tab-pane" data-group="group_1206" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1206-content-1209" class="tab-pane" data-group="group_1206" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1210-tab-1211" class="nav-link active" data-group="group_1210" data-tab="tab-group-1210-content-1211">pulsar-admin</div><div id="tab-group-1210-tab-1212" class="nav-link" data-group="group_1210" data-tab="tab-group-1210-content-1212">REST API</div><div id="tab-group-1210-tab-1213" class="nav-link" data-group="group_1210" data-tab="tab-group-1210-content-1213">JAVA</div></div><div class="tab-content"><div id="tab-group-1210-conten [...]
-</span></div></div><div id="tab-group-1210-content-1212" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1210-content-1212" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1210-content-1213" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1210-content-1213" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1214-tab-1215" class="nav-link active" data-group="group_1214" data-tab="tab-group-1214-content-1215">pulsar-admin</div><div id="tab-group-1214-tab-1216" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1216">REST API</div><div id="tab-group-1214-tab-1217" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1217">JAVA</div></div><div class="tab-content"><div id="tab-group-1214-conten [...]
-</span></div></div><div id="tab-group-1214-content-1216" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1214-tab-1215" class="nav-link active" data-group="group_1214" data-tab="tab-group-1214-content-1215">pulsar-admin</div><div id="tab-group-1214-tab-1216" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1216">REST API</div><div id="tab-group-1214-tab-1217" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1217">JAVA</div></div><div class="tab-content"><div id="tab-group-1214-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1214-content-1216" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1214-content-1217" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1218-tab-1219" class="nav-link active" data-group="group_1218" data-tab="tab-group-1218-content-1219">pulsar-admin</div><div id="tab-group-1218-tab-1220" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1220">REST API</div><div id="tab-group-1218-tab-1221" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1221">JAVA</div></div><div class="tab-content"><div id="tab-group-1218-conten [...]
-</span></div></div><div id="tab-group-1218-content-1220" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1218-content-1221" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1214-content-1217" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1222-tab-1223" class="nav-link active" data-group="group_1222" data-tab="tab-group-1222-content-1223">pulsar-admin</div><div id="tab-group-1222-tab-1224" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1224">REST API</div><div id="tab-group-1222-tab-1225" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1225">JAVA</div></div><div class="tab-content"><div id="tab-group-1222-conten [...]
-</span></div></div><div id="tab-group-1222-content-1224" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1218-tab-1219" class="nav-link active" data-group="group_1218" data-tab="tab-group-1218-content-1219">pulsar-admin</div><div id="tab-group-1218-tab-1220" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1220">REST API</div><div id="tab-group-1218-tab-1221" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1221">JAVA</div></div><div class="tab-content"><div id="tab-group-1218-conten [...]
+</span></div></div><div id="tab-group-1218-content-1220" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1222-content-1225" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1218-content-1221" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1226-tab-1227" class="nav-link active" data-group="group_1226" data-tab="tab-group-1226-content-1227">pulsar-admin</div><div id="tab-group-1226-tab-1228" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1228">REST API</div><div id="tab-group-1226-tab-1229" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1229">JAVA</div></div><div class="tab-content"><div id="tab-group-1226-conten [...]
-</span></div></div><div id="tab-group-1226-content-1228" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1222-tab-1223" class="nav-link active" data-group="group_1222" data-tab="tab-group-1222-content-1223">pulsar-admin</div><div id="tab-group-1222-tab-1224" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1224">REST API</div><div id="tab-group-1222-tab-1225" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1225">JAVA</div></div><div class="tab-content"><div id="tab-group-1222-conten [...]
+</span></div></div><div id="tab-group-1222-content-1224" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1226-content-1229" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1222-content-1225" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1230-tab-1231" class="nav-link active" data-group="group_1230" data-tab="tab-group-1230-content-1231">pulsar-admin</div><div id="tab-group-1230-tab-1232" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1232">REST API</div><div id="tab-group-1230-tab-1233" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1233">JAVA</div></div><div class="tab-content"><div id="tab-group-1230-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1230-content-1232" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1226-tab-1227" class="nav-link active" data-group="group_1226" data-tab="tab-group-1226-content-1227">pulsar-admin</div><div id="tab-group-1226-tab-1228" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1228">REST API</div><div id="tab-group-1226-tab-1229" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1229">JAVA</div></div><div class="tab-content"><div id="tab-group-1226-conten [...]
+</span></div></div><div id="tab-group-1226-content-1228" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1230-content-1233" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1226-content-1229" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1230-tab-1231" class="nav-link active" data-group="group_1230" data-tab="tab-group-1230-content-1231">pulsar-admin</div><div id="tab-group-1230-tab-1232" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1232">REST API</div><div id="tab-group-1230-tab-1233" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1233">JAVA</div></div><div class="tab-content"><div id="tab-group-1230-conten [...]
+</span></div></div><div id="tab-group-1230-content-1232" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1230-content-1233" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/fr/next/adaptors-kafka"><span>Wrapper de client Kafka</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li><a  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/fr/next/adaptors-kafka"><span>Wrapper de client Kafka</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/admin-api-packages/index.html b/content/docs/fr/next/admin-api-packages/index.html
index f91278a2..5ceb362 100644
--- a/content/docs/fr/next/admin-api-packages/index.html
+++ b/content/docs/fr/next/admin-api-packages/index.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" 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>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1206-tab-1207" class="nav-link active" data-group="group_1206" data-tab="tab-group-1206-content-1207">pulsar-admin</div><div id="tab-group-1206-tab-1208" class="nav-link" data-group="group_1206" data-tab="tab-group-1206-content-1208">REST API</div><div id="tab-group-1206-tab-1209" class="nav-link" data-group="group_1206" data-tab="tab-group-1206-content-1209">JAVA</div></div><div class="tab-content"><div id="tab-group-1206-conten [...]
-</span></div></div><div id="tab-group-1206-content-1208" class="tab-pane" data-group="group_1206" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1206-content-1208" class="tab-pane" data-group="group_1206" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1206-content-1209" class="tab-pane" data-group="group_1206" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1210-tab-1211" class="nav-link active" data-group="group_1210" data-tab="tab-group-1210-content-1211">pulsar-admin</div><div id="tab-group-1210-tab-1212" class="nav-link" data-group="group_1210" data-tab="tab-group-1210-content-1212">REST API</div><div id="tab-group-1210-tab-1213" class="nav-link" data-group="group_1210" data-tab="tab-group-1210-content-1213">JAVA</div></div><div class="tab-content"><div id="tab-group-1210-conten [...]
-</span></div></div><div id="tab-group-1210-content-1212" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1210-content-1212" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1210-content-1213" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1210-content-1213" class="tab-pane" data-group="group_1210" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1214-tab-1215" class="nav-link active" data-group="group_1214" data-tab="tab-group-1214-content-1215">pulsar-admin</div><div id="tab-group-1214-tab-1216" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1216">REST API</div><div id="tab-group-1214-tab-1217" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1217">JAVA</div></div><div class="tab-content"><div id="tab-group-1214-conten [...]
-</span></div></div><div id="tab-group-1214-content-1216" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1214-tab-1215" class="nav-link active" data-group="group_1214" data-tab="tab-group-1214-content-1215">pulsar-admin</div><div id="tab-group-1214-tab-1216" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1216">REST API</div><div id="tab-group-1214-tab-1217" class="nav-link" data-group="group_1214" data-tab="tab-group-1214-content-1217">JAVA</div></div><div class="tab-content"><div id="tab-group-1214-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1214-content-1216" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1214-content-1217" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1218-tab-1219" class="nav-link active" data-group="group_1218" data-tab="tab-group-1218-content-1219">pulsar-admin</div><div id="tab-group-1218-tab-1220" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1220">REST API</div><div id="tab-group-1218-tab-1221" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1221">JAVA</div></div><div class="tab-content"><div id="tab-group-1218-conten [...]
-</span></div></div><div id="tab-group-1218-content-1220" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1218-content-1221" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1214-content-1217" class="tab-pane" data-group="group_1214" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1222-tab-1223" class="nav-link active" data-group="group_1222" data-tab="tab-group-1222-content-1223">pulsar-admin</div><div id="tab-group-1222-tab-1224" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1224">REST API</div><div id="tab-group-1222-tab-1225" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1225">JAVA</div></div><div class="tab-content"><div id="tab-group-1222-conten [...]
-</span></div></div><div id="tab-group-1222-content-1224" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1218-tab-1219" class="nav-link active" data-group="group_1218" data-tab="tab-group-1218-content-1219">pulsar-admin</div><div id="tab-group-1218-tab-1220" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1220">REST API</div><div id="tab-group-1218-tab-1221" class="nav-link" data-group="group_1218" data-tab="tab-group-1218-content-1221">JAVA</div></div><div class="tab-content"><div id="tab-group-1218-conten [...]
+</span></div></div><div id="tab-group-1218-content-1220" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1222-content-1225" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1218-content-1221" class="tab-pane" data-group="group_1218" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1226-tab-1227" class="nav-link active" data-group="group_1226" data-tab="tab-group-1226-content-1227">pulsar-admin</div><div id="tab-group-1226-tab-1228" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1228">REST API</div><div id="tab-group-1226-tab-1229" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1229">JAVA</div></div><div class="tab-content"><div id="tab-group-1226-conten [...]
-</span></div></div><div id="tab-group-1226-content-1228" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1222-tab-1223" class="nav-link active" data-group="group_1222" data-tab="tab-group-1222-content-1223">pulsar-admin</div><div id="tab-group-1222-tab-1224" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1224">REST API</div><div id="tab-group-1222-tab-1225" class="nav-link" data-group="group_1222" data-tab="tab-group-1222-content-1225">JAVA</div></div><div class="tab-content"><div id="tab-group-1222-conten [...]
+</span></div></div><div id="tab-group-1222-content-1224" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1226-content-1229" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1222-content-1225" class="tab-pane" data-group="group_1222" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1230-tab-1231" class="nav-link active" data-group="group_1230" data-tab="tab-group-1230-content-1231">pulsar-admin</div><div id="tab-group-1230-tab-1232" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1232">REST API</div><div id="tab-group-1230-tab-1233" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1233">JAVA</div></div><div class="tab-content"><div id="tab-group-1230-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1230-content-1232" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1226-tab-1227" class="nav-link active" data-group="group_1226" data-tab="tab-group-1226-content-1227">pulsar-admin</div><div id="tab-group-1226-tab-1228" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1228">REST API</div><div id="tab-group-1226-tab-1229" class="nav-link" data-group="group_1226" data-tab="tab-group-1226-content-1229">JAVA</div></div><div class="tab-content"><div id="tab-group-1226-conten [...]
+</span></div></div><div id="tab-group-1226-content-1228" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1230-content-1233" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1226-content-1229" class="tab-pane" data-group="group_1226" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1230-tab-1231" class="nav-link active" data-group="group_1230" data-tab="tab-group-1230-content-1231">pulsar-admin</div><div id="tab-group-1230-tab-1232" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1232">REST API</div><div id="tab-group-1230-tab-1233" class="nav-link" data-group="group_1230" data-tab="tab-group-1230-content-1233">JAVA</div></div><div class="tab-content"><div id="tab-group-1230-conten [...]
+</span></div></div><div id="tab-group-1230-content-1232" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1230-content-1233" class="tab-pane" data-group="group_1230" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/fr/next/adaptors-kafka"><span>Wrapper de client Kafka</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li><a  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/fr/next/adaptors-kafka"><span>Wrapper de client Kafka</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/develop-binary-protocol.html b/content/docs/fr/next/develop-binary-protocol.html
index 98cbb5a..b6d9c0d 100644
--- a/content/docs/fr/next/develop-binary-protocol.html
+++ b/content/docs/fr/next/develop-binary-protocol.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/fr/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/fr/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/fr/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/fr/next/develop-binary-protocol/index.html b/content/docs/fr/next/develop-binary-protocol/index.html
index 98cbb5a..b6d9c0d 100644
--- a/content/docs/fr/next/develop-binary-protocol/index.html
+++ b/content/docs/fr/next/develop-binary-protocol/index.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/fr/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/fr/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/fr/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/fr/next/reference-configuration.html b/content/docs/fr/next/reference-configuration.html
index 8d89ea2..16d79de 100644
--- a/content/docs/fr/next/reference-configuration.html
+++ b/content/docs/fr/next/reference-configuration.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/fr/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/fr/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/fr/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#client [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/fr/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/fr/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/fr/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div><fo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/reference-configuration/index.html b/content/docs/fr/next/reference-configuration/index.html
index 8d89ea2..16d79de 100644
--- a/content/docs/fr/next/reference-configuration/index.html
+++ b/content/docs/fr/next/reference-configuration/index.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/fr/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/fr/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/fr/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#client [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/fr/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/fr/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/fr/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div><fo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/admin-api-packages.html b/content/docs/ja/next/admin-api-packages.html
index 4326630..1e209a1 100644
--- a/content/docs/ja/next/admin-api-packages.html
+++ b/content/docs/ja/next/admin-api-packages.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="パッケージ名"></a><a href="#パッケージ名" 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-2. [...]
-<p>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1178-tab-1179" class="nav-link active" data-group="group_1178" data-tab="tab-group-1178-content-1179">pulsar-admin</div><div id="tab-group-1178-tab-1180" class="nav-link" data-group="group_1178" data-tab="tab-group-1178-content-1180">REST API</div><div id="tab-group-1178-tab-1181" class="nav-link" data-group="group_1178" data-tab="tab-group-1178-content-1181">JAVA</div></div><div class="tab-content"><div id="tab-group-1178-conten [...]
-</span></div></div><div id="tab-group-1178-content-1180" class="tab-pane" data-group="group_1178" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1178-content-1180" class="tab-pane" data-group="group_1178" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1178-content-1181" class="tab-pane" data-group="group_1178" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1182-tab-1183" class="nav-link active" data-group="group_1182" data-tab="tab-group-1182-content-1183">pulsar-admin</div><div id="tab-group-1182-tab-1184" class="nav-link" data-group="group_1182" data-tab="tab-group-1182-content-1184">REST API</div><div id="tab-group-1182-tab-1185" class="nav-link" data-group="group_1182" data-tab="tab-group-1182-content-1185">JAVA</div></div><div class="tab-content"><div id="tab-group-1182-conten [...]
-</span></div></div><div id="tab-group-1182-content-1184" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1182-content-1184" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1182-content-1185" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1182-content-1185" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1186-tab-1187" class="nav-link active" data-group="group_1186" data-tab="tab-group-1186-content-1187">pulsar-admin</div><div id="tab-group-1186-tab-1188" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1188">REST API</div><div id="tab-group-1186-tab-1189" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1189">JAVA</div></div><div class="tab-content"><div id="tab-group-1186-conten [...]
-</span></div></div><div id="tab-group-1186-content-1188" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1186-tab-1187" class="nav-link active" data-group="group_1186" data-tab="tab-group-1186-content-1187">pulsar-admin</div><div id="tab-group-1186-tab-1188" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1188">REST API</div><div id="tab-group-1186-tab-1189" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1189">JAVA</div></div><div class="tab-content"><div id="tab-group-1186-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1186-content-1188" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1186-content-1189" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1190-tab-1191" class="nav-link active" data-group="group_1190" data-tab="tab-group-1190-content-1191">pulsar-admin</div><div id="tab-group-1190-tab-1192" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1192">REST API</div><div id="tab-group-1190-tab-1193" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1193">JAVA</div></div><div class="tab-content"><div id="tab-group-1190-conten [...]
-</span></div></div><div id="tab-group-1190-content-1192" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1190-content-1193" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1186-content-1189" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1194-tab-1195" class="nav-link active" data-group="group_1194" data-tab="tab-group-1194-content-1195">pulsar-admin</div><div id="tab-group-1194-tab-1196" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1196">REST API</div><div id="tab-group-1194-tab-1197" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1197">JAVA</div></div><div class="tab-content"><div id="tab-group-1194-conten [...]
-</span></div></div><div id="tab-group-1194-content-1196" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1190-tab-1191" class="nav-link active" data-group="group_1190" data-tab="tab-group-1190-content-1191">pulsar-admin</div><div id="tab-group-1190-tab-1192" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1192">REST API</div><div id="tab-group-1190-tab-1193" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1193">JAVA</div></div><div class="tab-content"><div id="tab-group-1190-conten [...]
+</span></div></div><div id="tab-group-1190-content-1192" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1194-content-1197" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1190-content-1193" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1198-tab-1199" class="nav-link active" data-group="group_1198" data-tab="tab-group-1198-content-1199">pulsar-admin</div><div id="tab-group-1198-tab-1200" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1200">REST API</div><div id="tab-group-1198-tab-1201" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1201">JAVA</div></div><div class="tab-content"><div id="tab-group-1198-conten [...]
-</span></div></div><div id="tab-group-1198-content-1200" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1194-tab-1195" class="nav-link active" data-group="group_1194" data-tab="tab-group-1194-content-1195">pulsar-admin</div><div id="tab-group-1194-tab-1196" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1196">REST API</div><div id="tab-group-1194-tab-1197" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1197">JAVA</div></div><div class="tab-content"><div id="tab-group-1194-conten [...]
+</span></div></div><div id="tab-group-1194-content-1196" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1198-content-1201" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1194-content-1197" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1202-tab-1203" class="nav-link active" data-group="group_1202" data-tab="tab-group-1202-content-1203">pulsar-admin</div><div id="tab-group-1202-tab-1204" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1204">REST API</div><div id="tab-group-1202-tab-1205" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1205">JAVA</div></div><div class="tab-content"><div id="tab-group-1202-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1202-content-1204" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1198-tab-1199" class="nav-link active" data-group="group_1198" data-tab="tab-group-1198-content-1199">pulsar-admin</div><div id="tab-group-1198-tab-1200" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1200">REST API</div><div id="tab-group-1198-tab-1201" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1201">JAVA</div></div><div class="tab-content"><div id="tab-group-1198-conten [...]
+</span></div></div><div id="tab-group-1198-content-1200" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1202-content-1205" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1198-content-1201" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1202-tab-1203" class="nav-link active" data-group="group_1202" data-tab="tab-group-1202-content-1203">pulsar-admin</div><div id="tab-group-1202-tab-1204" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1204">REST API</div><div id="tab-group-1202-tab-1205" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1205">JAVA</div></div><div class="tab-content"><div id="tab-group-1202-conten [...]
+</span></div></div><div id="tab-group-1202-content-1204" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1202-content-1205" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ja/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#パッケージ名">パッケージ名</a></li><li><a href="#package-url">Package URL</a></li><li><a href="#permissi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ja/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to use [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/admin-api-packages/index.html b/content/docs/ja/next/admin-api-packages/index.html
index 4326630..1e209a1 100644
--- a/content/docs/ja/next/admin-api-packages/index.html
+++ b/content/docs/ja/next/admin-api-packages/index.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="パッケージ名"></a><a href="#パッケージ名" 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-2. [...]
-<p>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1178-tab-1179" class="nav-link active" data-group="group_1178" data-tab="tab-group-1178-content-1179">pulsar-admin</div><div id="tab-group-1178-tab-1180" class="nav-link" data-group="group_1178" data-tab="tab-group-1178-content-1180">REST API</div><div id="tab-group-1178-tab-1181" class="nav-link" data-group="group_1178" data-tab="tab-group-1178-content-1181">JAVA</div></div><div class="tab-content"><div id="tab-group-1178-conten [...]
-</span></div></div><div id="tab-group-1178-content-1180" class="tab-pane" data-group="group_1178" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1178-content-1180" class="tab-pane" data-group="group_1178" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1178-content-1181" class="tab-pane" data-group="group_1178" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1182-tab-1183" class="nav-link active" data-group="group_1182" data-tab="tab-group-1182-content-1183">pulsar-admin</div><div id="tab-group-1182-tab-1184" class="nav-link" data-group="group_1182" data-tab="tab-group-1182-content-1184">REST API</div><div id="tab-group-1182-tab-1185" class="nav-link" data-group="group_1182" data-tab="tab-group-1182-content-1185">JAVA</div></div><div class="tab-content"><div id="tab-group-1182-conten [...]
-</span></div></div><div id="tab-group-1182-content-1184" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1182-content-1184" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1182-content-1185" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1182-content-1185" class="tab-pane" data-group="group_1182" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1186-tab-1187" class="nav-link active" data-group="group_1186" data-tab="tab-group-1186-content-1187">pulsar-admin</div><div id="tab-group-1186-tab-1188" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1188">REST API</div><div id="tab-group-1186-tab-1189" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1189">JAVA</div></div><div class="tab-content"><div id="tab-group-1186-conten [...]
-</span></div></div><div id="tab-group-1186-content-1188" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1186-tab-1187" class="nav-link active" data-group="group_1186" data-tab="tab-group-1186-content-1187">pulsar-admin</div><div id="tab-group-1186-tab-1188" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1188">REST API</div><div id="tab-group-1186-tab-1189" class="nav-link" data-group="group_1186" data-tab="tab-group-1186-content-1189">JAVA</div></div><div class="tab-content"><div id="tab-group-1186-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1186-content-1188" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1186-content-1189" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1190-tab-1191" class="nav-link active" data-group="group_1190" data-tab="tab-group-1190-content-1191">pulsar-admin</div><div id="tab-group-1190-tab-1192" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1192">REST API</div><div id="tab-group-1190-tab-1193" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1193">JAVA</div></div><div class="tab-content"><div id="tab-group-1190-conten [...]
-</span></div></div><div id="tab-group-1190-content-1192" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1190-content-1193" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1186-content-1189" class="tab-pane" data-group="group_1186" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1194-tab-1195" class="nav-link active" data-group="group_1194" data-tab="tab-group-1194-content-1195">pulsar-admin</div><div id="tab-group-1194-tab-1196" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1196">REST API</div><div id="tab-group-1194-tab-1197" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1197">JAVA</div></div><div class="tab-content"><div id="tab-group-1194-conten [...]
-</span></div></div><div id="tab-group-1194-content-1196" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1190-tab-1191" class="nav-link active" data-group="group_1190" data-tab="tab-group-1190-content-1191">pulsar-admin</div><div id="tab-group-1190-tab-1192" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1192">REST API</div><div id="tab-group-1190-tab-1193" class="nav-link" data-group="group_1190" data-tab="tab-group-1190-content-1193">JAVA</div></div><div class="tab-content"><div id="tab-group-1190-conten [...]
+</span></div></div><div id="tab-group-1190-content-1192" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1194-content-1197" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1190-content-1193" class="tab-pane" data-group="group_1190" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1198-tab-1199" class="nav-link active" data-group="group_1198" data-tab="tab-group-1198-content-1199">pulsar-admin</div><div id="tab-group-1198-tab-1200" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1200">REST API</div><div id="tab-group-1198-tab-1201" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1201">JAVA</div></div><div class="tab-content"><div id="tab-group-1198-conten [...]
-</span></div></div><div id="tab-group-1198-content-1200" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1194-tab-1195" class="nav-link active" data-group="group_1194" data-tab="tab-group-1194-content-1195">pulsar-admin</div><div id="tab-group-1194-tab-1196" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1196">REST API</div><div id="tab-group-1194-tab-1197" class="nav-link" data-group="group_1194" data-tab="tab-group-1194-content-1197">JAVA</div></div><div class="tab-content"><div id="tab-group-1194-conten [...]
+</span></div></div><div id="tab-group-1194-content-1196" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1198-content-1201" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1194-content-1197" class="tab-pane" data-group="group_1194" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1202-tab-1203" class="nav-link active" data-group="group_1202" data-tab="tab-group-1202-content-1203">pulsar-admin</div><div id="tab-group-1202-tab-1204" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1204">REST API</div><div id="tab-group-1202-tab-1205" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1205">JAVA</div></div><div class="tab-content"><div id="tab-group-1202-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1202-content-1204" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1198-tab-1199" class="nav-link active" data-group="group_1198" data-tab="tab-group-1198-content-1199">pulsar-admin</div><div id="tab-group-1198-tab-1200" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1200">REST API</div><div id="tab-group-1198-tab-1201" class="nav-link" data-group="group_1198" data-tab="tab-group-1198-content-1201">JAVA</div></div><div class="tab-content"><div id="tab-group-1198-conten [...]
+</span></div></div><div id="tab-group-1198-content-1200" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1202-content-1205" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1198-content-1201" class="tab-pane" data-group="group_1198" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1202-tab-1203" class="nav-link active" data-group="group_1202" data-tab="tab-group-1202-content-1203">pulsar-admin</div><div id="tab-group-1202-tab-1204" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1204">REST API</div><div id="tab-group-1202-tab-1205" class="nav-link" data-group="group_1202" data-tab="tab-group-1202-content-1205">JAVA</div></div><div class="tab-content"><div id="tab-group-1202-conten [...]
+</span></div></div><div id="tab-group-1202-content-1204" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1202-content-1205" class="tab-pane" data-group="group_1202" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ja/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#パッケージ名">パッケージ名</a></li><li><a href="#package-url">Package URL</a></li><li><a href="#permissi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ja/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to use [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/develop-binary-protocol.html b/content/docs/ja/next/develop-binary-protocol.html
index f1838a4..4c708d8 100644
--- a/content/docs/ja/next/develop-binary-protocol.html
+++ b/content/docs/ja/next/develop-binary-protocol.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/ja/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/ja/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/ja/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/ja/next/develop-binary-protocol/index.html b/content/docs/ja/next/develop-binary-protocol/index.html
index f1838a4..4c708d8 100644
--- a/content/docs/ja/next/develop-binary-protocol/index.html
+++ b/content/docs/ja/next/develop-binary-protocol/index.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/ja/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/ja/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/ja/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/ja/next/reference-configuration.html b/content/docs/ja/next/reference-configuration.html
index eea504c..5541a9f 100644
--- a/content/docs/ja/next/reference-configuration.html
+++ b/content/docs/ja/next/reference-configuration.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/ja/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/ja/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ja/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#client [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/ja/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/ja/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ja/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div><fo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/reference-configuration/index.html b/content/docs/ja/next/reference-configuration/index.html
index eea504c..5541a9f 100644
--- a/content/docs/ja/next/reference-configuration/index.html
+++ b/content/docs/ja/next/reference-configuration/index.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/ja/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/ja/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ja/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#client [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/ja/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/ja/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ja/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div><fo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/admin-api-packages.html b/content/docs/ko/next/admin-api-packages.html
index 062fb21..29082b3 100644
--- a/content/docs/ko/next/admin-api-packages.html
+++ b/content/docs/ko/next/admin-api-packages.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" 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>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1234-tab-1235" class="nav-link active" data-group="group_1234" data-tab="tab-group-1234-content-1235">pulsar-admin</div><div id="tab-group-1234-tab-1236" class="nav-link" data-group="group_1234" data-tab="tab-group-1234-content-1236">REST API</div><div id="tab-group-1234-tab-1237" class="nav-link" data-group="group_1234" data-tab="tab-group-1234-content-1237">JAVA</div></div><div class="tab-content"><div id="tab-group-1234-conten [...]
-</span></div></div><div id="tab-group-1234-content-1236" class="tab-pane" data-group="group_1234" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1234-content-1236" class="tab-pane" data-group="group_1234" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1234-content-1237" class="tab-pane" data-group="group_1234" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1238-tab-1239" class="nav-link active" data-group="group_1238" data-tab="tab-group-1238-content-1239">pulsar-admin</div><div id="tab-group-1238-tab-1240" class="nav-link" data-group="group_1238" data-tab="tab-group-1238-content-1240">REST API</div><div id="tab-group-1238-tab-1241" class="nav-link" data-group="group_1238" data-tab="tab-group-1238-content-1241">JAVA</div></div><div class="tab-content"><div id="tab-group-1238-conten [...]
-</span></div></div><div id="tab-group-1238-content-1240" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1238-content-1240" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1238-content-1241" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1238-content-1241" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1242-tab-1243" class="nav-link active" data-group="group_1242" data-tab="tab-group-1242-content-1243">pulsar-admin</div><div id="tab-group-1242-tab-1244" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1244">REST API</div><div id="tab-group-1242-tab-1245" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1245">JAVA</div></div><div class="tab-content"><div id="tab-group-1242-conten [...]
-</span></div></div><div id="tab-group-1242-content-1244" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1242-tab-1243" class="nav-link active" data-group="group_1242" data-tab="tab-group-1242-content-1243">pulsar-admin</div><div id="tab-group-1242-tab-1244" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1244">REST API</div><div id="tab-group-1242-tab-1245" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1245">JAVA</div></div><div class="tab-content"><div id="tab-group-1242-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1242-content-1244" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1242-content-1245" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1246-tab-1247" class="nav-link active" data-group="group_1246" data-tab="tab-group-1246-content-1247">pulsar-admin</div><div id="tab-group-1246-tab-1248" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1248">REST API</div><div id="tab-group-1246-tab-1249" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1249">JAVA</div></div><div class="tab-content"><div id="tab-group-1246-conten [...]
-</span></div></div><div id="tab-group-1246-content-1248" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1246-content-1249" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1242-content-1245" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1250-tab-1251" class="nav-link active" data-group="group_1250" data-tab="tab-group-1250-content-1251">pulsar-admin</div><div id="tab-group-1250-tab-1252" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1252">REST API</div><div id="tab-group-1250-tab-1253" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1253">JAVA</div></div><div class="tab-content"><div id="tab-group-1250-conten [...]
-</span></div></div><div id="tab-group-1250-content-1252" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1246-tab-1247" class="nav-link active" data-group="group_1246" data-tab="tab-group-1246-content-1247">pulsar-admin</div><div id="tab-group-1246-tab-1248" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1248">REST API</div><div id="tab-group-1246-tab-1249" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1249">JAVA</div></div><div class="tab-content"><div id="tab-group-1246-conten [...]
+</span></div></div><div id="tab-group-1246-content-1248" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1250-content-1253" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1246-content-1249" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1254-tab-1255" class="nav-link active" data-group="group_1254" data-tab="tab-group-1254-content-1255">pulsar-admin</div><div id="tab-group-1254-tab-1256" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1256">REST API</div><div id="tab-group-1254-tab-1257" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1257">JAVA</div></div><div class="tab-content"><div id="tab-group-1254-conten [...]
-</span></div></div><div id="tab-group-1254-content-1256" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1250-tab-1251" class="nav-link active" data-group="group_1250" data-tab="tab-group-1250-content-1251">pulsar-admin</div><div id="tab-group-1250-tab-1252" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1252">REST API</div><div id="tab-group-1250-tab-1253" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1253">JAVA</div></div><div class="tab-content"><div id="tab-group-1250-conten [...]
+</span></div></div><div id="tab-group-1250-content-1252" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1254-content-1257" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1250-content-1253" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1258-tab-1259" class="nav-link active" data-group="group_1258" data-tab="tab-group-1258-content-1259">pulsar-admin</div><div id="tab-group-1258-tab-1260" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1260">REST API</div><div id="tab-group-1258-tab-1261" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1261">JAVA</div></div><div class="tab-content"><div id="tab-group-1258-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1258-content-1260" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1254-tab-1255" class="nav-link active" data-group="group_1254" data-tab="tab-group-1254-content-1255">pulsar-admin</div><div id="tab-group-1254-tab-1256" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1256">REST API</div><div id="tab-group-1254-tab-1257" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1257">JAVA</div></div><div class="tab-content"><div id="tab-group-1254-conten [...]
+</span></div></div><div id="tab-group-1254-content-1256" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1258-content-1261" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1254-content-1257" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1258-tab-1259" class="nav-link active" data-group="group_1258" data-tab="tab-group-1258-content-1259">pulsar-admin</div><div id="tab-group-1258-tab-1260" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1260">REST API</div><div id="tab-group-1258-tab-1261" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1261">JAVA</div></div><div class="tab-content"><div id="tab-group-1258-conten [...]
+</span></div></div><div id="tab-group-1258-content-1260" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1258-content-1261" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ko/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li><a hre [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ko/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to use [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/admin-api-packages/index.html b/content/docs/ko/next/admin-api-packages/index.html
index 062fb21..29082b3 100644
--- a/content/docs/ko/next/admin-api-packages/index.html
+++ b/content/docs/ko/next/admin-api-packages/index.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" 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>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1234-tab-1235" class="nav-link active" data-group="group_1234" data-tab="tab-group-1234-content-1235">pulsar-admin</div><div id="tab-group-1234-tab-1236" class="nav-link" data-group="group_1234" data-tab="tab-group-1234-content-1236">REST API</div><div id="tab-group-1234-tab-1237" class="nav-link" data-group="group_1234" data-tab="tab-group-1234-content-1237">JAVA</div></div><div class="tab-content"><div id="tab-group-1234-conten [...]
-</span></div></div><div id="tab-group-1234-content-1236" class="tab-pane" data-group="group_1234" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1234-content-1236" class="tab-pane" data-group="group_1234" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1234-content-1237" class="tab-pane" data-group="group_1234" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1238-tab-1239" class="nav-link active" data-group="group_1238" data-tab="tab-group-1238-content-1239">pulsar-admin</div><div id="tab-group-1238-tab-1240" class="nav-link" data-group="group_1238" data-tab="tab-group-1238-content-1240">REST API</div><div id="tab-group-1238-tab-1241" class="nav-link" data-group="group_1238" data-tab="tab-group-1238-content-1241">JAVA</div></div><div class="tab-content"><div id="tab-group-1238-conten [...]
-</span></div></div><div id="tab-group-1238-content-1240" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1238-content-1240" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1238-content-1241" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1238-content-1241" class="tab-pane" data-group="group_1238" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1242-tab-1243" class="nav-link active" data-group="group_1242" data-tab="tab-group-1242-content-1243">pulsar-admin</div><div id="tab-group-1242-tab-1244" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1244">REST API</div><div id="tab-group-1242-tab-1245" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1245">JAVA</div></div><div class="tab-content"><div id="tab-group-1242-conten [...]
-</span></div></div><div id="tab-group-1242-content-1244" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1242-tab-1243" class="nav-link active" data-group="group_1242" data-tab="tab-group-1242-content-1243">pulsar-admin</div><div id="tab-group-1242-tab-1244" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1244">REST API</div><div id="tab-group-1242-tab-1245" class="nav-link" data-group="group_1242" data-tab="tab-group-1242-content-1245">JAVA</div></div><div class="tab-content"><div id="tab-group-1242-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1242-content-1244" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1242-content-1245" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1246-tab-1247" class="nav-link active" data-group="group_1246" data-tab="tab-group-1246-content-1247">pulsar-admin</div><div id="tab-group-1246-tab-1248" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1248">REST API</div><div id="tab-group-1246-tab-1249" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1249">JAVA</div></div><div class="tab-content"><div id="tab-group-1246-conten [...]
-</span></div></div><div id="tab-group-1246-content-1248" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1246-content-1249" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1242-content-1245" class="tab-pane" data-group="group_1242" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1250-tab-1251" class="nav-link active" data-group="group_1250" data-tab="tab-group-1250-content-1251">pulsar-admin</div><div id="tab-group-1250-tab-1252" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1252">REST API</div><div id="tab-group-1250-tab-1253" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1253">JAVA</div></div><div class="tab-content"><div id="tab-group-1250-conten [...]
-</span></div></div><div id="tab-group-1250-content-1252" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1246-tab-1247" class="nav-link active" data-group="group_1246" data-tab="tab-group-1246-content-1247">pulsar-admin</div><div id="tab-group-1246-tab-1248" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1248">REST API</div><div id="tab-group-1246-tab-1249" class="nav-link" data-group="group_1246" data-tab="tab-group-1246-content-1249">JAVA</div></div><div class="tab-content"><div id="tab-group-1246-conten [...]
+</span></div></div><div id="tab-group-1246-content-1248" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1250-content-1253" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1246-content-1249" class="tab-pane" data-group="group_1246" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1254-tab-1255" class="nav-link active" data-group="group_1254" data-tab="tab-group-1254-content-1255">pulsar-admin</div><div id="tab-group-1254-tab-1256" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1256">REST API</div><div id="tab-group-1254-tab-1257" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1257">JAVA</div></div><div class="tab-content"><div id="tab-group-1254-conten [...]
-</span></div></div><div id="tab-group-1254-content-1256" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1250-tab-1251" class="nav-link active" data-group="group_1250" data-tab="tab-group-1250-content-1251">pulsar-admin</div><div id="tab-group-1250-tab-1252" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1252">REST API</div><div id="tab-group-1250-tab-1253" class="nav-link" data-group="group_1250" data-tab="tab-group-1250-content-1253">JAVA</div></div><div class="tab-content"><div id="tab-group-1250-conten [...]
+</span></div></div><div id="tab-group-1250-content-1252" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1254-content-1257" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1250-content-1253" class="tab-pane" data-group="group_1250" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1258-tab-1259" class="nav-link active" data-group="group_1258" data-tab="tab-group-1258-content-1259">pulsar-admin</div><div id="tab-group-1258-tab-1260" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1260">REST API</div><div id="tab-group-1258-tab-1261" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1261">JAVA</div></div><div class="tab-content"><div id="tab-group-1258-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1258-content-1260" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1254-tab-1255" class="nav-link active" data-group="group_1254" data-tab="tab-group-1254-content-1255">pulsar-admin</div><div id="tab-group-1254-tab-1256" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1256">REST API</div><div id="tab-group-1254-tab-1257" class="nav-link" data-group="group_1254" data-tab="tab-group-1254-content-1257">JAVA</div></div><div class="tab-content"><div id="tab-group-1254-conten [...]
+</span></div></div><div id="tab-group-1254-content-1256" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1258-content-1261" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1254-content-1257" class="tab-pane" data-group="group_1254" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1258-tab-1259" class="nav-link active" data-group="group_1258" data-tab="tab-group-1258-content-1259">pulsar-admin</div><div id="tab-group-1258-tab-1260" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1260">REST API</div><div id="tab-group-1258-tab-1261" class="nav-link" data-group="group_1258" data-tab="tab-group-1258-content-1261">JAVA</div></div><div class="tab-content"><div id="tab-group-1258-conten [...]
+</span></div></div><div id="tab-group-1258-content-1260" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1258-content-1261" class="tab-pane" data-group="group_1258" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ko/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li><a hre [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/ko/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to use [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/develop-binary-protocol.html b/content/docs/ko/next/develop-binary-protocol.html
index a654d8a..33c9d47 100644
--- a/content/docs/ko/next/develop-binary-protocol.html
+++ b/content/docs/ko/next/develop-binary-protocol.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/ko/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/ko/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/ko/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/ko/next/develop-binary-protocol/index.html b/content/docs/ko/next/develop-binary-protocol/index.html
index a654d8a..33c9d47 100644
--- a/content/docs/ko/next/develop-binary-protocol/index.html
+++ b/content/docs/ko/next/develop-binary-protocol/index.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/ko/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/ko/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/ko/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/ko/next/reference-configuration.html b/content/docs/ko/next/reference-configuration.html
index 6a88299..d55941d 100644
--- a/content/docs/ko/next/reference-configuration.html
+++ b/content/docs/ko/next/reference-configuration.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/ko/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>로그</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/ko/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ko/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#client [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/ko/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | 로그                                              |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/ko/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ko/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div><fo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ko/next/reference-configuration/index.html b/content/docs/ko/next/reference-configuration/index.html
index 6a88299..d55941d 100644
--- a/content/docs/ko/next/reference-configuration/index.html
+++ b/content/docs/ko/next/reference-configuration/index.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/ko/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>로그</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/ko/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ko/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#client [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/ko/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | 로그                                              |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/ko/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ko/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/ko/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div><fo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/admin-api-packages.html b/content/docs/zh-CN/next/admin-api-packages.html
index db7c995..05a1abd 100644
--- a/content/docs/zh-CN/next/admin-api-packages.html
+++ b/content/docs/zh-CN/next/admin-api-packages.html
@@ -79,136 +79,127 @@
 <p><strong>重要</strong></p>
 <p>此页面仅显示 <strong>部分常用操作</strong>。</p>
 <ul>
-<li><p>有关 <code>Pulsar admin</code> 的最新完整信息,包括命令、标志、描述等,请参阅 <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin 文档</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>关于 <code>REST API</code> 最新最完整的信息,包括参数、响应、示例等等,可参阅 <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API 文档。</p></li>
 <li><p>有关 <code>Java admin API</code> 的最新完整信息,包括类、方法、描述等,请参阅 <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/"> Java admin API 文档</a>。</p></li>
 </ul>
 </blockquote>
-<p>Package 管理允许使用版本管理,并将简化对 Function、Sink 和 Source 的升级回滚过程。 当需要在不同的命名空间下使用相同的 Function、Sink 或 Source 时,可以将它们上传到一个共用的 Package 管理系统中。</p>
-<h2><a class="anchor" aria-hidden="true" id="package-名"></a><a href="#package-名" 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>一个完整的<code>pacakge</code>由五个部分组成:<code>type</code>、<code>tenant</code>、<code>namespace</code>、<code>package name</code>、<code>version</code>。</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>部分</th><th>说明</th></tr>
+<tr><th>Metadata</th><th>说明</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>Package 的类型 支持以下类型:<code>function</code>、<code>sink</code>或<code>source</code>。</td></tr>
-<tr><td><code>name</code></td><td>Package 的完全限定名称:<code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>Package 的版本号</td></tr>
+<tr><td>描述</td><td>Package 的描述</td></tr>
+<tr><td>联系方式</td><td>Package 的联系方式: For example, an email address of the developer team.</td></tr>
+<tr><td>创建时间</td><td>Package 的创建时间。</td></tr>
+<tr><td>修改时间</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>以下是 Package 的定义示例。</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-链接"></a><a href="#package-链接" 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 [...]
-<p>Package 通过 URL 来标识位置。 Package 的 URL 遵循以下格式:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>以下是一些 Package 的 URL 示例:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>Package 管理系统存储了每个 Package 的数据、版本和元数据。 元数据包含的内容如下表所示。</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>元数据</th><th>说明</th></tr>
+<tr><th>组件</th><th>说明</th></tr>
 </thead>
 <tbody>
-<tr><td>描述</td><td>Package 的描述</td></tr>
-<tr><td>联系方式</td><td>Package 的联系方式: 比如团队邮箱地址。</td></tr>
-<tr><td>创建时间</td><td>Package 的创建时间。</td></tr>
-<tr><td>修改时间</td><td>Package 的修改时间</td></tr>
-<tr><td>properties</td><td>存储自定义信息的键值对。</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>租户</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>命名空间</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="权限管理"></a><a href="#权限管理" 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-2.09V6 [...]
-<p>Package 的层级通过租户和命名空间来组织,所以你可以直接将租户和命名空间的权限应用到 Package 上。</p>
-<h2><a class="anchor" aria-hidden="true" id="package-管理资源"></a><a href="#package-管理资源" 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>你可以通过命令行、REST API 和 Java 客户端来管理 Package。</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="上传-package"></a><a href="#上传-package" 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 [...]
-<p>你可以通过以下方式将 Package 上传到 Package 管理服务中。</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1262-tab-1263" class="nav-link active" data-group="group_1262" data-tab="tab-group-1262-content-1263">pulsar-admin</div><div id="tab-group-1262-tab-1264" class="nav-link" data-group="group_1262" data-tab="tab-group-1262-content-1264">REST API</div><div id="tab-group-1262-tab-1265" class="nav-link" data-group="group_1262" data-tab="tab-group-1262-content-1265">JAVA</div></div><div class="tab-content"><div id="tab-group-1262-conten [...]
-</span></div></div><div id="tab-group-1262-content-1264" class="tab-pane" data-group="group_1262" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1262-content-1264" class="tab-pane" data-group="group_1262" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1262-content-1265" class="tab-pane" data-group="group_1262" tabindex="-1"><div><span><p>使用同步调用的方式上传到 Package 管理服务中。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>使用异步调用的方式上传到 Package 管理服务中。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="下载-package"></a><a href="#下载-package" 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 [...]
-<p>你可以通过以下方式从 Package 管理服务中下载 Package。</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1266-tab-1267" class="nav-link active" data-group="group_1266" data-tab="tab-group-1266-content-1267">pulsar-admin</div><div id="tab-group-1266-tab-1268" class="nav-link" data-group="group_1266" data-tab="tab-group-1266-content-1268">REST API</div><div id="tab-group-1266-tab-1269" class="nav-link" data-group="group_1266" data-tab="tab-group-1266-content-1269">JAVA</div></div><div class="tab-content"><div id="tab-group-1266-conten [...]
-</span></div></div><div id="tab-group-1266-content-1268" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1266-content-1268" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1266-content-1269" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p>使用同步调用的方式从 Package 管理服务中下载 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式从 Package 管理服务中下载 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1266-content-1269" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="列出-package-的所有版本"></a><a href="#列出-package-的所有版本" 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. [...]
-<p>可以通过以下方式列出 Package 的所有版本。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1270-tab-1271" class="nav-link active" data-group="group_1270" data-tab="tab-group-1270-content-1271">pulsar-admin</div><div id="tab-group-1270-tab-1272" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1272">REST API</div><div id="tab-group-1270-tab-1273" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1273">JAVA</div></div><div class="tab-content"><div id="tab-group-1270-conten [...]
-</span></div></div><div id="tab-group-1270-content-1272" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1270-tab-1271" class="nav-link active" data-group="group_1270" data-tab="tab-group-1270-content-1271">pulsar-admin</div><div id="tab-group-1270-tab-1272" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1272">REST API</div><div id="tab-group-1270-tab-1273" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1273">JAVA</div></div><div class="tab-content"><div id="tab-group-1270-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1270-content-1272" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1270-content-1273" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p>使用同步调用的方式列出 Package 的所有版本。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式列出 Package 的所有版本。</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="列出某个命名空间下指定类型的-package"></a><a href="#列出某个命名空间下指定类型的-package" 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 [...]
-<p>你可以通过以下方式列出某个命名空间下的所有指定类型的Package。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1274-tab-1275" class="nav-link active" data-group="group_1274" data-tab="tab-group-1274-content-1275">pulsar-admin</div><div id="tab-group-1274-tab-1276" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1276">REST API</div><div id="tab-group-1274-tab-1277" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1277">JAVA</div></div><div class="tab-content"><div id="tab-group-1274-conten [...]
-</span></div></div><div id="tab-group-1274-content-1276" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1274-content-1277" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p>使用同步调用的方式列出某个命名空间下的所有指定类型的 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式列出某个命名空间下的所有指定类型的Package。</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1270-content-1273" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p>使用同步调用的方式删除特定版本的 Package。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>使用异步调用的方式删除特定版本的 Package。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="获取-package-的元数据"></a><a href="#获取-package-的元数据" 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>可以通过以下方式获取 Package 的元数据。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1278-tab-1279" class="nav-link active" data-group="group_1278" data-tab="tab-group-1278-content-1279">pulsar-admin</div><div id="tab-group-1278-tab-1280" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1280">REST API</div><div id="tab-group-1278-tab-1281" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1281">JAVA</div></div><div class="tab-content"><div id="tab-group-1278-conten [...]
-</span></div></div><div id="tab-group-1278-content-1280" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1274-tab-1275" class="nav-link active" data-group="group_1274" data-tab="tab-group-1274-content-1275">pulsar-admin</div><div id="tab-group-1274-tab-1276" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1276">REST API</div><div id="tab-group-1274-tab-1277" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1277">JAVA</div></div><div class="tab-content"><div id="tab-group-1274-conten [...]
+</span></div></div><div id="tab-group-1274-content-1276" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1278-content-1281" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p>使用同步调用的方式获取 Package 的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1274-content-1277" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p>使用同步调用的方式获取 Package 的元数据。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>使用异步调用的方式获取 Package 的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="更新-package-的元数据"></a><a href="#更新-package-的元数据" 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>你可以通过以下方式更新Package的元数据。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1282-tab-1283" class="nav-link active" data-group="group_1282" data-tab="tab-group-1282-content-1283">pulsar-admin</div><div id="tab-group-1282-tab-1284" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1284">REST API</div><div id="tab-group-1282-tab-1285" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1285">JAVA</div></div><div class="tab-content"><div id="tab-group-1282-conten [...]
-</span></div></div><div id="tab-group-1282-content-1284" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1278-tab-1279" class="nav-link active" data-group="group_1278" data-tab="tab-group-1278-content-1279">pulsar-admin</div><div id="tab-group-1278-tab-1280" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1280">REST API</div><div id="tab-group-1278-tab-1281" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1281">JAVA</div></div><div class="tab-content"><div id="tab-group-1278-conten [...]
+</span></div></div><div id="tab-group-1278-content-1280" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1282-content-1285" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p>使用同步调用的方式更新 Package 的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式获取Package的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1278-content-1281" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="删除-package"></a><a href="#删除-package" 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 [...]
-<p>可以通过以下方式使用 Package 名删除特定版本的 Package。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1286-tab-1287" class="nav-link active" data-group="group_1286" data-tab="tab-group-1286-content-1287">pulsar-admin</div><div id="tab-group-1286-tab-1288" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1288">REST API</div><div id="tab-group-1286-tab-1289" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1289">JAVA</div></div><div class="tab-content"><div id="tab-group-1286-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1286-content-1288" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="列出-package-的所有版本"></a><a href="#列出-package-的所有版本" 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. [...]
+<p>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1282-tab-1283" class="nav-link active" data-group="group_1282" data-tab="tab-group-1282-content-1283">pulsar-admin</div><div id="tab-group-1282-tab-1284" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1284">REST API</div><div id="tab-group-1282-tab-1285" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1285">JAVA</div></div><div class="tab-content"><div id="tab-group-1282-conten [...]
+</span></div></div><div id="tab-group-1282-content-1284" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1286-content-1289" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p>使用同步调用的方式删除特定版本的 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式删除特定版本的 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1282-content-1285" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p>使用同步调用的方式列出 Package 的所有版本。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>使用异步调用的方式列出 Package 的所有版本。</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1286-tab-1287" class="nav-link active" data-group="group_1286" data-tab="tab-group-1286-content-1287">pulsar-admin</div><div id="tab-group-1286-tab-1288" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1288">REST API</div><div id="tab-group-1286-tab-1289" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1289">JAVA</div></div><div class="tab-content"><div id="tab-group-1286-conten [...]
+</span></div></div><div id="tab-group-1286-content-1288" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1286-content-1289" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/next/adaptors-kafka"><span>Kafka 客户端封装</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-名">Package 名</a></li><li><a href="#package-链接">Package 链接</a></li><li><a href="#权限管理">权 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/next/adaptors-kafka"><span>Kafka 客户端封装</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to use a  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/admin-api-packages/index.html b/content/docs/zh-CN/next/admin-api-packages/index.html
index db7c995..05a1abd 100644
--- a/content/docs/zh-CN/next/admin-api-packages/index.html
+++ b/content/docs/zh-CN/next/admin-api-packages/index.html
@@ -79,136 +79,127 @@
 <p><strong>重要</strong></p>
 <p>此页面仅显示 <strong>部分常用操作</strong>。</p>
 <ul>
-<li><p>有关 <code>Pulsar admin</code> 的最新完整信息,包括命令、标志、描述等,请参阅 <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin 文档</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>关于 <code>REST API</code> 最新最完整的信息,包括参数、响应、示例等等,可参阅 <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API 文档。</p></li>
 <li><p>有关 <code>Java admin API</code> 的最新完整信息,包括类、方法、描述等,请参阅 <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/"> Java admin API 文档</a>。</p></li>
 </ul>
 </blockquote>
-<p>Package 管理允许使用版本管理,并将简化对 Function、Sink 和 Source 的升级回滚过程。 当需要在不同的命名空间下使用相同的 Function、Sink 或 Source 时,可以将它们上传到一个共用的 Package 管理系统中。</p>
-<h2><a class="anchor" aria-hidden="true" id="package-名"></a><a href="#package-名" 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>一个完整的<code>pacakge</code>由五个部分组成:<code>type</code>、<code>tenant</code>、<code>namespace</code>、<code>package name</code>、<code>version</code>。</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>部分</th><th>说明</th></tr>
+<tr><th>Metadata</th><th>说明</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>Package 的类型 支持以下类型:<code>function</code>、<code>sink</code>或<code>source</code>。</td></tr>
-<tr><td><code>name</code></td><td>Package 的完全限定名称:<code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>Package 的版本号</td></tr>
+<tr><td>描述</td><td>Package 的描述</td></tr>
+<tr><td>联系方式</td><td>Package 的联系方式: For example, an email address of the developer team.</td></tr>
+<tr><td>创建时间</td><td>Package 的创建时间。</td></tr>
+<tr><td>修改时间</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>以下是 Package 的定义示例。</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-链接"></a><a href="#package-链接" 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 [...]
-<p>Package 通过 URL 来标识位置。 Package 的 URL 遵循以下格式:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>以下是一些 Package 的 URL 示例:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>Package 管理系统存储了每个 Package 的数据、版本和元数据。 元数据包含的内容如下表所示。</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>元数据</th><th>说明</th></tr>
+<tr><th>组件</th><th>说明</th></tr>
 </thead>
 <tbody>
-<tr><td>描述</td><td>Package 的描述</td></tr>
-<tr><td>联系方式</td><td>Package 的联系方式: 比如团队邮箱地址。</td></tr>
-<tr><td>创建时间</td><td>Package 的创建时间。</td></tr>
-<tr><td>修改时间</td><td>Package 的修改时间</td></tr>
-<tr><td>properties</td><td>存储自定义信息的键值对。</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>租户</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>命名空间</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="权限管理"></a><a href="#权限管理" 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-2.09V6 [...]
-<p>Package 的层级通过租户和命名空间来组织,所以你可以直接将租户和命名空间的权限应用到 Package 上。</p>
-<h2><a class="anchor" aria-hidden="true" id="package-管理资源"></a><a href="#package-管理资源" 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>你可以通过命令行、REST API 和 Java 客户端来管理 Package。</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="上传-package"></a><a href="#上传-package" 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 [...]
-<p>你可以通过以下方式将 Package 上传到 Package 管理服务中。</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1262-tab-1263" class="nav-link active" data-group="group_1262" data-tab="tab-group-1262-content-1263">pulsar-admin</div><div id="tab-group-1262-tab-1264" class="nav-link" data-group="group_1262" data-tab="tab-group-1262-content-1264">REST API</div><div id="tab-group-1262-tab-1265" class="nav-link" data-group="group_1262" data-tab="tab-group-1262-content-1265">JAVA</div></div><div class="tab-content"><div id="tab-group-1262-conten [...]
-</span></div></div><div id="tab-group-1262-content-1264" class="tab-pane" data-group="group_1262" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1262-content-1264" class="tab-pane" data-group="group_1262" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1262-content-1265" class="tab-pane" data-group="group_1262" tabindex="-1"><div><span><p>使用同步调用的方式上传到 Package 管理服务中。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>使用异步调用的方式上传到 Package 管理服务中。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="下载-package"></a><a href="#下载-package" 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 [...]
-<p>你可以通过以下方式从 Package 管理服务中下载 Package。</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1266-tab-1267" class="nav-link active" data-group="group_1266" data-tab="tab-group-1266-content-1267">pulsar-admin</div><div id="tab-group-1266-tab-1268" class="nav-link" data-group="group_1266" data-tab="tab-group-1266-content-1268">REST API</div><div id="tab-group-1266-tab-1269" class="nav-link" data-group="group_1266" data-tab="tab-group-1266-content-1269">JAVA</div></div><div class="tab-content"><div id="tab-group-1266-conten [...]
-</span></div></div><div id="tab-group-1266-content-1268" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1266-content-1268" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1266-content-1269" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p>使用同步调用的方式从 Package 管理服务中下载 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式从 Package 管理服务中下载 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1266-content-1269" class="tab-pane" data-group="group_1266" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="列出-package-的所有版本"></a><a href="#列出-package-的所有版本" 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. [...]
-<p>可以通过以下方式列出 Package 的所有版本。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1270-tab-1271" class="nav-link active" data-group="group_1270" data-tab="tab-group-1270-content-1271">pulsar-admin</div><div id="tab-group-1270-tab-1272" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1272">REST API</div><div id="tab-group-1270-tab-1273" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1273">JAVA</div></div><div class="tab-content"><div id="tab-group-1270-conten [...]
-</span></div></div><div id="tab-group-1270-content-1272" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1270-tab-1271" class="nav-link active" data-group="group_1270" data-tab="tab-group-1270-content-1271">pulsar-admin</div><div id="tab-group-1270-tab-1272" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1272">REST API</div><div id="tab-group-1270-tab-1273" class="nav-link" data-group="group_1270" data-tab="tab-group-1270-content-1273">JAVA</div></div><div class="tab-content"><div id="tab-group-1270-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1270-content-1272" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1270-content-1273" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p>使用同步调用的方式列出 Package 的所有版本。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式列出 Package 的所有版本。</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="列出某个命名空间下指定类型的-package"></a><a href="#列出某个命名空间下指定类型的-package" 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 [...]
-<p>你可以通过以下方式列出某个命名空间下的所有指定类型的Package。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1274-tab-1275" class="nav-link active" data-group="group_1274" data-tab="tab-group-1274-content-1275">pulsar-admin</div><div id="tab-group-1274-tab-1276" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1276">REST API</div><div id="tab-group-1274-tab-1277" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1277">JAVA</div></div><div class="tab-content"><div id="tab-group-1274-conten [...]
-</span></div></div><div id="tab-group-1274-content-1276" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1274-content-1277" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p>使用同步调用的方式列出某个命名空间下的所有指定类型的 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式列出某个命名空间下的所有指定类型的Package。</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1270-content-1273" class="tab-pane" data-group="group_1270" tabindex="-1"><div><span><p>使用同步调用的方式删除特定版本的 Package。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>使用异步调用的方式删除特定版本的 Package。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="获取-package-的元数据"></a><a href="#获取-package-的元数据" 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>可以通过以下方式获取 Package 的元数据。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1278-tab-1279" class="nav-link active" data-group="group_1278" data-tab="tab-group-1278-content-1279">pulsar-admin</div><div id="tab-group-1278-tab-1280" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1280">REST API</div><div id="tab-group-1278-tab-1281" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1281">JAVA</div></div><div class="tab-content"><div id="tab-group-1278-conten [...]
-</span></div></div><div id="tab-group-1278-content-1280" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1274-tab-1275" class="nav-link active" data-group="group_1274" data-tab="tab-group-1274-content-1275">pulsar-admin</div><div id="tab-group-1274-tab-1276" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1276">REST API</div><div id="tab-group-1274-tab-1277" class="nav-link" data-group="group_1274" data-tab="tab-group-1274-content-1277">JAVA</div></div><div class="tab-content"><div id="tab-group-1274-conten [...]
+</span></div></div><div id="tab-group-1274-content-1276" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1278-content-1281" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p>使用同步调用的方式获取 Package 的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1274-content-1277" class="tab-pane" data-group="group_1274" tabindex="-1"><div><span><p>使用同步调用的方式获取 Package 的元数据。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>使用异步调用的方式获取 Package 的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="更新-package-的元数据"></a><a href="#更新-package-的元数据" 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>你可以通过以下方式更新Package的元数据。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1282-tab-1283" class="nav-link active" data-group="group_1282" data-tab="tab-group-1282-content-1283">pulsar-admin</div><div id="tab-group-1282-tab-1284" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1284">REST API</div><div id="tab-group-1282-tab-1285" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1285">JAVA</div></div><div class="tab-content"><div id="tab-group-1282-conten [...]
-</span></div></div><div id="tab-group-1282-content-1284" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1278-tab-1279" class="nav-link active" data-group="group_1278" data-tab="tab-group-1278-content-1279">pulsar-admin</div><div id="tab-group-1278-tab-1280" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1280">REST API</div><div id="tab-group-1278-tab-1281" class="nav-link" data-group="group_1278" data-tab="tab-group-1278-content-1281">JAVA</div></div><div class="tab-content"><div id="tab-group-1278-conten [...]
+</span></div></div><div id="tab-group-1278-content-1280" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1282-content-1285" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p>使用同步调用的方式更新 Package 的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式获取Package的元数据。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1278-content-1281" class="tab-pane" data-group="group_1278" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="删除-package"></a><a href="#删除-package" 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 [...]
-<p>可以通过以下方式使用 Package 名删除特定版本的 Package。</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1286-tab-1287" class="nav-link active" data-group="group_1286" data-tab="tab-group-1286-content-1287">pulsar-admin</div><div id="tab-group-1286-tab-1288" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1288">REST API</div><div id="tab-group-1286-tab-1289" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1289">JAVA</div></div><div class="tab-content"><div id="tab-group-1286-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1286-content-1288" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="列出-package-的所有版本"></a><a href="#列出-package-的所有版本" 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. [...]
+<p>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1282-tab-1283" class="nav-link active" data-group="group_1282" data-tab="tab-group-1282-content-1283">pulsar-admin</div><div id="tab-group-1282-tab-1284" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1284">REST API</div><div id="tab-group-1282-tab-1285" class="nav-link" data-group="group_1282" data-tab="tab-group-1282-content-1285">JAVA</div></div><div class="tab-content"><div id="tab-group-1282-conten [...]
+</span></div></div><div id="tab-group-1282-content-1284" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1286-content-1289" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p>使用同步调用的方式删除特定版本的 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>使用异步调用的方式删除特定版本的 Package。</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1282-content-1285" class="tab-pane" data-group="group_1282" tabindex="-1"><div><span><p>使用同步调用的方式列出 Package 的所有版本。</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>使用异步调用的方式列出 Package 的所有版本。</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1286-tab-1287" class="nav-link active" data-group="group_1286" data-tab="tab-group-1286-content-1287">pulsar-admin</div><div id="tab-group-1286-tab-1288" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1288">REST API</div><div id="tab-group-1286-tab-1289" class="nav-link" data-group="group_1286" data-tab="tab-group-1286-content-1289">JAVA</div></div><div class="tab-content"><div id="tab-group-1286-conten [...]
+</span></div></div><div id="tab-group-1286-content-1288" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1286-content-1289" class="tab-pane" data-group="group_1286" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/next/adaptors-kafka"><span>Kafka 客户端封装</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-名">Package 名</a></li><li><a href="#package-链接">Package 链接</a></li><li><a href="#权限管理">权 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/next/adaptors-kafka"><span>Kafka 客户端封装</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How to use a  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/admin-api-topics.html b/content/docs/zh-CN/next/admin-api-topics.html
index ea2fa5f..a852d86 100644
--- a/content/docs/zh-CN/next/admin-api-topics.html
+++ b/content/docs/zh-CN/next/admin-api-topics.html
@@ -554,7 +554,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 <p>可以使用 Pulsar <a href="/docs/zh-CN/next/admin-api-overview">admin API</a> 来创建、删除和检查非分区主题的状态。</p>
 <h3><a class="anchor" aria-hidden="true" id="创建"></a><a href="#创建" 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-2.09V6.25c [...]
 <p>必须明确创建非分区主题。 当创建一个新的非分区主题时,需要为该主题提供一个名称。</p>
-<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 To disable this feature, set <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
+<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 禁用此功能,请将 <code>brokerDeleteInactiveTopicsEnabled</code> 设置为 <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
 <p>关于这两个参数的更多信息,请参阅 <a href="/docs/zh-CN/next/reference-configuration#broker">这里</a>。</p>
 <p>可以通过以下方式创建非分区主题。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2165-tab-2166" class="nav-link active" data-group="group_2165" data-tab="tab-group-2165-content-2166">pulsar-admin</div><div id="tab-group-2165-tab-2167" class="nav-link" data-group="group_2165" data-tab="tab-group-2165-content-2167">REST API</div><div id="tab-group-2165-tab-2168" class="nav-link" data-group="group_2165" data-tab="tab-group-2165-content-2168">Java</div></div><div class="tab-content"><div id="tab-group-2165-conten [...]
@@ -582,7 +582,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </span></div></div><div id="tab-group-2173-content-2176" class="tab-pane" data-group="group_2173" tabindex="-1"><div><span><pre><code class="hljs css language-java">admin.topics().getList(namespace);<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="统计信息"></a><a href="#统计信息" 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-2.09V6 [...]
-<p>检查某个主题的当前统计数据。 The following is an example. 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
+<p>检查某个主题的当前统计数据。 如下所示: 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"msgRateIn"</span>: <span class="hljs-number">4641.528542257553</span>,
   <span class="hljs-attr">"msgThroughputIn"</span>: <span class="hljs-number">44663039.74947473</span>,
@@ -624,7 +624,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 <p>可以使用 Pulsar <a href="/docs/zh-CN/next/admin-api-overview">admin API</a> 来创建、更新、删除和检查分区主题的状态。</p>
 <h3><a class="anchor" aria-hidden="true" id="创建-1"></a><a href="#创建-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.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>必须明确创建分区主题。 当创建一个新的分区主题时,需要为该主题提供一个名称和分区数量。</p>
-<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 To disable this feature, set <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
+<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 仅用此功能,请将 <code>brokerDeleteInactiveTopicsEnabled</code> 设置为 <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
 <p>关于这两个参数的更多信息,请参阅 <a href="/docs/zh-CN/next/reference-configuration#broker">这里</a>。</p>
 <p>可以通过以下方式创建分区主题。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2181-tab-2182" class="nav-link active" data-group="group_2181" data-tab="tab-group-2181-content-2182">pulsar-admin</div><div id="tab-group-2181-tab-2183" class="nav-link" data-group="group_2181" data-tab="tab-group-2181-content-2183">REST API</div><div id="tab-group-2181-tab-2184" class="nav-link" data-group="group_2181" data-tab="tab-group-2181-content-2184">Java</div></div><div class="tab-content"><div id="tab-group-2181-conten [...]
@@ -637,7 +637,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </p>
 </span></div></div><div id="tab-group-2181-content-2184" class="tab-pane" data-group="group_2181" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topicName = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br /><span class="hljs-keyword">int</span> numPartitions = <span class="hljs-number">4</span>;<br />admin.topics().createPartitionedTopic(topicName, numPartitions);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="create-missed-partitions"></a><a href="#create-missed-partitions" 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-. [...]
+<h3><a class="anchor" aria-hidden="true" id="创建丢失的分区"></a><a href="#创建丢失的分区" 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- [...]
 <p>在主题的 auto-creation 是禁用状态并且有一个没有任何分区的主题时,可以使用 <a href="/docs/zh-CN/next/pulsar-admin#create-missed-partitions"><code>create-missed-partitions</code></a> 命令为主题创建分区。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2185-tab-2186" class="nav-link active" data-group="group_2185" data-tab="tab-group-2185-content-2186">pulsar-admin</div><div id="tab-group-2185-tab-2187" class="nav-link" data-group="group_2185" data-tab="tab-group-2185-content-2187">REST API</div><div id="tab-group-2185-tab-2188" class="nav-link" data-group="group_2185" data-tab="tab-group-2185-content-2188">Java</div></div><div class="tab-content"><div id="tab-group-2185-conten [...]
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin topics create-missed-partitions \</span><br />  persistent://my-tenant/my-namespace/my-topic \<br /></code></pre>
@@ -685,7 +685,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </span></div></div><div id="tab-group-2201-content-2204" class="tab-pane" data-group="group_2201" tabindex="-1"><div><span><pre><code class="hljs css language-java">admin.topics().getPartitionedTopicList(namespace);<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="统计信息-1"></a><a href="#统计信息-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.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p>可以查看某个主题的当前统计数据。 The following is an example. 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
+<p>可以查看某个主题的当前统计数据。 如下所示: 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
 <p>请注意,在订阅的 JSON 对象中, <code>chuckedMessageRate</code> 已被废弃。 请使用 <code>chunkedMessageRate</code>。 两者目前都将发送到 JSON 中。</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"msgRateIn"</span> : <span class="hljs-number">999.992947159793</span>,
@@ -744,8 +744,8 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </p>
 </span></div></div><div id="tab-group-2205-content-2208" class="tab-pane" data-group="group_2205" tabindex="-1"><div><span><pre><code class="hljs css language-java">admin.topics().getPartitionedStats(topic, <span class="hljs-keyword">true</span> <span class="hljs-comment">/* per partition */</span>, <span class="hljs-keyword">false</span> <span class="hljs-comment">/* is precise backlog */</span>);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="internal-stats"></a><a href="#internal-stats" 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- [...]
-<p>你可以检查主题的详细统计数据。 The following is an example. 有关每个统计信息的说明,详见<a href="#get-internal-stats">获取内部统计信息</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="内部统计"></a><a href="#内部统计" 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-2.09V6 [...]
+<p>你可以检查主题的详细统计数据。 如下所示: 有关每个统计信息的说明,详见<a href="#get-internal-stats">获取内部统计信息</a>。</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"entriesAddedCounter"</span>: <span class="hljs-number">20449518</span>,
   <span class="hljs-attr">"numberOfEntries"</span>: <span class="hljs-number">3233</span>,
@@ -790,10 +790,10 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 <h2><a class="anchor" aria-hidden="true" id="发布到分区主题"></a><a href="#发布到分区主题" 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- [...]
 <p>默认情况下,Pulsar 主题由单个 broker 提供服务,这限制了主题的最大吞吐量。 <em>分区主题</em>可以跨越多个 broker,从而实现更高的吞吐量。</p>
 <p>你可以使用 Pulsar 客户端库发布到分区主题。 发布到分区主题时,必须指定路由模式。 如果在创建新的生产者时没有指定任何路由方式,则使用轮询路由模式。</p>
-<h3><a class="anchor" aria-hidden="true" id="routing-mode"></a><a href="#routing-mode" 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>You can specify the routing mode in the ProducerConfiguration object that you use to configure your producer. The routing mode determines which partition(internal topic) that each message should be published to.</p>
-<p>The following <a href="https://pulsar.apache.org/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode">MessageRoutingMode</a>
- options are available.</p>
+<h3><a class="anchor" aria-hidden="true" id="路由模式"></a><a href="#路由模式" 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-2.09V6 [...]
+<p>可以在用于配置的 Producer Configuration 对象中指定路由模式确定你的 Producer。 路由模式决定每条消息应发布到哪个分区(内部主题)。</p>
+<p>以下<a href="https://pulsar.apache.org/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode">MessageRoutingMode</a>
+选项可供使用。</p>
 <table>
 <thead>
 <tr><th style="text-align:left">发送模式</th><th style="text-align:left">说明</th></tr>
@@ -816,7 +816,7 @@ Producer&lt;<span class="hljs-keyword">byte</span>[]&gt; producer = pulsarClient
         .create();
 producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBytes());
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="custom-message-router"></a><a href="#custom-message-router" 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="自定义消息路由"></a><a href="#自定义消息路由" 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- [...]
 <p>要使用自定义消息路由器,您需要提供<a href="https://pulsar.apache.org/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRouter">MessageRouter</a>
  接口的实现,该接口只有一个<code>choosePartition</code>方法:</p>
 <pre><code class="hljs css language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">MessageRouter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Serializable</span> </span>{
@@ -830,7 +830,7 @@ producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBy
     }
 }
 </code></pre>
-<p>With that implementation, you can send</p>
+<p>通过该实现,可以发送:</p>
 <pre><code class="hljs css language-java">String pulsarBrokerRootUrl = <span class="hljs-string">"pulsar://localhost:6650"</span>;
 String topic = <span class="hljs-string">"persistent://my-tenant/my-cluster-my-namespace/my-topic"</span>;
 
@@ -842,7 +842,7 @@ Producer&lt;<span class="hljs-keyword">byte</span>[]&gt; producer = pulsarClient
 producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBytes());
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="使用-key-时如何选择分区"></a><a href="#使用-key-时如何选择分区" 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- [...]
-<p>If a message has a key, it supersedes the round robin routing policy. The following example illustrates how to choose the partition when using a key.</p>
+<p>如果一条消息有一个 Key,它将取代循环路由策略。 下面示例说明当使用 key 时如何选择分区:</p>
 <pre><code class="hljs css language-java"><span class="hljs-comment">// 如果消息存在key,轮询路由策略将被替换</span>
         <span class="hljs-keyword">if</span> (msg.hasKey()) {
             <span class="hljs-keyword">return</span> signSafeMod(hash.makeHash(msg.getKey()), topicMetadata.numPartitions());
@@ -856,29 +856,29 @@ producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBy
 }
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="管理订阅"></a><a href="#管理订阅" 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-2.09V6 [...]
-<p>You can use <a href="/docs/zh-CN/next/admin-api-overview">Pulsar admin API</a> to create, check, and delete subscriptions.</p>
-<h3><a class="anchor" aria-hidden="true" id="create-subscription"></a><a href="#create-subscription" 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.2 [...]
+<p>您可以使用 <a href="/docs/zh-CN/next/admin-api-overview">Pulsar admin Apl</a> 创建、检查和删除订阅。</p>
+<h3><a class="anchor" aria-hidden="true" id="创建订阅"></a><a href="#创建订阅" 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-2.09V6 [...]
 <p>你可以使用以下方法之一为主题创建订阅。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2213-tab-2214" class="nav-link active" data-group="group_2213" data-tab="tab-group-2213-content-2214">pulsar-admin</div><div id="tab-group-2213-tab-2215" class="nav-link" data-group="group_2213" data-tab="tab-group-2213-content-2215">REST API</div><div id="tab-group-2213-tab-2216" class="nav-link" data-group="group_2213" data-tab="tab-group-2213-content-2216">Java</div></div><div class="tab-content"><div id="tab-group-2213-conten [...]
 </span></div></div><div id="tab-group-2213-content-2215" class="tab-pane" data-group="group_2213" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#operation/createSubscriptions?version=2.8.1&amp;apiVersion=v2"><b>PUT</b> <i>/admin/v2/persistent/:tenant/:namespace/:topic/subscription/:subscription</i></a>
 </p>
 </span></div></div><div id="tab-group-2213-content-2216" class="tab-pane" data-group="group_2213" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br />String subscriptionName = <span class="hljs-string">"my-subscription"</span>;<br />admin.topics().createSubscription(topic, subscriptionName, MessageId.latest);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="get-subscription"></a><a href="#get-subscription" 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. [...]
+<h3><a class="anchor" aria-hidden="true" id="获取订阅-1"></a><a href="#获取订阅-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.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>你可以使用以下方法之一检查给定主题的所有订阅名称。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2217-tab-2218" class="nav-link active" data-group="group_2217" data-tab="tab-group-2217-content-2218">pulsar-admin</div><div id="tab-group-2217-tab-2219" class="nav-link" data-group="group_2217" data-tab="tab-group-2217-content-2219">REST API</div><div id="tab-group-2217-tab-2220" class="nav-link" data-group="group_2217" data-tab="tab-group-2217-content-2220">Java</div></div><div class="tab-content"><div id="tab-group-2217-conten [...]
 </span></div></div><div id="tab-group-2217-content-2219" class="tab-pane" data-group="group_2217" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#operation/getSubscriptions?version=2.8.1&amp;apiVersion=v2"><b>GET</b> <i>/admin/v2/:schema/:tenant/:namespace/:topic/subscriptions</i></a>
 </p>
 </span></div></div><div id="tab-group-2217-content-2220" class="tab-pane" data-group="group_2217" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br />admin.topics().getSubscriptions(topic);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="unsubscribe-subscription"></a><a href="#unsubscribe-subscription" 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-. [...]
+<h3><a class="anchor" aria-hidden="true" id="取消订阅"></a><a href="#取消订阅" 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-2.09V6 [...]
 <p>当订阅不再处理消息时,你可以使用以下方法之一取消订阅。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2221-tab-2222" class="nav-link active" data-group="group_2221" data-tab="tab-group-2221-content-2222">pulsar-admin</div><div id="tab-group-2221-tab-2223" class="nav-link" data-group="group_2221" data-tab="tab-group-2221-content-2223">REST API</div><div id="tab-group-2221-tab-2224" class="nav-link" data-group="group_2221" data-tab="tab-group-2221-content-2224">Java</div></div><div class="tab-content"><div id="tab-group-2221-conten [...]
 </span></div></div><div id="tab-group-2221-content-2223" class="tab-pane" data-group="group_2221" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#operation/deleteSubscription?version=2.8.1&amp;apiVersion=v2"><b>DELETE</b> <i>/admin/v2/namespaces/:tenant/:namespace/:topic/subscription/:subscription</i></a>
 </p>
 </span></div></div><div id="tab-group-2221-content-2224" class="tab-pane" data-group="group_2221" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br />String subscriptionName = <span class="hljs-string">"my-subscription"</span>;<br />admin.topics().deleteSubscription(topic, subscriptionName);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-permissions"><span class="arrow-prev">← </span><span>权限管理</span></a><a class="docs-next button" href="/docs/zh-CN/next/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#管理主题资源">管理主题资源</a><ul class="toc-headings"><li><a href="#列出-topic">列出 topic</a></li><li><a href [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-permissions"><span class="arrow-prev">← </span><span>权限管理</span></a><a class="docs-next button" href="/docs/zh-CN/next/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#管理主题资源">管理主题资源</a><ul class="toc-headings"><li><a href="#列出-topic">列出 topic</a></li><li><a href [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/admin-api-topics/index.html b/content/docs/zh-CN/next/admin-api-topics/index.html
index ea2fa5f..a852d86 100644
--- a/content/docs/zh-CN/next/admin-api-topics/index.html
+++ b/content/docs/zh-CN/next/admin-api-topics/index.html
@@ -554,7 +554,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 <p>可以使用 Pulsar <a href="/docs/zh-CN/next/admin-api-overview">admin API</a> 来创建、删除和检查非分区主题的状态。</p>
 <h3><a class="anchor" aria-hidden="true" id="创建"></a><a href="#创建" 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-2.09V6.25c [...]
 <p>必须明确创建非分区主题。 当创建一个新的非分区主题时,需要为该主题提供一个名称。</p>
-<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 To disable this feature, set <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
+<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 禁用此功能,请将 <code>brokerDeleteInactiveTopicsEnabled</code> 设置为 <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
 <p>关于这两个参数的更多信息,请参阅 <a href="/docs/zh-CN/next/reference-configuration#broker">这里</a>。</p>
 <p>可以通过以下方式创建非分区主题。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2165-tab-2166" class="nav-link active" data-group="group_2165" data-tab="tab-group-2165-content-2166">pulsar-admin</div><div id="tab-group-2165-tab-2167" class="nav-link" data-group="group_2165" data-tab="tab-group-2165-content-2167">REST API</div><div id="tab-group-2165-tab-2168" class="nav-link" data-group="group_2165" data-tab="tab-group-2165-content-2168">Java</div></div><div class="tab-content"><div id="tab-group-2165-conten [...]
@@ -582,7 +582,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </span></div></div><div id="tab-group-2173-content-2176" class="tab-pane" data-group="group_2173" tabindex="-1"><div><span><pre><code class="hljs css language-java">admin.topics().getList(namespace);<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="统计信息"></a><a href="#统计信息" 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-2.09V6 [...]
-<p>检查某个主题的当前统计数据。 The following is an example. 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
+<p>检查某个主题的当前统计数据。 如下所示: 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"msgRateIn"</span>: <span class="hljs-number">4641.528542257553</span>,
   <span class="hljs-attr">"msgThroughputIn"</span>: <span class="hljs-number">44663039.74947473</span>,
@@ -624,7 +624,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 <p>可以使用 Pulsar <a href="/docs/zh-CN/next/admin-api-overview">admin API</a> 来创建、更新、删除和检查分区主题的状态。</p>
 <h3><a class="anchor" aria-hidden="true" id="创建-1"></a><a href="#创建-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.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>必须明确创建分区主题。 当创建一个新的分区主题时,需要为该主题提供一个名称和分区数量。</p>
-<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 To disable this feature, set <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
+<p>默认情况下,创建 60 秒后,主题会被视为不活跃,并自动删除,以避免生成垃圾数据。 仅用此功能,请将 <code>brokerDeleteInactiveTopicsEnabled</code> 设置为 <code>false</code>. 设置 <code>brokerDeleteInactiveTopicsFrequencySeconds</code> 为特殊值以改变检查非活动主题的频率。</p>
 <p>关于这两个参数的更多信息,请参阅 <a href="/docs/zh-CN/next/reference-configuration#broker">这里</a>。</p>
 <p>可以通过以下方式创建分区主题。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2181-tab-2182" class="nav-link active" data-group="group_2181" data-tab="tab-group-2181-content-2182">pulsar-admin</div><div id="tab-group-2181-tab-2183" class="nav-link" data-group="group_2181" data-tab="tab-group-2181-content-2183">REST API</div><div id="tab-group-2181-tab-2184" class="nav-link" data-group="group_2181" data-tab="tab-group-2181-content-2184">Java</div></div><div class="tab-content"><div id="tab-group-2181-conten [...]
@@ -637,7 +637,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </p>
 </span></div></div><div id="tab-group-2181-content-2184" class="tab-pane" data-group="group_2181" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topicName = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br /><span class="hljs-keyword">int</span> numPartitions = <span class="hljs-number">4</span>;<br />admin.topics().createPartitionedTopic(topicName, numPartitions);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="create-missed-partitions"></a><a href="#create-missed-partitions" 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-. [...]
+<h3><a class="anchor" aria-hidden="true" id="创建丢失的分区"></a><a href="#创建丢失的分区" 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- [...]
 <p>在主题的 auto-creation 是禁用状态并且有一个没有任何分区的主题时,可以使用 <a href="/docs/zh-CN/next/pulsar-admin#create-missed-partitions"><code>create-missed-partitions</code></a> 命令为主题创建分区。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2185-tab-2186" class="nav-link active" data-group="group_2185" data-tab="tab-group-2185-content-2186">pulsar-admin</div><div id="tab-group-2185-tab-2187" class="nav-link" data-group="group_2185" data-tab="tab-group-2185-content-2187">REST API</div><div id="tab-group-2185-tab-2188" class="nav-link" data-group="group_2185" data-tab="tab-group-2185-content-2188">Java</div></div><div class="tab-content"><div id="tab-group-2185-conten [...]
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin topics create-missed-partitions \</span><br />  persistent://my-tenant/my-namespace/my-topic \<br /></code></pre>
@@ -685,7 +685,7 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </span></div></div><div id="tab-group-2201-content-2204" class="tab-pane" data-group="group_2201" tabindex="-1"><div><span><pre><code class="hljs css language-java">admin.topics().getPartitionedTopicList(namespace);<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="统计信息-1"></a><a href="#统计信息-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.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p>可以查看某个主题的当前统计数据。 The following is an example. 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
+<p>可以查看某个主题的当前统计数据。 如下所示: 关于每个统计数据的描述,参见 <a href="#get-stats">get stats</a>。</p>
 <p>请注意,在订阅的 JSON 对象中, <code>chuckedMessageRate</code> 已被废弃。 请使用 <code>chunkedMessageRate</code>。 两者目前都将发送到 JSON 中。</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"msgRateIn"</span> : <span class="hljs-number">999.992947159793</span>,
@@ -744,8 +744,8 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 </p>
 </span></div></div><div id="tab-group-2205-content-2208" class="tab-pane" data-group="group_2205" tabindex="-1"><div><span><pre><code class="hljs css language-java">admin.topics().getPartitionedStats(topic, <span class="hljs-keyword">true</span> <span class="hljs-comment">/* per partition */</span>, <span class="hljs-keyword">false</span> <span class="hljs-comment">/* is precise backlog */</span>);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="internal-stats"></a><a href="#internal-stats" 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- [...]
-<p>你可以检查主题的详细统计数据。 The following is an example. 有关每个统计信息的说明,详见<a href="#get-internal-stats">获取内部统计信息</a>。</p>
+<h3><a class="anchor" aria-hidden="true" id="内部统计"></a><a href="#内部统计" 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-2.09V6 [...]
+<p>你可以检查主题的详细统计数据。 如下所示: 有关每个统计信息的说明,详见<a href="#get-internal-stats">获取内部统计信息</a>。</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"entriesAddedCounter"</span>: <span class="hljs-number">20449518</span>,
   <span class="hljs-attr">"numberOfEntries"</span>: <span class="hljs-number">3233</span>,
@@ -790,10 +790,10 @@ REST API 中 <code>:schema</code> 分为 persistent(持久化)和 non-persis
 <h2><a class="anchor" aria-hidden="true" id="发布到分区主题"></a><a href="#发布到分区主题" 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- [...]
 <p>默认情况下,Pulsar 主题由单个 broker 提供服务,这限制了主题的最大吞吐量。 <em>分区主题</em>可以跨越多个 broker,从而实现更高的吞吐量。</p>
 <p>你可以使用 Pulsar 客户端库发布到分区主题。 发布到分区主题时,必须指定路由模式。 如果在创建新的生产者时没有指定任何路由方式,则使用轮询路由模式。</p>
-<h3><a class="anchor" aria-hidden="true" id="routing-mode"></a><a href="#routing-mode" 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>You can specify the routing mode in the ProducerConfiguration object that you use to configure your producer. The routing mode determines which partition(internal topic) that each message should be published to.</p>
-<p>The following <a href="https://pulsar.apache.org/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode">MessageRoutingMode</a>
- options are available.</p>
+<h3><a class="anchor" aria-hidden="true" id="路由模式"></a><a href="#路由模式" 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-2.09V6 [...]
+<p>可以在用于配置的 Producer Configuration 对象中指定路由模式确定你的 Producer。 路由模式决定每条消息应发布到哪个分区(内部主题)。</p>
+<p>以下<a href="https://pulsar.apache.org/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode">MessageRoutingMode</a>
+选项可供使用。</p>
 <table>
 <thead>
 <tr><th style="text-align:left">发送模式</th><th style="text-align:left">说明</th></tr>
@@ -816,7 +816,7 @@ Producer&lt;<span class="hljs-keyword">byte</span>[]&gt; producer = pulsarClient
         .create();
 producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBytes());
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="custom-message-router"></a><a href="#custom-message-router" 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="自定义消息路由"></a><a href="#自定义消息路由" 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- [...]
 <p>要使用自定义消息路由器,您需要提供<a href="https://pulsar.apache.org/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRouter">MessageRouter</a>
  接口的实现,该接口只有一个<code>choosePartition</code>方法:</p>
 <pre><code class="hljs css language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">MessageRouter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Serializable</span> </span>{
@@ -830,7 +830,7 @@ producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBy
     }
 }
 </code></pre>
-<p>With that implementation, you can send</p>
+<p>通过该实现,可以发送:</p>
 <pre><code class="hljs css language-java">String pulsarBrokerRootUrl = <span class="hljs-string">"pulsar://localhost:6650"</span>;
 String topic = <span class="hljs-string">"persistent://my-tenant/my-cluster-my-namespace/my-topic"</span>;
 
@@ -842,7 +842,7 @@ Producer&lt;<span class="hljs-keyword">byte</span>[]&gt; producer = pulsarClient
 producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBytes());
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="使用-key-时如何选择分区"></a><a href="#使用-key-时如何选择分区" 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- [...]
-<p>If a message has a key, it supersedes the round robin routing policy. The following example illustrates how to choose the partition when using a key.</p>
+<p>如果一条消息有一个 Key,它将取代循环路由策略。 下面示例说明当使用 key 时如何选择分区:</p>
 <pre><code class="hljs css language-java"><span class="hljs-comment">// 如果消息存在key,轮询路由策略将被替换</span>
         <span class="hljs-keyword">if</span> (msg.hasKey()) {
             <span class="hljs-keyword">return</span> signSafeMod(hash.makeHash(msg.getKey()), topicMetadata.numPartitions());
@@ -856,29 +856,29 @@ producer.send(<span class="hljs-string">"Partitioned topic message"</span>.getBy
 }
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="管理订阅"></a><a href="#管理订阅" 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-2.09V6 [...]
-<p>You can use <a href="/docs/zh-CN/next/admin-api-overview">Pulsar admin API</a> to create, check, and delete subscriptions.</p>
-<h3><a class="anchor" aria-hidden="true" id="create-subscription"></a><a href="#create-subscription" 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.2 [...]
+<p>您可以使用 <a href="/docs/zh-CN/next/admin-api-overview">Pulsar admin Apl</a> 创建、检查和删除订阅。</p>
+<h3><a class="anchor" aria-hidden="true" id="创建订阅"></a><a href="#创建订阅" 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-2.09V6 [...]
 <p>你可以使用以下方法之一为主题创建订阅。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2213-tab-2214" class="nav-link active" data-group="group_2213" data-tab="tab-group-2213-content-2214">pulsar-admin</div><div id="tab-group-2213-tab-2215" class="nav-link" data-group="group_2213" data-tab="tab-group-2213-content-2215">REST API</div><div id="tab-group-2213-tab-2216" class="nav-link" data-group="group_2213" data-tab="tab-group-2213-content-2216">Java</div></div><div class="tab-content"><div id="tab-group-2213-conten [...]
 </span></div></div><div id="tab-group-2213-content-2215" class="tab-pane" data-group="group_2213" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#operation/createSubscriptions?version=2.8.1&amp;apiVersion=v2"><b>PUT</b> <i>/admin/v2/persistent/:tenant/:namespace/:topic/subscription/:subscription</i></a>
 </p>
 </span></div></div><div id="tab-group-2213-content-2216" class="tab-pane" data-group="group_2213" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br />String subscriptionName = <span class="hljs-string">"my-subscription"</span>;<br />admin.topics().createSubscription(topic, subscriptionName, MessageId.latest);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="get-subscription"></a><a href="#get-subscription" 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. [...]
+<h3><a class="anchor" aria-hidden="true" id="获取订阅-1"></a><a href="#获取订阅-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.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>你可以使用以下方法之一检查给定主题的所有订阅名称。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2217-tab-2218" class="nav-link active" data-group="group_2217" data-tab="tab-group-2217-content-2218">pulsar-admin</div><div id="tab-group-2217-tab-2219" class="nav-link" data-group="group_2217" data-tab="tab-group-2217-content-2219">REST API</div><div id="tab-group-2217-tab-2220" class="nav-link" data-group="group_2217" data-tab="tab-group-2217-content-2220">Java</div></div><div class="tab-content"><div id="tab-group-2217-conten [...]
 </span></div></div><div id="tab-group-2217-content-2219" class="tab-pane" data-group="group_2217" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#operation/getSubscriptions?version=2.8.1&amp;apiVersion=v2"><b>GET</b> <i>/admin/v2/:schema/:tenant/:namespace/:topic/subscriptions</i></a>
 </p>
 </span></div></div><div id="tab-group-2217-content-2220" class="tab-pane" data-group="group_2217" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br />admin.topics().getSubscriptions(topic);<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="unsubscribe-subscription"></a><a href="#unsubscribe-subscription" 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-. [...]
+<h3><a class="anchor" aria-hidden="true" id="取消订阅"></a><a href="#取消订阅" 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-2.09V6 [...]
 <p>当订阅不再处理消息时,你可以使用以下方法之一取消订阅。</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-2221-tab-2222" class="nav-link active" data-group="group_2221" data-tab="tab-group-2221-content-2222">pulsar-admin</div><div id="tab-group-2221-tab-2223" class="nav-link" data-group="group_2221" data-tab="tab-group-2221-content-2223">REST API</div><div id="tab-group-2221-tab-2224" class="nav-link" data-group="group_2221" data-tab="tab-group-2221-content-2224">Java</div></div><div class="tab-content"><div id="tab-group-2221-conten [...]
 </span></div></div><div id="tab-group-2221-content-2223" class="tab-pane" data-group="group_2221" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#operation/deleteSubscription?version=2.8.1&amp;apiVersion=v2"><b>DELETE</b> <i>/admin/v2/namespaces/:tenant/:namespace/:topic/subscription/:subscription</i></a>
 </p>
 </span></div></div><div id="tab-group-2221-content-2224" class="tab-pane" data-group="group_2221" tabindex="-1"><div><span><pre><code class="hljs css language-java">String topic = <span class="hljs-string">"persistent://my-tenant/my-namespace/my-topic"</span>;<br />String subscriptionName = <span class="hljs-string">"my-subscription"</span>;<br />admin.topics().deleteSubscription(topic, subscriptionName);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-permissions"><span class="arrow-prev">← </span><span>权限管理</span></a><a class="docs-next button" href="/docs/zh-CN/next/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#管理主题资源">管理主题资源</a><ul class="toc-headings"><li><a href="#列出-topic">列出 topic</a></li><li><a href [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/admin-api-permissions"><span class="arrow-prev">← </span><span>权限管理</span></a><a class="docs-next button" href="/docs/zh-CN/next/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#管理主题资源">管理主题资源</a><ul class="toc-headings"><li><a href="#列出-topic">列出 topic</a></li><li><a href [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/develop-binary-protocol.html b/content/docs/zh-CN/next/develop-binary-protocol.html
index 6b4f0ce..e945be4 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol.html
@@ -136,6 +136,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">可选</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="消息元数据"></a><a href="#消息元数据" 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-2.09 [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/zh-CN/next/develop-binary-protocol/index.html b/content/docs/zh-CN/next/develop-binary-protocol/index.html
index 6b4f0ce..e945be4 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol/index.html
@@ -136,6 +136,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">可选</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/zh-CN/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="消息元数据"></a><a href="#消息元数据" 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-2.09 [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/zh-CN/next/reference-configuration.html b/content/docs/zh-CN/next/reference-configuration.html
index d77a160..0f0fae6 100644
--- a/content/docs/zh-CN/next/reference-configuration.html
+++ b/content/docs/zh-CN/next/reference-configuration.html
@@ -235,158 +235,159 @@ Instead, you can set a subscription expiration time for each <strong>命名空
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore 类型配置。</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>您可以在 <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> 文件中设置日志级别和配置。 以下日志配置参数是可用的:</p>
-<table>
-<thead>
-<tr><th>配置项</th><th>默认值</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>注意:log4j2.appender 中的“topic”是可配置的。 - 如果你想要将所有日志追加到单个主题,请设置相同的主题名称。 - 如果你想要将日志追加到不同的主题,你可以设置不同的主题名称。</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>配置项</th><th>默认值</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>配置项</th><th>说明</th><th>默认值</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper 缓存过期时间(秒)</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-代理"></a><a href="#pulsar-代理" 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 <a href="/docs/zh-CN/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | 配置项                       | 说明                                                                                                                                                                                                                                                                                         | 默认值            |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | tick 是 Zookeeper 基本的时间单位,以毫秒为单位。用于处理心跳和超时,tickTime 是单个tick的长度。                                                                                                                                                                                                                             | 2000           |
-          | initLimit                 | Zookeeper leader 服务器允许 follower 服务器成功连接和同步的最大时间。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                                | 10             |
-          | syncLimit                 | Zookeeper follower 服务器允许从其他 Zookeeper 服务器同步的最大耗时。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                               | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | ZooKeeper 中自动清理决定了在 autopurge.purgeInterval 参数设定的时间间隔内,存储在 dataDir 中的数据库快照数(其他快照会被删除)。                                                                                                                                                                                                     | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | 是              |
-          | maxClientCnxns            | 客户端连接的最大数量,如果你需要处理更多的 Zookeeper 客户端,就需要增加这个配置项的值。                                                                                                                                                                                                                                          | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar 命令行工具</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#clie [...]
+<pre><code class="hljs">    示例  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    示例  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/zh-CN/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore 类型配置。 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            您可以在 [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) 文件中设置日志级别和配置。 以下日志配置参数是可用的:
+            
+            | 配置项                                                 | 默认值                                             |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; 注意:log4j2.appender 中的“topic”是可配置的。 - 如果你想要将所有日志追加到单个主题,请设置相同的主题名称。 - 如果你想要将日志追加到不同的主题,你可以设置不同的主题名称。
+            
+            ## Log4j shell
+            
+            | 配置项                                                   | 默认值                              |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | 配置项                                  | 说明                  | 默认值     |
+                                    | ------------------------------------ | ------------------- | ------- |
+                                    | configurationStoreServers            |                     |         |
+                                    | zooKeeperSessionTimeoutMillis        |                     | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper 缓存过期时间(秒) | 300     |
+                                    | serviceUrl                           |                     |         |
+                                    | serviceUrlTls                        |                     |         |
+                                    | brokerServiceUrl                     |                     |         |
+                                    | brokerServiceUrlTls                  |                     |         |
+                                    | webServicePort                       |                     | 8080    |
+                                    | webServicePortTls                    |                     | 8443    |
+                                    | bindAddress                          |                     | 0.0.0.0 |
+                                    | clusterName                          |                     |         |
+                                    | authenticationEnabled                |                     | false   |
+                                    | authenticationProviders              |                     |         |
+                                    | authorizationEnabled                 |                     | false   |
+                                    | superUserRoles                       |                     |         |
+                                    | brokerClientAuthenticationPlugin     |                     |         |
+                                    | brokerClientAuthenticationParameters |                     |         |
+                                    | tlsEnabled                           |                     | false   |
+                                    | tlsAllowInsecureConnection           |                     | false   |
+                                    | tlsCertificateFilePath               |                     |         |
+                                    | tlsKeyFilePath                       |                     |         |
+                                    | tlsTrustCertsFilePath                |                     |         |
+                                    
+                                    ## Pulsar 代理
+                                    
+                                    The [Pulsar proxy](/docs/zh-CN/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | 配置项                       | 说明                                                                                                                                                                                                                                                                                         | 默认值            |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | tick 是 Zookeeper 基本的时间单位,以毫秒为单位。用于处理心跳和超时,tickTime 是单个tick的长度。                                                                                                                                                                                                                             | 2000           |
+                                                | initLimit                 | Zookeeper leader 服务器允许 follower 服务器成功连接和同步的最大时间。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                                | 10             |
+                                                | syncLimit                 | Zookeeper follower 服务器允许从其他 Zookeeper 服务器同步的最大耗时。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                               | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | ZooKeeper 中自动清理决定了在 autopurge.purgeInterval 参数设定的时间间隔内,存储在 dataDir 中的数据库快照数(其他快照会被删除)。                                                                                                                                                                                                     | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | 是              |
+                                                | maxClientCnxns            | 客户端连接的最大数量,如果你需要处理更多的 Zookeeper 客户端,就需要增加这个配置项的值。                                                                                                                                                                                                                                          | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar 命令行工具</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div>< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/reference-configuration/index.html b/content/docs/zh-CN/next/reference-configuration/index.html
index d77a160..0f0fae6 100644
--- a/content/docs/zh-CN/next/reference-configuration/index.html
+++ b/content/docs/zh-CN/next/reference-configuration/index.html
@@ -235,158 +235,159 @@ Instead, you can set a subscription expiration time for each <strong>命名空
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore 类型配置。</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>您可以在 <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> 文件中设置日志级别和配置。 以下日志配置参数是可用的:</p>
-<table>
-<thead>
-<tr><th>配置项</th><th>默认值</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>注意:log4j2.appender 中的“topic”是可配置的。 - 如果你想要将所有日志追加到单个主题,请设置相同的主题名称。 - 如果你想要将日志追加到不同的主题,你可以设置不同的主题名称。</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>配置项</th><th>默认值</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>配置项</th><th>说明</th><th>默认值</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper 缓存过期时间(秒)</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-代理"></a><a href="#pulsar-代理" 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 <a href="/docs/zh-CN/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | 配置项                       | 说明                                                                                                                                                                                                                                                                                         | 默认值            |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | tick 是 Zookeeper 基本的时间单位,以毫秒为单位。用于处理心跳和超时,tickTime 是单个tick的长度。                                                                                                                                                                                                                             | 2000           |
-          | initLimit                 | Zookeeper leader 服务器允许 follower 服务器成功连接和同步的最大时间。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                                | 10             |
-          | syncLimit                 | Zookeeper follower 服务器允许从其他 Zookeeper 服务器同步的最大耗时。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                               | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | ZooKeeper 中自动清理决定了在 autopurge.purgeInterval 参数设定的时间间隔内,存储在 dataDir 中的数据库快照数(其他快照会被删除)。                                                                                                                                                                                                     | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | 是              |
-          | maxClientCnxns            | 客户端连接的最大数量,如果你需要处理更多的 Zookeeper 客户端,就需要增加这个配置项的值。                                                                                                                                                                                                                                          | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar 命令行工具</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="#clie [...]
+<pre><code class="hljs">    示例  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    示例  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/zh-CN/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore 类型配置。 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            您可以在 [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) 文件中设置日志级别和配置。 以下日志配置参数是可用的:
+            
+            | 配置项                                                 | 默认值                                             |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; 注意:log4j2.appender 中的“topic”是可配置的。 - 如果你想要将所有日志追加到单个主题,请设置相同的主题名称。 - 如果你想要将日志追加到不同的主题,你可以设置不同的主题名称。
+            
+            ## Log4j shell
+            
+            | 配置项                                                   | 默认值                              |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | 配置项                                  | 说明                  | 默认值     |
+                                    | ------------------------------------ | ------------------- | ------- |
+                                    | configurationStoreServers            |                     |         |
+                                    | zooKeeperSessionTimeoutMillis        |                     | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper 缓存过期时间(秒) | 300     |
+                                    | serviceUrl                           |                     |         |
+                                    | serviceUrlTls                        |                     |         |
+                                    | brokerServiceUrl                     |                     |         |
+                                    | brokerServiceUrlTls                  |                     |         |
+                                    | webServicePort                       |                     | 8080    |
+                                    | webServicePortTls                    |                     | 8443    |
+                                    | bindAddress                          |                     | 0.0.0.0 |
+                                    | clusterName                          |                     |         |
+                                    | authenticationEnabled                |                     | false   |
+                                    | authenticationProviders              |                     |         |
+                                    | authorizationEnabled                 |                     | false   |
+                                    | superUserRoles                       |                     |         |
+                                    | brokerClientAuthenticationPlugin     |                     |         |
+                                    | brokerClientAuthenticationParameters |                     |         |
+                                    | tlsEnabled                           |                     | false   |
+                                    | tlsAllowInsecureConnection           |                     | false   |
+                                    | tlsCertificateFilePath               |                     |         |
+                                    | tlsKeyFilePath                       |                     |         |
+                                    | tlsTrustCertsFilePath                |                     |         |
+                                    
+                                    ## Pulsar 代理
+                                    
+                                    The [Pulsar proxy](/docs/zh-CN/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | 配置项                       | 说明                                                                                                                                                                                                                                                                                         | 默认值            |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | tick 是 Zookeeper 基本的时间单位,以毫秒为单位。用于处理心跳和超时,tickTime 是单个tick的长度。                                                                                                                                                                                                                             | 2000           |
+                                                | initLimit                 | Zookeeper leader 服务器允许 follower 服务器成功连接和同步的最大时间。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                                | 10             |
+                                                | syncLimit                 | Zookeeper follower 服务器允许从其他 Zookeeper 服务器同步的最大耗时。使用 tickTime 参数为时间刻度,以毫秒为单位。                                                                                                                                                                                                               | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | ZooKeeper 中自动清理决定了在 autopurge.purgeInterval 参数设定的时间间隔内,存储在 dataDir 中的数据库快照数(其他快照会被删除)。                                                                                                                                                                                                     | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | 是              |
+                                                | maxClientCnxns            | 客户端连接的最大数量,如果你需要处理更多的 Zookeeper 客户端,就需要增加这个配置项的值。                                                                                                                                                                                                                                          | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar 命令行工具</span></a><a class="docs-next button" href="/docs/zh-CN/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></div>< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/admin-api-packages.html b/content/docs/zh-TW/next/admin-api-packages.html
index ae8b380..d1c730e 100644
--- a/content/docs/zh-TW/next/admin-api-packages.html
+++ b/content/docs/zh-TW/next/admin-api-packages.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" 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>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1290-tab-1291" class="nav-link active" data-group="group_1290" data-tab="tab-group-1290-content-1291">pulsar-admin</div><div id="tab-group-1290-tab-1292" class="nav-link" data-group="group_1290" data-tab="tab-group-1290-content-1292">REST API</div><div id="tab-group-1290-tab-1293" class="nav-link" data-group="group_1290" data-tab="tab-group-1290-content-1293">JAVA</div></div><div class="tab-content"><div id="tab-group-1290-conten [...]
-</span></div></div><div id="tab-group-1290-content-1292" class="tab-pane" data-group="group_1290" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1290-content-1292" class="tab-pane" data-group="group_1290" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1290-content-1293" class="tab-pane" data-group="group_1290" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1294-tab-1295" class="nav-link active" data-group="group_1294" data-tab="tab-group-1294-content-1295">pulsar-admin</div><div id="tab-group-1294-tab-1296" class="nav-link" data-group="group_1294" data-tab="tab-group-1294-content-1296">REST API</div><div id="tab-group-1294-tab-1297" class="nav-link" data-group="group_1294" data-tab="tab-group-1294-content-1297">JAVA</div></div><div class="tab-content"><div id="tab-group-1294-conten [...]
-</span></div></div><div id="tab-group-1294-content-1296" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1294-content-1296" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1294-content-1297" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1294-content-1297" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1298-tab-1299" class="nav-link active" data-group="group_1298" data-tab="tab-group-1298-content-1299">pulsar-admin</div><div id="tab-group-1298-tab-1300" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1300">REST API</div><div id="tab-group-1298-tab-1301" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1301">JAVA</div></div><div class="tab-content"><div id="tab-group-1298-conten [...]
-</span></div></div><div id="tab-group-1298-content-1300" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1298-tab-1299" class="nav-link active" data-group="group_1298" data-tab="tab-group-1298-content-1299">pulsar-admin</div><div id="tab-group-1298-tab-1300" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1300">REST API</div><div id="tab-group-1298-tab-1301" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1301">JAVA</div></div><div class="tab-content"><div id="tab-group-1298-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1298-content-1300" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1298-content-1301" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1302-tab-1303" class="nav-link active" data-group="group_1302" data-tab="tab-group-1302-content-1303">pulsar-admin</div><div id="tab-group-1302-tab-1304" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1304">REST API</div><div id="tab-group-1302-tab-1305" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1305">JAVA</div></div><div class="tab-content"><div id="tab-group-1302-conten [...]
-</span></div></div><div id="tab-group-1302-content-1304" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1302-content-1305" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1298-content-1301" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1306-tab-1307" class="nav-link active" data-group="group_1306" data-tab="tab-group-1306-content-1307">pulsar-admin</div><div id="tab-group-1306-tab-1308" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1308">REST API</div><div id="tab-group-1306-tab-1309" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1309">JAVA</div></div><div class="tab-content"><div id="tab-group-1306-conten [...]
-</span></div></div><div id="tab-group-1306-content-1308" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1302-tab-1303" class="nav-link active" data-group="group_1302" data-tab="tab-group-1302-content-1303">pulsar-admin</div><div id="tab-group-1302-tab-1304" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1304">REST API</div><div id="tab-group-1302-tab-1305" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1305">JAVA</div></div><div class="tab-content"><div id="tab-group-1302-conten [...]
+</span></div></div><div id="tab-group-1302-content-1304" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1306-content-1309" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1302-content-1305" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1310-tab-1311" class="nav-link active" data-group="group_1310" data-tab="tab-group-1310-content-1311">pulsar-admin</div><div id="tab-group-1310-tab-1312" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1312">REST API</div><div id="tab-group-1310-tab-1313" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1313">JAVA</div></div><div class="tab-content"><div id="tab-group-1310-conten [...]
-</span></div></div><div id="tab-group-1310-content-1312" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1306-tab-1307" class="nav-link active" data-group="group_1306" data-tab="tab-group-1306-content-1307">pulsar-admin</div><div id="tab-group-1306-tab-1308" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1308">REST API</div><div id="tab-group-1306-tab-1309" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1309">JAVA</div></div><div class="tab-content"><div id="tab-group-1306-conten [...]
+</span></div></div><div id="tab-group-1306-content-1308" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1310-content-1313" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1306-content-1309" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1314-tab-1315" class="nav-link active" data-group="group_1314" data-tab="tab-group-1314-content-1315">pulsar-admin</div><div id="tab-group-1314-tab-1316" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1316">REST API</div><div id="tab-group-1314-tab-1317" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1317">JAVA</div></div><div class="tab-content"><div id="tab-group-1314-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1314-content-1316" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1310-tab-1311" class="nav-link active" data-group="group_1310" data-tab="tab-group-1310-content-1311">pulsar-admin</div><div id="tab-group-1310-tab-1312" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1312">REST API</div><div id="tab-group-1310-tab-1313" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1313">JAVA</div></div><div class="tab-content"><div id="tab-group-1310-conten [...]
+</span></div></div><div id="tab-group-1310-content-1312" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1314-content-1317" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1310-content-1313" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1314-tab-1315" class="nav-link active" data-group="group_1314" data-tab="tab-group-1314-content-1315">pulsar-admin</div><div id="tab-group-1314-tab-1316" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1316">REST API</div><div id="tab-group-1314-tab-1317" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1317">JAVA</div></div><div class="tab-content"><div id="tab-group-1314-conten [...]
+</span></div></div><div id="tab-group-1314-content-1316" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1314-content-1317" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-TW/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-TW/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/admin-api-packages/index.html b/content/docs/zh-TW/next/admin-api-packages/index.html
index ae8b380..d1c730e 100644
--- a/content/docs/zh-TW/next/admin-api-packages/index.html
+++ b/content/docs/zh-TW/next/admin-api-packages/index.html
@@ -78,136 +78,127 @@
 <p><strong>Important</strong></p>
 <p>This page only shows <strong>some frequently used operations</strong>.</p>
 <ul>
-<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
+<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a>.</p></li>
 <li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
  API doc.</p></li>
 <li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.8.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
 </ul>
 </blockquote>
-<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" 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>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
+<p>Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant- and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).</p>
+<h2><a class="anchor" aria-hidden="true" id="what-is-a-package"></a><a href="#what-is-a-package" 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- [...]
+<p>A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.</p>
+<p>The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.</p>
 <table>
 <thead>
-<tr><th>Part</th><th>Description</th></tr>
+<tr><th>Metadata</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
-<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
-<tr><td><code>version</code></td><td>The version of the package.</td></tr>
+<tr><td>description</td><td>The description of the package.</td></tr>
+<tr><td>contact</td><td>The contact information of a package. For example, an email address of the developer team.</td></tr>
+<tr><td>create_time</td><td>The time when the package is created.</td></tr>
+<tr><td>modification_time</td><td>The time when the package is lastly modified.</td></tr>
+<tr><td>properties</td><td>A user-defined key/value map to store other information.</td></tr>
 </tbody>
 </table>
-<p>The following is a code sample.</p>
-<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
-   <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
-}
-
-<span class="hljs-keyword">enum</span> PackageType {
-   FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
-}
-
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" 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>A package is located using a URL. The package URL is written in the following format:</p>
-<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
-</code></pre>
-<p>The following are package URL examples:</p>
-<p><code>sink://public/default/mysql-sink@1.0</code>   <br>
-<code>function://my-tenant/my-ns/my-function@0.1</code>   <br>
-<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
-<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
+<h2><a class="anchor" aria-hidden="true" id="how-to-use-a-package"></a><a href="#how-to-use-a-package" 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 [...]
+<p>Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:</p>
+<ol>
+<li><p>Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.</p>
 <table>
 <thead>
-<tr><th>metadata</th><th>Description</th></tr>
+<tr><th>Component</th><th>Description</th></tr>
 </thead>
 <tbody>
-<tr><td>description</td><td>The description of the package.</td></tr>
-<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
-<tr><td>create_time</td><td>The time when the package is created.</td></tr>
-<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
-<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
+<tr><td>type</td><td>Specify one of the supported package types: function, sink and source.</td></tr>
+<tr><td>tenant</td><td>Specify the tenant where you want to create the package.</td></tr>
+<tr><td>namespace</td><td>Specify the namespace where you want to create the package.</td></tr>
+<tr><td>name</td><td>Specify the complete name of the package, using the format <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
+<tr><td>version</td><td>Specify the version of the package using the format <code>MajorVerion.MinorVersion</code> in numerals.</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" 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>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
-<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" 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- [...]
-<p>You can use the package management with command line tools, REST API and Java client.</p>
+<p>The information you provide creates a URL for a package, in the format <code>&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;/&lt;version&gt;</code>.</p></li>
+<li><p>Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.</p></li>
+<li><p>Apply permissions to this package from various namespaces.</p></li>
+</ol>
+<p>Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,</p>
+<pre><code class="hljs">sink:<span class="hljs-regexp">//</span>public<span class="hljs-regexp">/default/my</span>sql-sink@<span class="hljs-number">1.0</span>
+<span class="hljs-keyword">function</span>:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>-<span class="hljs-keyword">function</span>@<span class="hljs-number">0.1</span>
+source:<span class="hljs-regexp">//my</span>-tenant<span class="hljs-regexp">/my-ns/my</span>sql-cdc-source@<span class="hljs-number">2.3</span>
+</code></pre>
+<h2><a class="anchor" aria-hidden="true" id="package-management-in-pulsar"></a><a href="#package-management-in-pulsar" 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 [...]
+<p>You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to <a href="#upload-a-package">upload</a>, <a href="#download-a-package">download</a>, and <a href="#delete-a-package">delete</a> a package, <a href="#get-the-metadata-of-a-package">get the metadata</a> and <a href="#update-the-metadata-of-a-package">update the metadata</a> of a package, <a href="#list-all-versions-of-a-package">get th [...]
 <h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" 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. [...]
-<p>You can upload a package to the package management service in the following ways.</p>
+<p>You can use the following commands to upload a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1290-tab-1291" class="nav-link active" data-group="group_1290" data-tab="tab-group-1290-content-1291">pulsar-admin</div><div id="tab-group-1290-tab-1292" class="nav-link" data-group="group_1290" data-tab="tab-group-1290-content-1292">REST API</div><div id="tab-group-1290-tab-1293" class="nav-link" data-group="group_1290" data-tab="tab-group-1290-content-1293">JAVA</div></div><div class="tab-content"><div id="tab-group-1290-conten [...]
-</span></div></div><div id="tab-group-1290-content-1292" class="tab-pane" data-group="group_1290" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1290-content-1292" class="tab-pane" data-group="group_1290" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
 </span></div></div><div id="tab-group-1290-content-1293" class="tab-pane" data-group="group_1290" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Upload a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" 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>You can download a package to the package management service in the following ways.</p>
+<p>You can use the following commands to download a package.</p>
 <div class="tabs"><div class="nav-tabs"><div id="tab-group-1294-tab-1295" class="nav-link active" data-group="group_1294" data-tab="tab-group-1294-content-1295">pulsar-admin</div><div id="tab-group-1294-tab-1296" class="nav-link" data-group="group_1294" data-tab="tab-group-1294-content-1296">REST API</div><div id="tab-group-1294-tab-1297" class="nav-link" data-group="group_1294" data-tab="tab-group-1294-content-1297">JAVA</div></div><div class="tab-content"><div id="tab-group-1294-conten [...]
-</span></div></div><div id="tab-group-1294-content-1296" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+</span></div></div><div id="tab-group-1294-content-1296" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1294-content-1297" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Download a package to the package management service asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1294-content-1297" class="tab-pane" data-group="group_1294" tabindex="-1"><div><span><p>Download a package from the package management service synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Download a package from the package management service asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can get a list of all versions of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1298-tab-1299" class="nav-link active" data-group="group_1298" data-tab="tab-group-1298-content-1299">pulsar-admin</div><div id="tab-group-1298-tab-1300" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1300">REST API</div><div id="tab-group-1298-tab-1301" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1301">JAVA</div></div><div class="tab-content"><div id="tab-group-1298-conten [...]
-</span></div></div><div id="tab-group-1298-content-1300" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="delete-a-package"></a><a href="#delete-a-package" 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. [...]
+<p>You can use the following commands to delete a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1298-tab-1299" class="nav-link active" data-group="group_1298" data-tab="tab-group-1298-content-1299">pulsar-admin</div><div id="tab-group-1298-tab-1300" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1300">REST API</div><div id="tab-group-1298-tab-1301" class="nav-link" data-group="group_1298" data-tab="tab-group-1298-content-1301">JAVA</div></div><div class="tab-content"><div id="tab-group-1298-conten [...]
+<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
+</span></div></div><div id="tab-group-1298-content-1300" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:versionversion=master&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version</i></a>
 </p>
-</span></div></div><div id="tab-group-1298-content-1301" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all versions of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
-</span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" 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>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1302-tab-1303" class="nav-link active" data-group="group_1302" data-tab="tab-group-1302-content-1303">pulsar-admin</div><div id="tab-group-1302-tab-1304" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1304">REST API</div><div id="tab-group-1302-tab-1305" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1305">JAVA</div></div><div class="tab-content"><div id="tab-group-1302-conten [...]
-</span></div></div><div id="tab-group-1302-content-1304" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.8.1</i></a>
-</p>
-</span></div></div><div id="tab-group-1302-content-1305" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>List all the packages with the given type in a namespace asynchronously.</p>
-<pre><code class="hljs css language-java">   CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
+</span></div></div><div id="tab-group-1298-content-1301" class="tab-pane" data-group="group_1298" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Delete a specified package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" 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  [...]
-<p>You can get the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1306-tab-1307" class="nav-link active" data-group="group_1306" data-tab="tab-group-1306-content-1307">pulsar-admin</div><div id="tab-group-1306-tab-1308" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1308">REST API</div><div id="tab-group-1306-tab-1309" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1309">JAVA</div></div><div class="tab-content"><div id="tab-group-1306-conten [...]
-</span></div></div><div id="tab-group-1306-content-1308" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to get the metadate of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1302-tab-1303" class="nav-link active" data-group="group_1302" data-tab="tab-group-1302-content-1303">pulsar-admin</div><div id="tab-group-1302-tab-1304" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1304">REST API</div><div id="tab-group-1302-tab-1305" class="nav-link" data-group="group_1302" data-tab="tab-group-1302-content-1305">JAVA</div></div><div class="tab-content"><div id="tab-group-1302-conten [...]
+</span></div></div><div id="tab-group-1302-content-1304" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1306-content-1309" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1302-content-1305" class="tab-pane" data-group="group_1302" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
 <p>Get the metadata of a package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
 <h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" 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. [...]
-<p>You can update the metadata of a package in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1310-tab-1311" class="nav-link active" data-group="group_1310" data-tab="tab-group-1310-content-1311">pulsar-admin</div><div id="tab-group-1310-tab-1312" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1312">REST API</div><div id="tab-group-1310-tab-1313" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1313">JAVA</div></div><div class="tab-content"><div id="tab-group-1310-conten [...]
-</span></div></div><div id="tab-group-1310-content-1312" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.8.1</i></a>
+<p>You can use the following commands to update the metadata of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1306-tab-1307" class="nav-link active" data-group="group_1306" data-tab="tab-group-1306-content-1307">pulsar-admin</div><div id="tab-group-1306-tab-1308" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1308">REST API</div><div id="tab-group-1306-tab-1309" class="nav-link" data-group="group_1306" data-tab="tab-group-1306-content-1309">JAVA</div></div><div class="tab-content"><div id="tab-group-1306-conten [...]
+</span></div></div><div id="tab-group-1306-content-1308" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadataversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata</i></a>
 </p>
-</span></div></div><div id="tab-group-1310-content-1313" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Update a package metadata information asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1306-content-1309" class="tab-pane" data-group="group_1306" tabindex="-1"><div><span><p>Update the metadata of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>Update the metadata of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
 </span></div></div></div></div>
-<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" 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 12H [...]
-<p>You can delete a specified package with its package name in the following ways.</p>
-<div class="tabs"><div class="nav-tabs"><div id="tab-group-1314-tab-1315" class="nav-link active" data-group="group_1314" data-tab="tab-group-1314-content-1315">pulsar-admin</div><div id="tab-group-1314-tab-1316" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1316">REST API</div><div id="tab-group-1314-tab-1317" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1317">JAVA</div></div><div class="tab-content"><div id="tab-group-1314-conten [...]
-<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete function://public/default/example@v0.1<br /></code></pre>
-</span></div></div><div id="tab-group-1314-content-1316" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.8.1</i></a>
+<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" 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>You can use the following commands to list all versions of a package.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1310-tab-1311" class="nav-link active" data-group="group_1310" data-tab="tab-group-1310-content-1311">pulsar-admin</div><div id="tab-group-1310-tab-1312" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1312">REST API</div><div id="tab-group-1310-tab-1313" class="nav-link" data-group="group_1310" data-tab="tab-group-1310-content-1313">JAVA</div></div><div class="tab-content"><div id="tab-group-1310-conten [...]
+</span></div></div><div id="tab-group-1310-content-1312" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageNameversion=master&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName</i></a>
 </p>
-</span></div></div><div id="tab-group-1314-content-1317" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
-<p>Delete a specified package asynchronously.</p>
-<pre><code class="hljs css language-java">   <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
+</span></div></div><div id="tab-group-1310-content-1313" class="tab-pane" data-group="group_1310" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all versions of a package asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
+</span></div></div></div></div>
+<h3><a class="anchor" aria-hidden="true" id="list-all-packages-of-a-specific-type-under-a-namespace"></a><a href="#list-all-packages-of-a-specific-type-under-a-namespace" 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>You can use the following commands to list all packages of a specific type under a namespace.</p>
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1314-tab-1315" class="nav-link active" data-group="group_1314" data-tab="tab-group-1314-content-1315">pulsar-admin</div><div id="tab-group-1314-tab-1316" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1316">REST API</div><div id="tab-group-1314-tab-1317" class="nav-link" data-group="group_1314" data-tab="tab-group-1314-content-1317">JAVA</div></div><div class="tab-content"><div id="tab-group-1314-conten [...]
+</span></div></div><div id="tab-group-1314-content-1316" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespaceversion=master&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace</i></a>
+</p>
+</span></div></div><div id="tab-group-1314-content-1317" class="tab-pane" data-group="group_1314" tabindex="-1"><div><span><p>List all packages of a specific type under a namespace synchronously.</p>
+<pre><code class="hljs css language-java">  <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
+<p>List all packages of a specific type under a namespace asynchronously.</p>
+<pre><code class="hljs css language-java">  CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
 </span></div></div></div></div>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-TW/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-TW/next/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#what-is-a-package">What is a package?</a></li><li><a href="#how-to-use-a-package">How  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/develop-binary-protocol.html b/content/docs/zh-TW/next/develop-binary-protocol.html
index c227bf6..cb56d2c 100644
--- a/content/docs/zh-TW/next/develop-binary-protocol.html
+++ b/content/docs/zh-TW/next/develop-binary-protocol.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/zh-TW/next/develop-binary-protocol/index.html b/content/docs/zh-TW/next/develop-binary-protocol/index.html
index c227bf6..cb56d2c 100644
--- a/content/docs/zh-TW/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-TW/next/develop-binary-protocol/index.html
@@ -135,6 +135,12 @@
 <tr><td style="text-align:left"><code>index</code></td><td style="text-align:left">Optional</td><td style="text-align:left">The index of the message. It is assigned by the broker.</td></tr>
 </tbody>
 </table>
+<p>If you want to use broker entry metadata for <strong>brokers</strong>, configure the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter in the <code>broker.conf</code> file.</p>
+<p>If you want to use broker entry metadata for <strong>consumers</strong>:</p>
+<ol>
+<li><p>Use the client protocol version <a href="https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259">18 or later</a>.</p></li>
+<li><p>Configure the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>brokerEntryMetadataInterceptors</code></a> parameter and set the <a href="/docs/zh-TW/next/reference-configuration#broker"><code>enableExposingBrokerEntryMetadataToClient</code></a> parameter to <code>true</code> in the <code>broker.conf</code> file.</p></li>
+</ol>
 <h2><a class="anchor" aria-hidden="true" id="message-metadata"></a><a href="#message-metadata" 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. [...]
 <p>Message metadata is stored alongside the application-specified payload as a serialized protobuf message. Metadata is created by the producer and passed without changes to the consumer.</p>
 <table>
diff --git a/content/docs/zh-TW/next/reference-configuration.html b/content/docs/zh-TW/next/reference-configuration.html
index f6c0df8..d521e92 100644
--- a/content/docs/zh-TW/next/reference-configuration.html
+++ b/content/docs/zh-TW/next/reference-configuration.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/zh-TW/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/zh-TW/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="# [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/zh-TW/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/zh-TW/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></d [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-TW/next/reference-configuration/index.html b/content/docs/zh-TW/next/reference-configuration/index.html
index f6c0df8..d521e92 100644
--- a/content/docs/zh-TW/next/reference-configuration/index.html
+++ b/content/docs/zh-TW/next/reference-configuration/index.html
@@ -234,158 +234,159 @@ Instead, you can set a subscription expiration time for each <strong>namespace</
 <p>If this value is <code>NONE</code> or invalid, the <code>managedLedgerInfo</code> is not compressed.</p>
 <p><strong>Note</strong> that after enabling this configuration, if you want to degrade a broker, you need to change the value to <code>NONE</code> and make sure all ledger metadata is saved without compression. | None | | additionalServlets | Additional servlet name.</p>
 <p>If you have multiple additional servlets, separate them by commas.</p>
-<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet |</p></p>
-<h2><a class="anchor" aria-hidden="true" id="client"></a><a href="#client" 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-2. [...]
-<p>You can use the <a href="/docs/zh-TW/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.</p>
-<p>TLS TrustStore type configuration.</p>
+<p>For example, additionalServlet_1, additionalServlet_2 | N/A | | additionalServletDirectory | Location of broker additional servlet NAR directory | ./brokerAdditionalServlet | | brokerEntryMetadataInterceptors | Set broker entry metadata interceptors.</p>
+<p>Multiple interceptors should be separated by commas.</p>
+<p>Available values:</p>
 <ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="log4j"></a><a href="#log4j" 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-2.09 [...]
-<p>You can set the log level and configuration in the <a href="https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155">log4j2.yaml</a> file. The following logging configuration parameters are available.</p>
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>pulsar.root.logger</td><td>WARN,CONSOLE</td></tr>
-<tr><td>pulsar.log.dir</td><td>logs</td></tr>
-<tr><td>pulsar.log.file</td><td>pulsar.log</td></tr>
-<tr><td>log4j.rootLogger</td><td>${pulsar.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE</td><td>org.apache.log4j.DailyRollingFileAppender</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.File</td><td>${pulsar.log.dir}/${pulsar.log.file}</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.ROLLINGFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n</td></tr>
-<tr><td>log4j.appender.TRACEFILE</td><td>org.apache.log4j.FileAppender</td></tr>
-<tr><td>log4j.appender.TRACEFILE.Threshold</td><td>TRACE</td></tr>
-<tr><td>log4j.appender.TRACEFILE.File</td><td>pulsar-trace.log</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.TRACEFILE.layout.ConversionPattern</td><td>%d{ISO8601} - %-5p [%t:%C{1}@%L][%x] - %m%n</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="log4j-shell"></a><a href="#log4j-shell" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>bookkeeper.root.logger</td><td>ERROR,CONSOLE</td></tr>
-<tr><td>log4j.rootLogger</td><td>${bookkeeper.root.logger}</td></tr>
-<tr><td>log4j.appender.CONSOLE</td><td>org.apache.log4j.ConsoleAppender</td></tr>
-<tr><td>log4j.appender.CONSOLE.Threshold</td><td>DEBUG</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout</td><td>org.apache.log4j.PatternLayout</td></tr>
-<tr><td>log4j.appender.CONSOLE.layout.ConversionPattern</td><td>%d{ABSOLUTE} %-5p %m%n</td></tr>
-<tr><td>log4j.logger.org.apache.zookeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper</td><td>ERROR</td></tr>
-<tr><td>log4j.logger.org.apache.bookkeeper.bookie.BookieShell</td><td>INFO</td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="standalone"></a><a href="#standalone" 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 [...]
-<p>TLS KeyStore type configuration in the broker.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration in the broker</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers.</p>
-<ul>
-<li>JKS
-<ul>
-<li><p>PKCS12</td>
-</tr>
-</tbody> </table></p>
-<h2><a class="anchor" aria-hidden="true" id="websocket"></a><a href="#websocket" 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 [...]
-<table>
-<thead>
-<tr><th>Name</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td>configurationStoreServers</td><td></td><td></td></tr>
-<tr><td>zooKeeperSessionTimeoutMillis</td><td></td><td>30000</td></tr>
-<tr><td>zooKeeperCacheExpirySeconds</td><td>ZooKeeper cache expiry time in seconds</td><td>300</td></tr>
-<tr><td>serviceUrl</td><td></td><td></td></tr>
-<tr><td>serviceUrlTls</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrl</td><td></td><td></td></tr>
-<tr><td>brokerServiceUrlTls</td><td></td><td></td></tr>
-<tr><td>webServicePort</td><td></td><td>8080</td></tr>
-<tr><td>webServicePortTls</td><td></td><td>8443</td></tr>
-<tr><td>bindAddress</td><td></td><td>0.0.0.0</td></tr>
-<tr><td>clusterName</td><td></td><td></td></tr>
-<tr><td>authenticationEnabled</td><td></td><td>false</td></tr>
-<tr><td>authenticationProviders</td><td></td><td></td></tr>
-<tr><td>authorizationEnabled</td><td></td><td>false</td></tr>
-<tr><td>superUserRoles</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationPlugin</td><td></td><td></td></tr>
-<tr><td>brokerClientAuthenticationParameters</td><td></td><td></td></tr>
-<tr><td>tlsEnabled</td><td></td><td>false</td></tr>
-<tr><td>tlsAllowInsecureConnection</td><td></td><td>false</td></tr>
-<tr><td>tlsCertificateFilePath</td><td></td><td></td></tr>
-<tr><td>tlsKeyFilePath</td><td></td><td></td></tr>
-<tr><td>tlsTrustCertsFilePath</td><td></td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="pulsar-proxy"></a><a href="#pulsar-proxy" 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>The <a href="/docs/zh-TW/next/concepts-architecture-overview#pulsar-proxy">Pulsar proxy</a> can be configured in the <code>conf/proxy.conf</code> file.</p>
-<p>Proxy log level</p>
-<p>- 0: Do not log any TCP channel information.
-- 1: Parse and log any TCP channel information and command information without message body.
-- 2: Parse and log channel information, command information and message body.</td>
-</tr>
-</tbody> </table>
-## ZooKeeper</p>
-<pre><code class="hljs">          ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
-          
-          | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
-          | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
-          | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
-          | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
-          | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
-          | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
-          | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
-          | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
-          | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
-          | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
-          | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
-          | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
-          | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
-          
-          In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
-          
-          ```properties
-          server.1=zk1.us-west.example.com:2888:3888
-          server.2=zk2.us-west.example.com:2888:3888
-          server.3=zk3.us-west.example.com:2888:3888
-          ```
-          
-          &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
-</ul></li>
+<li>org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor</li>
+<li>org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor</li>
 </ul></li>
 </ul></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li><li><a href="# [...]
+<pre><code class="hljs">    Example  
+    brokerEntryMetadataInterceptors=org.apache.pulsar.common.intercept.AppendBrokerTimestampMetadataInterceptor, org.apache.pulsar.common.intercept.AppendIndexMetadataInterceptor|N/A | | enableExposingBrokerEntryMetadataToClient|Whether to expose broker entry metadata to client or not.  
+      
+    Available values:
+    - true
+    - false
+      
+    Example  
+    enableExposingBrokerEntryMetadataToClient=true | false |&lt;/p&gt; 
+    ## Client
+    
+    You can use the [`pulsar-client`](/docs/zh-TW/next/reference-cli-tools#pulsar-client) CLI tool to publish messages to and consume messages from Pulsar topics. You can use this tool in place of a client library.
+    
+    TLS TrustStore type configuration. 
+    
+    - JKS 
+        - PKCS12&lt;/td&gt; 
+            &lt;/tr&gt; 
+            &lt;/tbody&gt; &lt;/table&gt; 
+            ## Log4j
+            
+            You can set the log level and configuration in the [log4j2.yaml](https://github.com/apache/pulsar/blob/d557e0aa286866363bc6261dec87790c055db1b0/conf/log4j2.yaml#L155) file. The following logging configuration parameters are available.
+            
+            | Name                                                | Default                                         |
+            | --------------------------------------------------- | ----------------------------------------------- |
+            | pulsar.root.logger                                  | WARN,CONSOLE                                    |
+            | pulsar.log.dir                                      | logs                                            |
+            | pulsar.log.file                                     | pulsar.log                                      |
+            | log4j.rootLogger                                    | ${pulsar.root.logger}                           |
+            | log4j.appender.CONSOLE                              | org.apache.log4j.ConsoleAppender                |
+            | log4j.appender.CONSOLE.Threshold                    | DEBUG                                           |
+            | log4j.appender.CONSOLE.layout                       | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.CONSOLE.layout.ConversionPattern     | %d{ISO8601} - %-5p - [%t:%C{1}@%L] - %m%n       |
+            | log4j.appender.ROLLINGFILE                          | org.apache.log4j.DailyRollingFileAppender       |
+            | log4j.appender.ROLLINGFILE.Threshold                | DEBUG                                           |
+            | log4j.appender.ROLLINGFILE.File                     | ${pulsar.log.dir}/${pulsar.log.file}            |
+            | log4j.appender.ROLLINGFILE.layout                   | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.ROLLINGFILE.layout.ConversionPattern | %d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n         |
+            | log4j.appender.TRACEFILE                            | org.apache.log4j.FileAppender                   |
+            | log4j.appender.TRACEFILE.Threshold                  | TRACE                                           |
+            | log4j.appender.TRACEFILE.File                       | pulsar-trace.log                                |
+            | log4j.appender.TRACEFILE.layout                     | org.apache.log4j.PatternLayout                  |
+            | log4j.appender.TRACEFILE.layout.ConversionPattern   | %d{ISO8601} - %-5p \[%t:%C{1}@%L\]\[%x\] - %m%n |
+            
+            &gt; Note: 'topic' in log4j2.appender is configurable. - If you want to append all logs to a single topic, set the same topic name. - If you want to append logs to different topics, you can set different topic names.
+            
+            ## Log4j shell
+            
+            | Name                                                  | Default                          |
+            | ----------------------------------------------------- | -------------------------------- |
+            | bookkeeper.root.logger                                | ERROR,CONSOLE                    |
+            | log4j.rootLogger                                      | ${bookkeeper.root.logger}        |
+            | log4j.appender.CONSOLE                                | org.apache.log4j.ConsoleAppender |
+            | log4j.appender.CONSOLE.Threshold                      | DEBUG                            |
+            | log4j.appender.CONSOLE.layout                         | org.apache.log4j.PatternLayout   |
+            | log4j.appender.CONSOLE.layout.ConversionPattern       | %d{ABSOLUTE} %-5p %m%n           |
+            | log4j.logger.org.apache.zookeeper                     | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper                    | ERROR                            |
+            | log4j.logger.org.apache.bookkeeper.bookie.BookieShell | INFO                             |
+            
+            ## Standalone
+            
+            TLS KeyStore type configuration in the broker.
+            
+            - JKS 
+                - PKCS12&lt;/td&gt; 
+                    &lt;/tr&gt; 
+                    TLS TrustStore type configuration in the broker
+                    
+                    - JKS 
+                        - PKCS12&lt;/td&gt; 
+                            &lt;/tr&gt; 
+                            TLS TrustStore type configuration for the internal client to authenticate with Pulsar brokers. 
+                            
+                            - JKS 
+                                - PKCS12&lt;/td&gt; 
+                                    &lt;/tr&gt; 
+                                    &lt;/tbody&gt; &lt;/table&gt; 
+                                    ## WebSocket
+                                    
+                                    | Name                                 | Description                            | Default |
+                                    | ------------------------------------ | -------------------------------------- | ------- |
+                                    | configurationStoreServers            |                                        |         |
+                                    | zooKeeperSessionTimeoutMillis        |                                        | 30000   |
+                                    | zooKeeperCacheExpirySeconds          | ZooKeeper cache expiry time in seconds | 300     |
+                                    | serviceUrl                           |                                        |         |
+                                    | serviceUrlTls                        |                                        |         |
+                                    | brokerServiceUrl                     |                                        |         |
+                                    | brokerServiceUrlTls                  |                                        |         |
+                                    | webServicePort                       |                                        | 8080    |
+                                    | webServicePortTls                    |                                        | 8443    |
+                                    | bindAddress                          |                                        | 0.0.0.0 |
+                                    | clusterName                          |                                        |         |
+                                    | authenticationEnabled                |                                        | false   |
+                                    | authenticationProviders              |                                        |         |
+                                    | authorizationEnabled                 |                                        | false   |
+                                    | superUserRoles                       |                                        |         |
+                                    | brokerClientAuthenticationPlugin     |                                        |         |
+                                    | brokerClientAuthenticationParameters |                                        |         |
+                                    | tlsEnabled                           |                                        | false   |
+                                    | tlsAllowInsecureConnection           |                                        | false   |
+                                    | tlsCertificateFilePath               |                                        |         |
+                                    | tlsKeyFilePath                       |                                        |         |
+                                    | tlsTrustCertsFilePath                |                                        |         |
+                                    
+                                    ## Pulsar proxy
+                                    
+                                    The [Pulsar proxy](/docs/zh-TW/next/concepts-architecture-overview#pulsar-proxy) can be configured in the `conf/proxy.conf` file.
+                                    
+                                    Proxy log level 
+                                    
+                                    - 0: Do not log any TCP channel information. 
+                                        - 1: Parse and log any TCP channel information and command information without message body. 
+                                            - 2: Parse and log channel information, command information and message body.&lt;/td&gt; 
+                                                &lt;/tr&gt; 
+                                                &lt;/tbody&gt; &lt;/table&gt; 
+                                                ## ZooKeeper
+                                                
+                                                ZooKeeper handles a broad range of essential configuration- and coordination-related tasks for Pulsar. The default configuration file for ZooKeeper is in the `conf/zookeeper.conf` file in your Pulsar installation. The following parameters are available:
+                                                
+                                                | Name                      | Description                                                                                                                                                                                                                                                                                | Default        |
+                                                | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
+                                                | tickTime                  | The tick is the basic unit of time in ZooKeeper, measured in milliseconds and used to regulate things like heartbeats and timeouts. tickTime is the length of a single tick.                                                                                                               | 2000           |
+                                                | initLimit                 | The maximum time, in ticks, that the leader ZooKeeper server allows follower ZooKeeper servers to successfully connect and sync. The tick time is set in milliseconds using the tickTime parameter.                                                                                        | 10             |
+                                                | syncLimit                 | The maximum time, in ticks, that a follower ZooKeeper server is allowed to sync with other ZooKeeper servers. The tick time is set in milliseconds using the tickTime parameter.                                                                                                           | 5              |
+                                                | dataDir                   | The location where ZooKeeper will store in-memory database snapshots as well as the transaction log of updates to the database.                                                                                                                                                            | data/zookeeper |
+                                                | clientPort                | The port on which the ZooKeeper server will listen for connections.                                                                                                                                                                                                                        | 2181           |
+                                                | admin.enableServer        | The port at which the admin listens.                                                                                                                                                                                                                                                       | true           |
+                                                | admin.serverPort          | The port at which the admin listens.                                                                                                                                                                                                                                                       | 9990           |
+                                                | autopurge.snapRetainCount | In ZooKeeper, auto purge determines how many recent snapshots of the database stored in dataDir to retain within the time interval specified by autopurge.purgeInterval (while deleting the rest).                                                                                         | 3              |
+                                                | autopurge.purgeInterval   | The time interval, in hours, by which the ZooKeeper database purge task is triggered. Setting to a non-zero number will enable auto purge; setting to 0 will disable. Read this guide before enabling auto purge.                                                                          | 1              |
+                                                | forceSync                 | Requires updates to be synced to media of the transaction log before finishing processing the update. If this option is set to 'no', ZooKeeper will not require updates to be synced to the media. WARNING: it's not recommended to run a production ZK cluster with `forceSync` disabled. | yes            |
+                                                | maxClientCnxns            | The maximum number of client connections. Increase this if you need to handle more ZooKeeper clients.                                                                                                                                                                                      | 60             |
+                                                
+                                                In addition to the parameters in the table above, configuring ZooKeeper for Pulsar involves adding a `server.N` line to the `conf/zookeeper.conf` file for each node in the ZooKeeper cluster, where `N` is the number of the ZooKeeper node. Here's an example for a three-node ZooKeeper cluster:
+                                                
+                                                ```properties
+                                                server.1=zk1.us-west.example.com:2888:3888
+                                                server.2=zk2.us-west.example.com:2888:3888
+                                                server.3=zk3.us-west.example.com:2888:3888
+                                                ```
+                                                
+                                                &gt; We strongly recommend consulting the [ZooKeeper Administrator's Guide](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html) for a more thorough and comprehensive introduction to ZooKeeper configuration</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-TW/next/reference-cli-tools"><span class="arrow-prev">← </span><span>Pulsar CLI tools</span></a><a class="docs-next button" href="/docs/zh-TW/next/reference-metrics"><span>Pulsar Metrics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#bookkeeper">BookKeeper</a></li><li><a href="#broker">Broker</a></li></ul></nav></d [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/swagger/2.10.0-SNAPSHOT/swagger.json b/content/swagger/2.10.0-SNAPSHOT/swagger.json
index 9125450..0ea334a 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swagger.json
@@ -19952,6 +19952,16 @@
             }
           }
         },
+        "subscriptionAuthentication" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "array",
+            "uniqueItems" : true,
+            "items" : {
+              "type" : "string"
+            }
+          }
+        },
         "topicAuthentication" : {
           "type" : "object",
           "additionalProperties" : {
@@ -19965,16 +19975,6 @@
               }
             }
           }
-        },
-        "subscriptionAuthentication" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "array",
-            "uniqueItems" : true,
-            "items" : {
-              "type" : "string"
-            }
-          }
         }
       }
     },
@@ -20393,11 +20393,9 @@
     "ConsumerStats" : {
       "type" : "object",
       "properties" : {
-        "metadata" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputOut" : {
           "type" : "number",
@@ -20411,31 +20409,45 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "consumerName" : {
-          "type" : "string"
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "chunkedMessageRate" : {
+          "type" : "number",
+          "format" : "double"
         },
         "connectedSince" : {
           "type" : "string"
         },
-        "availablePermits" : {
-          "type" : "integer",
-          "format" : "int32"
+        "clientVersion" : {
+          "type" : "string"
         },
-        "msgRateOut" : {
+        "msgRateRedeliver" : {
           "type" : "number",
           "format" : "double"
         },
-        "chunkedMessageRate" : {
-          "type" : "number",
-          "format" : "double"
+        "unackedMessages" : {
+          "type" : "integer",
+          "format" : "int32"
         },
-        "msgRateRedeliver" : {
-          "type" : "number",
-          "format" : "double"
+        "lastConsumedTimestamp" : {
+          "type" : "integer",
+          "format" : "int64"
         },
-        "clientVersion" : {
+        "lastAckedTimestamp" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "consumerName" : {
           "type" : "string"
         },
+        "availablePermits" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "avgMessagesPerEntry" : {
           "type" : "integer",
           "format" : "int32"
@@ -20452,18 +20464,6 @@
             "type" : "string"
           }
         },
-        "unackedMessages" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "lastConsumedTimestamp" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
-        "lastAckedTimestamp" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "address" : {
           "type" : "string"
         }
@@ -20580,11 +20580,11 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
@@ -20612,13 +20612,6 @@
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "deserializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -20628,6 +20621,13 @@
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "deserializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "rootName" : {
           "type" : "string"
         },
@@ -20643,18 +20643,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -20667,6 +20664,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -20675,12 +20675,12 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
@@ -20690,6 +20690,12 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
+        },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
@@ -20703,12 +20709,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
-        },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "factory" : {
           "$ref" : "#/definitions/DeserializerFactory"
         }
@@ -20720,10 +20720,6 @@
     "DispatchRate" : {
       "type" : "object",
       "properties" : {
-        "ratePeriodInSecond" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "dispatchThrottlingRateInMsg" : {
           "type" : "integer",
           "format" : "int32"
@@ -20734,6 +20730,10 @@
         },
         "relativeToPublishRate" : {
           "type" : "boolean"
+        },
+        "ratePeriodInSecond" : {
+          "type" : "integer",
+          "format" : "int32"
         }
       }
     },
@@ -20810,6 +20810,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "processedSuccessfullyTotal" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "systemExceptionsTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -20821,10 +20825,6 @@
         "avgProcessLatency" : {
           "type" : "number",
           "format" : "double"
-        },
-        "processedSuccessfullyTotal" : {
-          "type" : "integer",
-          "format" : "int64"
         }
       }
     },
@@ -20835,6 +20835,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "processedSuccessfullyTotal" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "systemExceptionsTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -20846,10 +20850,6 @@
         "avgProcessLatency" : {
           "type" : "number",
           "format" : "double"
-        },
-        "processedSuccessfullyTotal" : {
-          "type" : "integer",
-          "format" : "int64"
         }
       }
     },
@@ -21150,10 +21150,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -21168,6 +21164,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -21223,12 +21223,12 @@
         "typeId" : {
           "type" : "object"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -21334,11 +21334,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -21651,6 +21651,15 @@
           "type" : "number",
           "format" : "double"
         },
+        "bandwidthIn" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "bandwidthOut" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -21659,14 +21668,14 @@
           "type" : "number",
           "format" : "double"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "underLoaded" : {
+          "type" : "boolean"
         },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "overLoaded" : {
+          "type" : "boolean"
         },
-        "memory" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "loadReportType" : {
+          "type" : "string"
         },
         "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
@@ -21677,15 +21686,6 @@
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
-        },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
         }
       }
     },
@@ -21949,14 +21949,9 @@
           "type" : "number",
           "format" : "double"
         },
-        "metadata" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "producerName" : {
-          "type" : "string"
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputIn" : {
           "type" : "number",
@@ -21966,28 +21961,33 @@
           "type" : "number",
           "format" : "double"
         },
-        "connectedSince" : {
-          "type" : "string"
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
         },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "chunkedMessageRate" : {
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
-          "type" : "string"
-        },
         "producerId" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
+        "producerName" : {
+          "type" : "string"
+        },
         "address" : {
           "type" : "string"
         }
@@ -22000,8 +22000,13 @@
           "type" : "number",
           "format" : "double"
         },
-        "connected" : {
-          "type" : "boolean"
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputIn" : {
           "type" : "number",
@@ -22011,15 +22016,10 @@
           "type" : "number",
           "format" : "double"
         },
-        "replicationDelayInSeconds" : {
-          "type" : "integer",
-          "format" : "int64"
+        "connected" : {
+          "type" : "boolean"
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
+        "msgRateExpired" : {
           "type" : "number",
           "format" : "double"
         },
@@ -22027,6 +22027,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "replicationDelayInSeconds" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "inboundConnection" : {
           "type" : "string"
         },
@@ -22038,10 +22042,6 @@
         },
         "outboundConnectedSince" : {
           "type" : "string"
-        },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
         }
       }
     },
@@ -22052,17 +22052,9 @@
           "type" : "number",
           "format" : "double"
         },
-        "replicated" : {
-          "type" : "boolean"
-        },
-        "durable" : {
-          "type" : "boolean"
-        },
-        "consumers" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/ConsumerStats"
-          }
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputOut" : {
           "type" : "number",
@@ -22088,73 +22080,49 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "subscriptionProperties" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "allowOutOfOrderDelivery" : {
-          "type" : "boolean"
-        },
-        "keySharedMode" : {
-          "type" : "string"
-        },
-        "activeConsumerName" : {
-          "type" : "string"
-        },
-        "consumersAfterMarkDeletePosition" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
+        "consumers" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ConsumerStats"
           }
         },
         "chunkedMessageRate" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "earliestMsgPublishTimeInBacklog" : {
-          "type" : "integer",
-          "format" : "int64"
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "msgBacklogNoDelayed" : {
+        "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
         "msgRateRedeliver" : {
           "type" : "number",
           "format" : "double"
         },
-        "unackedMessages" : {
+        "earliestMsgPublishTimeInBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgBacklog" : {
+        "msgBacklogNoDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "lastConsumedTimestamp" : {
-          "type" : "integer",
-          "format" : "int64"
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
         },
-        "lastAckedTimestamp" : {
+        "msgDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "lastMarkDeleteAdvancedTimestamp" : {
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
+        "activeConsumerName" : {
+          "type" : "string"
         },
         "totalMsgExpired" : {
           "type" : "integer",
@@ -22168,10 +22136,42 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "msgDelayed" : {
+        "lastConsumedTimestamp" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "lastAckedTimestamp" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "lastMarkDeleteAdvancedTimestamp" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "allowOutOfOrderDelivery" : {
+          "type" : "boolean"
+        },
+        "keySharedMode" : {
+          "type" : "string"
+        },
+        "consumersAfterMarkDeletePosition" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "subscriptionProperties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "replicated" : {
+          "type" : "boolean"
+        },
+        "durable" : {
+          "type" : "boolean"
+        },
         "type" : {
           "type" : "string"
         }
@@ -22180,11 +22180,9 @@
     "NonPersistentTopicStats" : {
       "type" : "object",
       "properties" : {
-        "subscriptions" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "$ref" : "#/definitions/NonPersistentSubscriptionStats"
-          }
+        "msgDropRate" : {
+          "type" : "number",
+          "format" : "double"
         },
         "publishers" : {
           "type" : "array",
@@ -22198,7 +22196,17 @@
             "$ref" : "#/definitions/NonPersistentReplicatorStats"
           }
         },
-        "msgDropRate" : {
+        "subscriptions" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/NonPersistentSubscriptionStats"
+          }
+        },
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
@@ -22270,14 +22278,6 @@
         },
         "compaction" : {
           "$ref" : "#/definitions/CompactionStats"
-        },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
         }
       }
     },
@@ -22382,18 +22382,27 @@
     "OffloadPolicies" : {
       "type" : "object",
       "properties" : {
-        "managedLedgerOffloadThresholdInBytes" : {
+        "managedLedgerOffloadDriver" : {
+          "type" : "string"
+        },
+        "offloadersDirectory" : {
+          "type" : "string"
+        },
+        "managedLedgerOffloadMaxThreads" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
-        "managedLedgerOffloadDeletionLagInMillis" : {
+        "managedLedgerOffloadPrefetchRounds" : {
           "type" : "integer",
-          "format" : "int64"
+          "format" : "int32"
         },
         "managedLedgerOffloadedReadPriority" : {
           "type" : "string",
           "enum" : [ "BOOKKEEPER_FIRST", "TIERED_STORAGE_FIRST" ]
         },
+        "fileSystemURI" : {
+          "type" : "string"
+        },
         "s3ManagedLedgerOffloadRegion" : {
           "type" : "string"
         },
@@ -22460,22 +22469,13 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "fileSystemURI" : {
-          "type" : "string"
-        },
-        "offloadersDirectory" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadDriver" : {
-          "type" : "string"
-        },
-        "managedLedgerOffloadMaxThreads" : {
+        "managedLedgerOffloadThresholdInBytes" : {
           "type" : "integer",
-          "format" : "int32"
+          "format" : "int64"
         },
-        "managedLedgerOffloadPrefetchRounds" : {
+        "managedLedgerOffloadDeletionLagInMillis" : {
           "type" : "integer",
-          "format" : "int32"
+          "format" : "int64"
         }
       }
     },
@@ -23239,14 +23239,9 @@
     "PublisherStats" : {
       "type" : "object",
       "properties" : {
-        "metadata" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "producerName" : {
-          "type" : "string"
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputIn" : {
           "type" : "number",
@@ -23256,28 +23251,33 @@
           "type" : "number",
           "format" : "double"
         },
-        "connectedSince" : {
-          "type" : "string"
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
         },
         "accessMode" : {
           "type" : "string",
           "enum" : [ "Shared", "Exclusive", "WaitForExclusive" ]
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "chunkedMessageRate" : {
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
-          "type" : "string"
-        },
         "producerId" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "connectedSince" : {
+          "type" : "string"
+        },
+        "clientVersion" : {
+          "type" : "string"
+        },
+        "producerName" : {
+          "type" : "string"
+        },
         "address" : {
           "type" : "string"
         }
@@ -23294,26 +23294,26 @@
     "ReplicatorStats" : {
       "type" : "object",
       "properties" : {
-        "connected" : {
-          "type" : "boolean"
-        },
-        "msgThroughputIn" : {
+        "msgRateIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgThroughputOut" : {
+        "msgRateOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "replicationDelayInSeconds" : {
-          "type" : "integer",
-          "format" : "int64"
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "msgRateIn" : {
+        "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
         },
-        "msgRateOut" : {
+        "connected" : {
+          "type" : "boolean"
+        },
+        "msgRateExpired" : {
           "type" : "number",
           "format" : "double"
         },
@@ -23321,6 +23321,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "replicationDelayInSeconds" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "inboundConnection" : {
           "type" : "string"
         },
@@ -23332,10 +23336,6 @@
         },
         "outboundConnectedSince" : {
           "type" : "string"
-        },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
         }
       }
     },
@@ -23487,9 +23487,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -23499,6 +23496,9 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "serializationInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
@@ -23522,18 +23522,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -23546,6 +23543,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -23557,24 +23557,18 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "filterProvider" : {
           "$ref" : "#/definitions/FilterProvider"
         },
@@ -23583,6 +23577,12 @@
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
+        },
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -23676,17 +23676,9 @@
     "SubscriptionStats" : {
       "type" : "object",
       "properties" : {
-        "replicated" : {
-          "type" : "boolean"
-        },
-        "durable" : {
-          "type" : "boolean"
-        },
-        "consumers" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/ConsumerStats"
-          }
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputOut" : {
           "type" : "number",
@@ -23712,73 +23704,49 @@
           "type" : "integer",
           "format" : "int32"
         },
-        "subscriptionProperties" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
-          }
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "allowOutOfOrderDelivery" : {
-          "type" : "boolean"
-        },
-        "keySharedMode" : {
-          "type" : "string"
-        },
-        "activeConsumerName" : {
-          "type" : "string"
-        },
-        "consumersAfterMarkDeletePosition" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "type" : "string"
+        "consumers" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ConsumerStats"
           }
         },
         "chunkedMessageRate" : {
           "type" : "integer",
           "format" : "int32"
         },
-        "earliestMsgPublishTimeInBacklog" : {
-          "type" : "integer",
-          "format" : "int64"
+        "msgRateExpired" : {
+          "type" : "number",
+          "format" : "double"
         },
-        "msgBacklogNoDelayed" : {
+        "msgBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "blockedSubscriptionOnUnackedMsgs" : {
-          "type" : "boolean"
-        },
         "msgRateRedeliver" : {
           "type" : "number",
           "format" : "double"
         },
-        "unackedMessages" : {
+        "earliestMsgPublishTimeInBacklog" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgBacklog" : {
+        "msgBacklogNoDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "lastConsumedTimestamp" : {
-          "type" : "integer",
-          "format" : "int64"
+        "blockedSubscriptionOnUnackedMsgs" : {
+          "type" : "boolean"
         },
-        "lastAckedTimestamp" : {
+        "msgDelayed" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "lastMarkDeleteAdvancedTimestamp" : {
+        "unackedMessages" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "msgRateExpired" : {
-          "type" : "number",
-          "format" : "double"
+        "activeConsumerName" : {
+          "type" : "string"
         },
         "totalMsgExpired" : {
           "type" : "integer",
@@ -23792,10 +23760,42 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "msgDelayed" : {
+        "lastConsumedTimestamp" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "lastAckedTimestamp" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "lastMarkDeleteAdvancedTimestamp" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "allowOutOfOrderDelivery" : {
+          "type" : "boolean"
+        },
+        "keySharedMode" : {
+          "type" : "string"
+        },
+        "consumersAfterMarkDeletePosition" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "subscriptionProperties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "replicated" : {
+          "type" : "boolean"
+        },
+        "durable" : {
+          "type" : "boolean"
+        },
         "type" : {
           "type" : "string"
         }
@@ -23863,9 +23863,6 @@
         "displayName" : {
           "type" : "string"
         },
-        "id" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -23873,17 +23870,22 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "id" : {
+          "type" : "string"
         }
       }
     },
     "TopicStats" : {
       "type" : "object",
       "properties" : {
-        "subscriptions" : {
-          "type" : "object",
-          "additionalProperties" : {
-            "$ref" : "#/definitions/SubscriptionStats"
-          }
+        "msgRateIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
+        "msgRateOut" : {
+          "type" : "number",
+          "format" : "double"
         },
         "msgThroughputIn" : {
           "type" : "number",
@@ -23966,13 +23968,11 @@
         "compaction" : {
           "$ref" : "#/definitions/CompactionStats"
         },
-        "msgRateIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
-        "msgRateOut" : {
-          "type" : "number",
-          "format" : "double"
+        "subscriptions" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/SubscriptionStats"
+          }
         }
       }
     },
@@ -24375,11 +24375,8 @@
     "WorkerService" : {
       "type" : "object",
       "properties" : {
-        "functions" : {
-          "$ref" : "#/definitions/FunctionsWorkerService"
-        },
-        "sinks" : {
-          "$ref" : "#/definitions/SinksWorkerService"
+        "workerConfig" : {
+          "$ref" : "#/definitions/WorkerConfig"
         },
         "sources" : {
           "$ref" : "#/definitions/SourcesWorkerService"
@@ -24387,8 +24384,11 @@
         "initialized" : {
           "type" : "boolean"
         },
-        "workerConfig" : {
-          "$ref" : "#/definitions/WorkerConfig"
+        "functions" : {
+          "$ref" : "#/definitions/FunctionsWorkerService"
+        },
+        "sinks" : {
+          "$ref" : "#/definitions/SinksWorkerService"
         },
         "functionsV2" : {
           "$ref" : "#/definitions/FunctionsV2WorkerService"
@@ -24437,13 +24437,6 @@
         "subjectDN" : {
           "$ref" : "#/definitions/Principal"
         },
-        "tbscertificate" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -24507,13 +24500,20 @@
             }
           }
         },
-        "serialNumber" : {
-          "type" : "integer"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "serialNumber" : {
+          "type" : "integer"
+        },
+        "tbscertificate" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "signature" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
index eac0f785..5d2f619 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerfunctions.json
@@ -1183,24 +1183,17 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "deserializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1210,6 +1203,13 @@
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "deserializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "rootName" : {
           "type" : "string"
         },
@@ -1225,18 +1225,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -1249,6 +1246,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1257,12 +1257,12 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
@@ -1272,6 +1272,12 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
+        },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
@@ -1285,12 +1291,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
-        },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "factory" : {
           "$ref" : "#/definitions/DeserializerFactory"
         }
@@ -1556,6 +1556,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "processedSuccessfullyTotal" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "systemExceptionsTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -1567,10 +1571,6 @@
         "avgProcessLatency" : {
           "type" : "number",
           "format" : "double"
-        },
-        "processedSuccessfullyTotal" : {
-          "type" : "integer",
-          "format" : "int64"
         }
       }
     },
@@ -1581,6 +1581,10 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "processedSuccessfullyTotal" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
         "systemExceptionsTotal" : {
           "type" : "integer",
           "format" : "int64"
@@ -1592,10 +1596,6 @@
         "avgProcessLatency" : {
           "type" : "number",
           "format" : "double"
-        },
-        "processedSuccessfullyTotal" : {
-          "type" : "integer",
-          "format" : "int64"
         }
       }
     },
@@ -1996,10 +1996,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -2014,6 +2010,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -2069,12 +2069,12 @@
         "typeId" : {
           "type" : "object"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -2180,11 +2180,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -2284,6 +2284,9 @@
     "Message" : {
       "type" : "object",
       "properties" : {
+        "topicName" : {
+          "type" : "string"
+        },
         "messageId" : {
           "$ref" : "#/definitions/MessageId"
         },
@@ -2315,9 +2318,6 @@
             "format" : "byte"
           }
         },
-        "topicName" : {
-          "type" : "string"
-        },
         "publishTime" : {
           "type" : "integer",
           "format" : "int64"
@@ -2707,9 +2707,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -2719,6 +2716,9 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "serializationInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
@@ -2742,18 +2742,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -2766,6 +2763,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -2777,24 +2777,18 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "filterProvider" : {
           "$ref" : "#/definitions/FilterProvider"
         },
@@ -2803,6 +2797,12 @@
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
+        },
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -2821,9 +2821,6 @@
         "displayName" : {
           "type" : "string"
         },
-        "id" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2831,6 +2828,9 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "id" : {
+          "type" : "string"
         }
       }
     },
@@ -2956,13 +2956,6 @@
         "subjectDN" : {
           "$ref" : "#/definitions/Principal"
         },
-        "tbscertificate" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -3026,13 +3019,20 @@
             }
           }
         },
-        "serialNumber" : {
-          "type" : "integer"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "serialNumber" : {
+          "type" : "integer"
+        },
+        "tbscertificate" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "signature" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
index 6ce87f9..6e2b38d 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggerpackages.json
@@ -568,24 +568,17 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "deserializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -595,6 +588,13 @@
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "deserializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "rootName" : {
           "type" : "string"
         },
@@ -610,18 +610,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -634,6 +631,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -642,12 +642,12 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
@@ -657,6 +657,12 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
+        },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
@@ -670,12 +676,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
-        },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "factory" : {
           "$ref" : "#/definitions/DeserializerFactory"
         }
@@ -870,10 +870,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -888,6 +884,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -943,12 +943,12 @@
         "typeId" : {
           "type" : "object"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1054,11 +1054,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1424,9 +1424,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1436,6 +1433,9 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "serializationInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
@@ -1459,18 +1459,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -1483,6 +1480,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1494,24 +1494,18 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "filterProvider" : {
           "$ref" : "#/definitions/FilterProvider"
         },
@@ -1520,6 +1514,12 @@
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
+        },
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -1541,9 +1541,6 @@
         "displayName" : {
           "type" : "string"
         },
-        "id" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -1551,6 +1548,9 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "id" : {
+          "type" : "string"
         }
       }
     },
@@ -1628,13 +1628,6 @@
         "subjectDN" : {
           "$ref" : "#/definitions/Principal"
         },
-        "tbscertificate" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -1698,13 +1691,20 @@
             }
           }
         },
-        "serialNumber" : {
-          "type" : "integer"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "serialNumber" : {
+          "type" : "integer"
+        },
+        "tbscertificate" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "signature" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
index 3dfa720..b2c5030 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersink.json
@@ -1062,24 +1062,17 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "deserializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1089,6 +1082,13 @@
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "deserializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "rootName" : {
           "type" : "string"
         },
@@ -1104,18 +1104,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -1128,6 +1125,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1136,12 +1136,12 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
@@ -1151,6 +1151,12 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
+        },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
@@ -1164,12 +1170,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
-        },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "factory" : {
           "$ref" : "#/definitions/DeserializerFactory"
         }
@@ -1376,10 +1376,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1394,6 +1390,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1449,12 +1449,12 @@
         "typeId" : {
           "type" : "object"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1560,11 +1560,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1922,9 +1922,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1934,6 +1931,9 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "serializationInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
@@ -1957,18 +1957,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -1981,6 +1978,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1992,24 +1992,18 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "filterProvider" : {
           "$ref" : "#/definitions/FilterProvider"
         },
@@ -2018,6 +2012,12 @@
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
+        },
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -2230,9 +2230,6 @@
         "displayName" : {
           "type" : "string"
         },
-        "id" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2240,6 +2237,9 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "id" : {
+          "type" : "string"
         }
       }
     },
@@ -2327,13 +2327,6 @@
         "subjectDN" : {
           "$ref" : "#/definitions/Principal"
         },
-        "tbscertificate" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -2397,13 +2390,20 @@
             }
           }
         },
-        "serialNumber" : {
-          "type" : "integer"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "serialNumber" : {
+          "type" : "integer"
+        },
+        "tbscertificate" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "signature" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
index a27e237..1021b258 100644
--- a/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
+++ b/content/swagger/2.10.0-SNAPSHOT/swaggersource.json
@@ -1043,24 +1043,17 @@
         "numberFormat" : {
           "$ref" : "#/definitions/NumberFormat"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "lenient" : {
           "type" : "boolean"
+        },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
         }
       }
     },
     "DeserializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "deserializationFeatures" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1070,6 +1063,13 @@
         "nodeFactory" : {
           "$ref" : "#/definitions/JsonNodeFactory"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
+        "deserializationFeatures" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
         "rootName" : {
           "type" : "string"
         },
@@ -1085,18 +1085,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -1109,6 +1106,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1117,12 +1117,12 @@
     "DeserializationContext" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/DeserializationConfig"
         },
@@ -1132,6 +1132,12 @@
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
+        "arrayBuilders" : {
+          "$ref" : "#/definitions/ArrayBuilders"
+        },
+        "nodeFactory" : {
+          "$ref" : "#/definitions/JsonNodeFactory"
+        },
         "annotationIntrospector" : {
           "$ref" : "#/definitions/AnnotationIntrospector"
         },
@@ -1145,12 +1151,6 @@
         "base64Variant" : {
           "$ref" : "#/definitions/Base64Variant"
         },
-        "arrayBuilders" : {
-          "$ref" : "#/definitions/ArrayBuilders"
-        },
-        "nodeFactory" : {
-          "$ref" : "#/definitions/JsonNodeFactory"
-        },
         "factory" : {
           "$ref" : "#/definitions/DeserializerFactory"
         }
@@ -1357,10 +1357,6 @@
     "JsonLocation" : {
       "type" : "object",
       "properties" : {
-        "byteOffset" : {
-          "type" : "integer",
-          "format" : "int64"
-        },
         "sourceRef" : {
           "type" : "object"
         },
@@ -1375,6 +1371,10 @@
         "charOffset" : {
           "type" : "integer",
           "format" : "int64"
+        },
+        "byteOffset" : {
+          "type" : "integer",
+          "format" : "int64"
         }
       }
     },
@@ -1430,12 +1430,12 @@
         "typeId" : {
           "type" : "object"
         },
-        "tokenLocation" : {
-          "$ref" : "#/definitions/JsonLocation"
-        },
         "schema" : {
           "$ref" : "#/definitions/FormatSchema"
         },
+        "tokenLocation" : {
+          "$ref" : "#/definitions/JsonLocation"
+        },
         "codec" : {
           "$ref" : "#/definitions/ObjectCodec"
         },
@@ -1541,11 +1541,11 @@
     "JsonSerializerObject" : {
       "type" : "object",
       "properties" : {
-        "delegatee" : {
-          "$ref" : "#/definitions/JsonSerializerObject"
-        },
         "unwrappingSerializer" : {
           "type" : "boolean"
+        },
+        "delegatee" : {
+          "$ref" : "#/definitions/JsonSerializerObject"
         }
       }
     },
@@ -1925,9 +1925,6 @@
     "SerializationConfig" : {
       "type" : "object",
       "properties" : {
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
         "defaultPropertyInclusion" : {
           "$ref" : "#/definitions/Value"
         },
@@ -1937,6 +1934,9 @@
         "defaultPrettyPrinter" : {
           "$ref" : "#/definitions/PrettyPrinter"
         },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
+        },
         "serializationInclusion" : {
           "type" : "string",
           "enum" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "USE_DEFAULTS" ]
@@ -1960,18 +1960,15 @@
         "attributes" : {
           "$ref" : "#/definitions/ContextAttributes"
         },
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "base64Variant" : {
-          "$ref" : "#/definitions/Base64Variant"
-        },
         "annotationProcessingEnabled" : {
           "type" : "boolean"
         },
@@ -1984,6 +1981,9 @@
         "dateFormat" : {
           "$ref" : "#/definitions/DateFormat"
         },
+        "base64Variant" : {
+          "$ref" : "#/definitions/Base64Variant"
+        },
         "classIntrospector" : {
           "$ref" : "#/definitions/ClassIntrospector"
         }
@@ -1995,24 +1995,18 @@
     "SerializerProvider" : {
       "type" : "object",
       "properties" : {
-        "timeZone" : {
-          "$ref" : "#/definitions/TimeZone"
-        },
         "locale" : {
           "$ref" : "#/definitions/Locale"
         },
+        "timeZone" : {
+          "$ref" : "#/definitions/TimeZone"
+        },
         "config" : {
           "$ref" : "#/definitions/SerializationConfig"
         },
         "typeFactory" : {
           "$ref" : "#/definitions/TypeFactory"
         },
-        "annotationIntrospector" : {
-          "$ref" : "#/definitions/AnnotationIntrospector"
-        },
-        "generator" : {
-          "$ref" : "#/definitions/JsonGenerator"
-        },
         "filterProvider" : {
           "$ref" : "#/definitions/FilterProvider"
         },
@@ -2021,6 +2015,12 @@
         },
         "defaultNullValueSerializer" : {
           "$ref" : "#/definitions/JsonSerializerObject"
+        },
+        "generator" : {
+          "$ref" : "#/definitions/JsonGenerator"
+        },
+        "annotationIntrospector" : {
+          "$ref" : "#/definitions/AnnotationIntrospector"
         }
       }
     },
@@ -2187,9 +2187,6 @@
         "displayName" : {
           "type" : "string"
         },
-        "id" : {
-          "type" : "string"
-        },
         "dstsavings" : {
           "type" : "integer",
           "format" : "int32"
@@ -2197,6 +2194,9 @@
         "rawOffset" : {
           "type" : "integer",
           "format" : "int32"
+        },
+        "id" : {
+          "type" : "string"
         }
       }
     },
@@ -2284,13 +2284,6 @@
         "subjectDN" : {
           "$ref" : "#/definitions/Principal"
         },
-        "tbscertificate" : {
-          "type" : "array",
-          "items" : {
-            "type" : "string",
-            "format" : "byte"
-          }
-        },
         "extendedKeyUsage" : {
           "type" : "array",
           "items" : {
@@ -2354,13 +2347,20 @@
             }
           }
         },
-        "serialNumber" : {
-          "type" : "integer"
-        },
         "version" : {
           "type" : "integer",
           "format" : "int32"
         },
+        "serialNumber" : {
+          "type" : "integer"
+        },
+        "tbscertificate" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string",
+            "format" : "byte"
+          }
+        },
         "signature" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
index b35e863..f0417d1 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v2/swagger.json
@@ -24025,6 +24025,16 @@
                         }
                     }
                 },
+                "subscriptionAuthentication": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "array",
+                        "uniqueItems": true,
+                        "items": {
+                            "type": "string"
+                        }
+                    }
+                },
                 "topicAuthentication": {
                     "type": "object",
                     "additionalProperties": {
@@ -24045,16 +24055,6 @@
                             }
                         }
                     }
-                },
-                "subscriptionAuthentication": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "array",
-                        "uniqueItems": true,
-                        "items": {
-                            "type": "string"
-                        }
-                    }
                 }
             }
         },
@@ -24481,11 +24481,9 @@
         "ConsumerStats": {
             "type": "object",
             "properties": {
-                "metadata": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputOut": {
                     "type": "number",
@@ -24499,31 +24497,45 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "consumerName": {
-                    "type": "string"
+                "metadata": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "chunkedMessageRate": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "connectedSince": {
                     "type": "string"
                 },
-                "availablePermits": {
-                    "type": "integer",
-                    "format": "int32"
+                "clientVersion": {
+                    "type": "string"
                 },
-                "msgRateOut": {
+                "msgRateRedeliver": {
                     "type": "number",
                     "format": "double"
                 },
-                "chunkedMessageRate": {
-                    "type": "number",
-                    "format": "double"
+                "unackedMessages": {
+                    "type": "integer",
+                    "format": "int32"
                 },
-                "msgRateRedeliver": {
-                    "type": "number",
-                    "format": "double"
+                "lastConsumedTimestamp": {
+                    "type": "integer",
+                    "format": "int64"
                 },
-                "clientVersion": {
+                "lastAckedTimestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "consumerName": {
                     "type": "string"
                 },
+                "availablePermits": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "avgMessagesPerEntry": {
                     "type": "integer",
                     "format": "int32"
@@ -24540,18 +24552,6 @@
                         "type": "string"
                     }
                 },
-                "unackedMessages": {
-                    "type": "integer",
-                    "format": "int32"
-                },
-                "lastConsumedTimestamp": {
-                    "type": "integer",
-                    "format": "int64"
-                },
-                "lastAckedTimestamp": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "address": {
                     "type": "string"
                 }
@@ -24668,11 +24668,11 @@
                 "numberFormat": {
                     "$ref": "#/definitions/NumberFormat"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "lenient": {
                     "type": "boolean"
+                },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 }
             }
         },
@@ -24700,13 +24700,6 @@
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
-                "deserializationFeatures": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
@@ -24716,6 +24709,13 @@
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
+                "deserializationFeatures": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -24731,18 +24731,15 @@
                 "attributes": {
                     "$ref": "#/definitions/ContextAttributes"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "base64Variant": {
-                    "$ref": "#/definitions/Base64Variant"
-                },
                 "annotationProcessingEnabled": {
                     "type": "boolean"
                 },
@@ -24755,6 +24752,9 @@
                 "dateFormat": {
                     "$ref": "#/definitions/DateFormat"
                 },
+                "base64Variant": {
+                    "$ref": "#/definitions/Base64Variant"
+                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -24763,12 +24763,12 @@
         "DeserializationContext": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
                 },
@@ -24778,6 +24778,12 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "arrayBuilders": {
+                    "$ref": "#/definitions/ArrayBuilders"
+                },
+                "nodeFactory": {
+                    "$ref": "#/definitions/JsonNodeFactory"
+                },
                 "annotationIntrospector": {
                     "$ref": "#/definitions/AnnotationIntrospector"
                 },
@@ -24791,12 +24797,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "arrayBuilders": {
-                    "$ref": "#/definitions/ArrayBuilders"
-                },
-                "nodeFactory": {
-                    "$ref": "#/definitions/JsonNodeFactory"
-                },
                 "factory": {
                     "$ref": "#/definitions/DeserializerFactory"
                 }
@@ -24808,10 +24808,6 @@
         "DispatchRate": {
             "type": "object",
             "properties": {
-                "ratePeriodInSecond": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "dispatchThrottlingRateInMsg": {
                     "type": "integer",
                     "format": "int32"
@@ -24822,6 +24818,10 @@
                 },
                 "relativeToPublishRate": {
                     "type": "boolean"
+                },
+                "ratePeriodInSecond": {
+                    "type": "integer",
+                    "format": "int32"
                 }
             }
         },
@@ -24898,6 +24898,10 @@
                     "type": "integer",
                     "format": "int64"
                 },
+                "processedSuccessfullyTotal": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "systemExceptionsTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -24909,10 +24913,6 @@
                 "avgProcessLatency": {
                     "type": "number",
                     "format": "double"
-                },
-                "processedSuccessfullyTotal": {
-                    "type": "integer",
-                    "format": "int64"
                 }
             }
         },
@@ -24923,6 +24923,10 @@
                     "type": "integer",
                     "format": "int64"
                 },
+                "processedSuccessfullyTotal": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "systemExceptionsTotal": {
                     "type": "integer",
                     "format": "int64"
@@ -24934,10 +24938,6 @@
                 "avgProcessLatency": {
                     "type": "number",
                     "format": "double"
-                },
-                "processedSuccessfullyTotal": {
-                    "type": "integer",
-                    "format": "int64"
                 }
             }
         },
@@ -25267,10 +25267,6 @@
         "JsonLocation": {
             "type": "object",
             "properties": {
-                "byteOffset": {
-                    "type": "integer",
-                    "format": "int64"
-                },
                 "sourceRef": {
                     "type": "object"
                 },
@@ -25285,6 +25281,10 @@
                 "charOffset": {
                     "type": "integer",
                     "format": "int64"
+                },
+                "byteOffset": {
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -25340,12 +25340,12 @@
                 "typeId": {
                     "type": "object"
                 },
-                "tokenLocation": {
-                    "$ref": "#/definitions/JsonLocation"
-                },
                 "schema": {
                     "$ref": "#/definitions/FormatSchema"
                 },
+                "tokenLocation": {
+                    "$ref": "#/definitions/JsonLocation"
+                },
                 "codec": {
                     "$ref": "#/definitions/ObjectCodec"
                 },
@@ -25486,11 +25486,11 @@
         "JsonSerializerObject": {
             "type": "object",
             "properties": {
-                "delegatee": {
-                    "$ref": "#/definitions/JsonSerializerObject"
-                },
                 "unwrappingSerializer": {
                     "type": "boolean"
+                },
+                "delegatee": {
+                    "$ref": "#/definitions/JsonSerializerObject"
                 }
             }
         },
@@ -25803,6 +25803,15 @@
                     "type": "number",
                     "format": "double"
                 },
+                "bandwidthIn": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "bandwidthOut": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
+                "memory": {
+                    "$ref": "#/definitions/ResourceUsage"
+                },
                 "msgThroughputIn": {
                     "type": "number",
                     "format": "double"
@@ -25811,14 +25820,14 @@
                     "type": "number",
                     "format": "double"
                 },
-                "bandwidthIn": {
-                    "$ref": "#/definitions/ResourceUsage"
+                "underLoaded": {
+                    "type": "boolean"
                 },
-                "bandwidthOut": {
-                    "$ref": "#/definitions/ResourceUsage"
+                "overLoaded": {
+                    "type": "boolean"
                 },
-                "memory": {
-                    "$ref": "#/definitions/ResourceUsage"
+                "loadReportType": {
+                    "type": "string"
                 },
                 "cpu": {
                     "$ref": "#/definitions/ResourceUsage"
@@ -25829,15 +25838,6 @@
                 "lastUpdate": {
                     "type": "integer",
                     "format": "int64"
-                },
-                "underLoaded": {
-                    "type": "boolean"
-                },
-                "overLoaded": {
-                    "type": "boolean"
-                },
-                "loadReportType": {
-                    "type": "string"
                 }
             }
         },
@@ -26110,14 +26110,9 @@
                     "type": "number",
                     "format": "double"
                 },
-                "metadata": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "producerName": {
-                    "type": "string"
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputIn": {
                     "type": "number",
@@ -26127,8 +26122,11 @@
                     "type": "number",
                     "format": "double"
                 },
-                "connectedSince": {
-                    "type": "string"
+                "metadata": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
                 },
                 "accessMode": {
                     "type": "string",
@@ -26138,21 +26136,23 @@
                         "WaitForExclusive"
                     ]
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "chunkedMessageRate": {
                     "type": "number",
                     "format": "double"
                 },
-                "clientVersion": {
-                    "type": "string"
-                },
                 "producerId": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                },
+                "producerName": {
+                    "type": "string"
+                },
                 "address": {
                     "type": "string"
                 }
@@ -26165,8 +26165,13 @@
                     "type": "number",
                     "format": "double"
                 },
-                "connected": {
-                    "type": "boolean"
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputIn": {
                     "type": "number",
@@ -26176,15 +26181,10 @@
                     "type": "number",
                     "format": "double"
                 },
-                "replicationDelayInSeconds": {
-                    "type": "integer",
-                    "format": "int64"
+                "connected": {
+                    "type": "boolean"
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
+                "msgRateExpired": {
                     "type": "number",
                     "format": "double"
                 },
@@ -26192,6 +26192,10 @@
                     "type": "integer",
                     "format": "int64"
                 },
+                "replicationDelayInSeconds": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "inboundConnection": {
                     "type": "string"
                 },
@@ -26203,10 +26207,6 @@
                 },
                 "outboundConnectedSince": {
                     "type": "string"
-                },
-                "msgRateExpired": {
-                    "type": "number",
-                    "format": "double"
                 }
             }
         },
@@ -26217,17 +26217,9 @@
                     "type": "number",
                     "format": "double"
                 },
-                "replicated": {
-                    "type": "boolean"
-                },
-                "durable": {
-                    "type": "boolean"
-                },
-                "consumers": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/ConsumerStats"
-                    }
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputOut": {
                     "type": "number",
@@ -26253,73 +26245,49 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "subscriptionProperties": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "allowOutOfOrderDelivery": {
-                    "type": "boolean"
-                },
-                "keySharedMode": {
-                    "type": "string"
-                },
-                "activeConsumerName": {
-                    "type": "string"
-                },
-                "consumersAfterMarkDeletePosition": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
+                "consumers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/ConsumerStats"
                     }
                 },
                 "chunkedMessageRate": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "earliestMsgPublishTimeInBacklog": {
-                    "type": "integer",
-                    "format": "int64"
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "msgBacklogNoDelayed": {
+                "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
-                },
                 "msgRateRedeliver": {
                     "type": "number",
                     "format": "double"
                 },
-                "unackedMessages": {
+                "earliestMsgPublishTimeInBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgBacklog": {
+                "msgBacklogNoDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "lastConsumedTimestamp": {
-                    "type": "integer",
-                    "format": "int64"
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
                 },
-                "lastAckedTimestamp": {
+                "msgDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "lastMarkDeleteAdvancedTimestamp": {
+                "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgRateExpired": {
-                    "type": "number",
-                    "format": "double"
+                "activeConsumerName": {
+                    "type": "string"
                 },
                 "totalMsgExpired": {
                     "type": "integer",
@@ -26333,10 +26301,42 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgDelayed": {
+                "lastConsumedTimestamp": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "lastAckedTimestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "lastMarkDeleteAdvancedTimestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "allowOutOfOrderDelivery": {
+                    "type": "boolean"
+                },
+                "keySharedMode": {
+                    "type": "string"
+                },
+                "consumersAfterMarkDeletePosition": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "subscriptionProperties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "replicated": {
+                    "type": "boolean"
+                },
+                "durable": {
+                    "type": "boolean"
+                },
                 "type": {
                     "type": "string"
                 }
@@ -26345,11 +26345,9 @@
         "NonPersistentTopicStats": {
             "type": "object",
             "properties": {
-                "subscriptions": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "$ref": "#/definitions/NonPersistentSubscriptionStats"
-                    }
+                "msgDropRate": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "publishers": {
                     "type": "array",
@@ -26363,7 +26361,17 @@
                         "$ref": "#/definitions/NonPersistentReplicatorStats"
                     }
                 },
-                "msgDropRate": {
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/NonPersistentSubscriptionStats"
+                    }
+                },
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
@@ -26435,14 +26443,6 @@
                 },
                 "compaction": {
                     "$ref": "#/definitions/CompactionStats"
-                },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
                 }
             }
         },
@@ -26556,13 +26556,19 @@
         "OffloadPolicies": {
             "type": "object",
             "properties": {
-                "managedLedgerOffloadThresholdInBytes": {
+                "managedLedgerOffloadDriver": {
+                    "type": "string"
+                },
+                "offloadersDirectory": {
+                    "type": "string"
+                },
+                "managedLedgerOffloadMaxThreads": {
                     "type": "integer",
-                    "format": "int64"
+                    "format": "int32"
                 },
-                "managedLedgerOffloadDeletionLagInMillis": {
+                "managedLedgerOffloadPrefetchRounds": {
                     "type": "integer",
-                    "format": "int64"
+                    "format": "int32"
                 },
                 "managedLedgerOffloadedReadPriority": {
                     "type": "string",
@@ -26571,6 +26577,9 @@
                         "TIERED_STORAGE_FIRST"
                     ]
                 },
+                "fileSystemURI": {
+                    "type": "string"
+                },
                 "s3ManagedLedgerOffloadRegion": {
                     "type": "string"
                 },
@@ -26637,22 +26646,13 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "fileSystemURI": {
-                    "type": "string"
-                },
-                "offloadersDirectory": {
-                    "type": "string"
-                },
-                "managedLedgerOffloadDriver": {
-                    "type": "string"
-                },
-                "managedLedgerOffloadMaxThreads": {
+                "managedLedgerOffloadThresholdInBytes": {
                     "type": "integer",
-                    "format": "int32"
+                    "format": "int64"
                 },
-                "managedLedgerOffloadPrefetchRounds": {
+                "managedLedgerOffloadDeletionLagInMillis": {
                     "type": "integer",
-                    "format": "int32"
+                    "format": "int64"
                 }
             }
         },
@@ -27446,14 +27446,9 @@
         "PublisherStats": {
             "type": "object",
             "properties": {
-                "metadata": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "producerName": {
-                    "type": "string"
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputIn": {
                     "type": "number",
@@ -27463,8 +27458,11 @@
                     "type": "number",
                     "format": "double"
                 },
-                "connectedSince": {
-                    "type": "string"
+                "metadata": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
                 },
                 "accessMode": {
                     "type": "string",
@@ -27474,21 +27472,23 @@
                         "WaitForExclusive"
                     ]
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
                 "chunkedMessageRate": {
                     "type": "number",
                     "format": "double"
                 },
-                "clientVersion": {
-                    "type": "string"
-                },
                 "producerId": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "connectedSince": {
+                    "type": "string"
+                },
+                "clientVersion": {
+                    "type": "string"
+                },
+                "producerName": {
+                    "type": "string"
+                },
                 "address": {
                     "type": "string"
                 }
@@ -27505,26 +27505,26 @@
         "ReplicatorStats": {
             "type": "object",
             "properties": {
-                "connected": {
-                    "type": "boolean"
-                },
-                "msgThroughputIn": {
+                "msgRateIn": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgThroughputOut": {
+                "msgRateOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "replicationDelayInSeconds": {
-                    "type": "integer",
-                    "format": "int64"
+                "msgThroughputIn": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "msgRateIn": {
+                "msgThroughputOut": {
                     "type": "number",
                     "format": "double"
                 },
-                "msgRateOut": {
+                "connected": {
+                    "type": "boolean"
+                },
+                "msgRateExpired": {
                     "type": "number",
                     "format": "double"
                 },
@@ -27532,6 +27532,10 @@
                     "type": "integer",
                     "format": "int64"
                 },
+                "replicationDelayInSeconds": {
+                    "type": "integer",
+                    "format": "int64"
+                },
                 "inboundConnection": {
                     "type": "string"
                 },
@@ -27543,10 +27547,6 @@
                 },
                 "outboundConnectedSince": {
                     "type": "string"
-                },
-                "msgRateExpired": {
-                    "type": "number",
-                    "format": "double"
                 }
             }
         },
@@ -27698,9 +27698,6 @@
         "SerializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
@@ -27710,6 +27707,9 @@
                 "defaultPrettyPrinter": {
                     "$ref": "#/definitions/PrettyPrinter"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
                 "serializationInclusion": {
                     "type": "string",
                     "enum": [
@@ -27740,18 +27740,15 @@
                 "attributes": {
                     "$ref": "#/definitions/ContextAttributes"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "base64Variant": {
-                    "$ref": "#/definitions/Base64Variant"
-                },
                 "annotationProcessingEnabled": {
                     "type": "boolean"
                 },
@@ -27764,6 +27761,9 @@
                 "dateFormat": {
                     "$ref": "#/definitions/DateFormat"
                 },
+                "base64Variant": {
+                    "$ref": "#/definitions/Base64Variant"
+                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -27775,24 +27775,18 @@
         "SerializerProvider": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "config": {
                     "$ref": "#/definitions/SerializationConfig"
                 },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
-                "generator": {
-                    "$ref": "#/definitions/JsonGenerator"
-                },
                 "filterProvider": {
                     "$ref": "#/definitions/FilterProvider"
                 },
@@ -27801,6 +27795,12 @@
                 },
                 "defaultNullValueSerializer": {
                     "$ref": "#/definitions/JsonSerializerObject"
+                },
+                "generator": {
+                    "$ref": "#/definitions/JsonGenerator"
+                },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
                 }
             }
         },
@@ -27894,17 +27894,9 @@
         "SubscriptionStats": {
             "type": "object",
             "properties": {
-                "replicated": {
-                    "type": "boolean"
-                },
-                "durable": {
-                    "type": "boolean"
-                },
-                "consumers": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/definitions/ConsumerStats"
-                    }
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputOut": {
                     "type": "number",
@@ -27930,73 +27922,49 @@
                     "type": "integer",
                     "format": "int32"
                 },
-                "subscriptionProperties": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
-                    }
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "allowOutOfOrderDelivery": {
-                    "type": "boolean"
-                },
-                "keySharedMode": {
-                    "type": "string"
-                },
-                "activeConsumerName": {
-                    "type": "string"
-                },
-                "consumersAfterMarkDeletePosition": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "type": "string"
+                "consumers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/ConsumerStats"
                     }
                 },
                 "chunkedMessageRate": {
                     "type": "integer",
                     "format": "int32"
                 },
-                "earliestMsgPublishTimeInBacklog": {
-                    "type": "integer",
-                    "format": "int64"
+                "msgRateExpired": {
+                    "type": "number",
+                    "format": "double"
                 },
-                "msgBacklogNoDelayed": {
+                "msgBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "blockedSubscriptionOnUnackedMsgs": {
-                    "type": "boolean"
-                },
                 "msgRateRedeliver": {
                     "type": "number",
                     "format": "double"
                 },
-                "unackedMessages": {
+                "earliestMsgPublishTimeInBacklog": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgBacklog": {
+                "msgBacklogNoDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "lastConsumedTimestamp": {
-                    "type": "integer",
-                    "format": "int64"
+                "blockedSubscriptionOnUnackedMsgs": {
+                    "type": "boolean"
                 },
-                "lastAckedTimestamp": {
+                "msgDelayed": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "lastMarkDeleteAdvancedTimestamp": {
+                "unackedMessages": {
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgRateExpired": {
-                    "type": "number",
-                    "format": "double"
+                "activeConsumerName": {
+                    "type": "string"
                 },
                 "totalMsgExpired": {
                     "type": "integer",
@@ -28010,10 +27978,42 @@
                     "type": "integer",
                     "format": "int64"
                 },
-                "msgDelayed": {
+                "lastConsumedTimestamp": {
                     "type": "integer",
                     "format": "int64"
                 },
+                "lastAckedTimestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "lastMarkDeleteAdvancedTimestamp": {
+                    "type": "integer",
+                    "format": "int64"
+                },
+                "allowOutOfOrderDelivery": {
+                    "type": "boolean"
+                },
+                "keySharedMode": {
+                    "type": "string"
+                },
+                "consumersAfterMarkDeletePosition": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "subscriptionProperties": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "string"
+                    }
+                },
+                "replicated": {
+                    "type": "boolean"
+                },
+                "durable": {
+                    "type": "boolean"
+                },
                 "type": {
                     "type": "string"
                 }
@@ -28081,9 +28081,6 @@
                 "displayName": {
                     "type": "string"
                 },
-                "id": {
-                    "type": "string"
-                },
                 "dstsavings": {
                     "type": "integer",
                     "format": "int32"
@@ -28091,17 +28088,22 @@
                 "rawOffset": {
                     "type": "integer",
                     "format": "int32"
+                },
+                "id": {
+                    "type": "string"
                 }
             }
         },
         "TopicStats": {
             "type": "object",
             "properties": {
-                "subscriptions": {
-                    "type": "object",
-                    "additionalProperties": {
-                        "$ref": "#/definitions/SubscriptionStats"
-                    }
+                "msgRateIn": {
+                    "type": "number",
+                    "format": "double"
+                },
+                "msgRateOut": {
+                    "type": "number",
+                    "format": "double"
                 },
                 "msgThroughputIn": {
                     "type": "number",
@@ -28184,13 +28186,11 @@
                 "compaction": {
                     "$ref": "#/definitions/CompactionStats"
                 },
-                "msgRateIn": {
-                    "type": "number",
-                    "format": "double"
-                },
-                "msgRateOut": {
-                    "type": "number",
-                    "format": "double"
+                "subscriptions": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "$ref": "#/definitions/SubscriptionStats"
+                    }
                 }
             }
         },
@@ -28607,11 +28607,8 @@
         "WorkerService": {
             "type": "object",
             "properties": {
-                "functions": {
-                    "$ref": "#/definitions/FunctionsWorkerService"
-                },
-                "sinks": {
-                    "$ref": "#/definitions/SinksWorkerService"
+                "workerConfig": {
+                    "$ref": "#/definitions/WorkerConfig"
                 },
                 "sources": {
                     "$ref": "#/definitions/SourcesWorkerService"
@@ -28619,8 +28616,11 @@
                 "initialized": {
                     "type": "boolean"
                 },
-                "workerConfig": {
-                    "$ref": "#/definitions/WorkerConfig"
+                "functions": {
+                    "$ref": "#/definitions/FunctionsWorkerService"
+                },
+                "sinks": {
+                    "$ref": "#/definitions/SinksWorkerService"
                 },
                 "functionsV2": {
                     "$ref": "#/definitions/FunctionsV2WorkerService"
@@ -28669,13 +28669,6 @@
                 "subjectDN": {
                     "$ref": "#/definitions/Principal"
                 },
-                "tbscertificate": {
-                    "type": "array",
-                    "items": {
-                        "type": "string",
-                        "format": "byte"
-                    }
-                },
                 "extendedKeyUsage": {
                     "type": "array",
                     "items": {
@@ -28739,13 +28732,20 @@
                         }
                     }
                 },
-                "serialNumber": {
-                    "type": "integer"
-                },
                 "version": {
                     "type": "integer",
                     "format": "int32"
                 },
+                "serialNumber": {
+                    "type": "integer"
+                },
+                "tbscertificate": {
+                    "type": "array",
+                    "items": {
+                        "type": "string",
+                        "format": "byte"
+                    }
+                },
                 "signature": {
                     "type": "array",
                     "items": {
diff --git a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
index 52a74a4..ba4f5be 100644
--- a/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
+++ b/content/swagger/2.10.0-SNAPSHOT/v3/swaggerfunctions.json
@@ -1393,24 +1393,17 @@
                 "numberFormat": {
                     "$ref": "#/definitions/NumberFormat"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "lenient": {
                     "type": "boolean"
+                },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
                 }
             }
         },
         "DeserializationConfig": {
             "type": "object",
             "properties": {
-                "annotationIntrospector": {
-                    "$ref": "#/definitions/AnnotationIntrospector"
-                },
-                "deserializationFeatures": {
-                    "type": "integer",
-                    "format": "int32"
-                },
                 "defaultPropertyInclusion": {
                     "$ref": "#/definitions/Value"
                 },
@@ -1420,6 +1413,13 @@
                 "nodeFactory": {
                     "$ref": "#/definitions/JsonNodeFactory"
                 },
+                "annotationIntrospector": {
+                    "$ref": "#/definitions/AnnotationIntrospector"
+                },
+                "deserializationFeatures": {
+                    "type": "integer",
+                    "format": "int32"
+                },
                 "rootName": {
                     "type": "string"
                 },
@@ -1435,18 +1435,15 @@
                 "attributes": {
                     "$ref": "#/definitions/ContextAttributes"
                 },
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
-                "base64Variant": {
-                    "$ref": "#/definitions/Base64Variant"
-                },
                 "annotationProcessingEnabled": {
                     "type": "boolean"
                 },
@@ -1459,6 +1456,9 @@
                 "dateFormat": {
                     "$ref": "#/definitions/DateFormat"
                 },
+                "base64Variant": {
+                    "$ref": "#/definitions/Base64Variant"
+                },
                 "classIntrospector": {
                     "$ref": "#/definitions/ClassIntrospector"
                 }
@@ -1467,12 +1467,12 @@
         "DeserializationContext": {
             "type": "object",
             "properties": {
-                "timeZone": {
-                    "$ref": "#/definitions/TimeZone"
-                },
                 "locale": {
                     "$ref": "#/definitions/Locale"
                 },
+                "timeZone": {
+                    "$ref": "#/definitions/TimeZone"
+                },
                 "config": {
                     "$ref": "#/definitions/DeserializationConfig"
                 },
@@ -1482,6 +1482,12 @@
                 "typeFactory": {
                     "$ref": "#/definitions/TypeFactory"
                 },
+                "arrayBuilders": {
+                    "$ref": "#/definitions/ArrayBuilders"
+                },
+                "nodeFactory": {
+                    "$ref": "#/definitions/JsonNodeFactory"
+                },
                 "annotationIntrospector": {
                     "$ref": "#/definitions/AnnotationIntrospector"
                 },
@@ -1495,12 +1501,6 @@
                 "base64Variant": {
                     "$ref": "#/definitions/Base64Variant"
                 },
-                "arrayBuilders": {
-                    "$ref": "#/definitions/ArrayBuilders"
-                },
-                "nodeFactory": {
-                    "$ref": "#/definitions/JsonNodeFactory"
-                },
                 "factory": {
... 6552 lines suppressed ...