You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by li...@apache.org on 2021/11/17 09:25:39 UTC

[pulsar] branch master updated: fix: some docs issues (#12845)

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

liuyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 099c958  fix: some docs issues (#12845)
099c958 is described below

commit 099c958395b5618c80e10c36f04c8f53a6c999bd
Author: Li Li <ur...@gmail.com>
AuthorDate: Wed Nov 17 17:24:26 2021 +0800

    fix: some docs issues (#12845)
    
    * fix: some docs issues
    
    Signed-off-by: LiLi <ur...@gmail.com>
    
    * patch
    
    Signed-off-by: LiLi <ur...@gmail.com>
    
    * patch
    
    Signed-off-by: LiLi <ur...@gmail.com>
---
 site2/website-next/docs/adaptors-kafka.md          |   4 -
 site2/website-next/docs/adaptors-spark.md          |   4 -
 site2/website-next/docs/adaptors-storm.md          |   4 -
 site2/website-next/docs/admin-api-brokers.md       |  90 +--
 site2/website-next/docs/admin-api-clusters.md      |  90 +--
 site2/website-next/docs/admin-api-functions.md     | 270 +--------
 site2/website-next/docs/admin-api-namespaces.md    | 450 +-------------
 .../docs/admin-api-non-partitioned-topics.md       |   4 -
 .../docs/admin-api-non-persistent-topics.md        |   4 -
 site2/website-next/docs/admin-api-overview.md      |  15 +-
 site2/website-next/docs/admin-api-packages.md      | 105 +---
 .../docs/admin-api-partitioned-topics.md           |   4 -
 site2/website-next/docs/admin-api-permissions.md   |  45 +-
 .../docs/admin-api-persistent-topics.md            |   4 -
 site2/website-next/docs/admin-api-schemas.md       |   4 -
 site2/website-next/docs/admin-api-tenants.md       |  75 +--
 site2/website-next/docs/admin-api-topics.md        | 648 +++++----------------
 .../website-next/docs/administration-dashboard.md  |   3 -
 site2/website-next/docs/administration-geo.md      |  47 +-
 .../website-next/docs/administration-isolation.md  |  30 +-
 .../docs/administration-load-balance.md            |   4 -
 site2/website-next/docs/administration-proxy.md    |   4 -
 .../docs/administration-pulsar-manager.md          |   4 -
 site2/website-next/docs/administration-stats.md    |   4 -
 site2/website-next/docs/administration-upgrade.md  |   4 -
 site2/website-next/docs/administration-zk-bk.md    |   4 -
 site2/website-next/docs/client-libraries-cgo.md    |   4 -
 site2/website-next/docs/client-libraries-cpp.md    |   4 -
 site2/website-next/docs/client-libraries-dotnet.md |   4 -
 site2/website-next/docs/client-libraries-go.md     |   4 -
 site2/website-next/docs/client-libraries-java.md   |  56 +-
 site2/website-next/docs/client-libraries-node.md   |   4 -
 site2/website-next/docs/client-libraries-python.md |   4 -
 .../docs/client-libraries-websocket.md             |  67 ++-
 .../docs/concepts-architecture-overview.md         |   4 -
 site2/website-next/docs/concepts-authentication.md |   4 -
 site2/website-next/docs/concepts-clients.md        |   4 -
 site2/website-next/docs/concepts-messaging.md      | 161 +++--
 site2/website-next/docs/concepts-multi-tenancy.md  |   4 -
 .../docs/concepts-multiple-advertised-listeners.md |   4 -
 site2/website-next/docs/concepts-overview.md       |   6 +-
 .../docs/concepts-proxy-sni-routing.md             |  15 +-
 site2/website-next/docs/concepts-replication.md    |   4 -
 .../website-next/docs/concepts-schema-registry.md  |   4 -
 site2/website-next/docs/concepts-tiered-storage.md |   4 -
 .../website-next/docs/concepts-topic-compaction.md |   4 -
 site2/website-next/docs/concepts-transactions.md   |   4 -
 .../docs/cookbooks-bookkeepermetadata.md           |   4 -
 site2/website-next/docs/cookbooks-compaction.md    |   4 -
 site2/website-next/docs/cookbooks-deduplication.md |  15 +-
 site2/website-next/docs/cookbooks-encryption.md    |   4 -
 site2/website-next/docs/cookbooks-message-queue.md |   4 -
 .../website-next/docs/cookbooks-non-persistent.md  |   4 -
 site2/website-next/docs/cookbooks-partitioned.md   |   4 -
 .../docs/cookbooks-retention-expiry.md             | 122 +---
 .../website-next/docs/cookbooks-tiered-storage.md  |  46 +-
 site2/website-next/docs/deploy-aws.md              |   5 +-
 .../docs/deploy-bare-metal-multi-cluster.md        |  14 +-
 site2/website-next/docs/deploy-bare-metal.md       |  24 +-
 site2/website-next/docs/deploy-dcos.md             |   7 +-
 site2/website-next/docs/deploy-docker.md           |   4 -
 site2/website-next/docs/deploy-kubernetes.md       |   4 -
 site2/website-next/docs/deploy-monitoring.md       |   4 -
 .../docs/developing-binary-protocol.md             |   4 -
 site2/website-next/docs/developing-load-manager.md |   4 -
 site2/website-next/docs/developing-tools.md        |   6 +-
 site2/website-next/docs/functions-api.md           |   4 -
 site2/website-next/docs/functions-cli.md           |   4 -
 site2/website-next/docs/functions-debug.md         |   4 -
 site2/website-next/docs/functions-debugging.md     |   5 +-
 site2/website-next/docs/functions-deploy.md        |   4 -
 site2/website-next/docs/functions-deploying.md     |   4 -
 site2/website-next/docs/functions-develop.md       | 158 +----
 site2/website-next/docs/functions-guarantees.md    |   4 -
 site2/website-next/docs/functions-metrics.md       |   4 -
 site2/website-next/docs/functions-overview.md      |   4 -
 site2/website-next/docs/functions-package.md       |   4 -
 site2/website-next/docs/functions-quickstart.md    |   5 +-
 site2/website-next/docs/functions-runtime.md       |   8 +-
 site2/website-next/docs/functions-state.md         |   4 -
 site2/website-next/docs/functions-worker.md        |   4 -
 site2/website-next/docs/getting-started-clients.md |   4 -
 .../getting-started-concepts-and-architecture.md   |   4 -
 site2/website-next/docs/getting-started-docker.md  |   4 -
 site2/website-next/docs/getting-started-helm.md    |   4 -
 site2/website-next/docs/getting-started-pulsar.md  |   4 -
 .../docs/getting-started-standalone.md             |   4 -
 site2/website-next/docs/helm-deploy.md             |   4 -
 site2/website-next/docs/helm-install.md            |   4 -
 site2/website-next/docs/helm-overview.md           |   4 -
 site2/website-next/docs/helm-prepare.md            |   4 -
 site2/website-next/docs/helm-tools.md              |   4 -
 site2/website-next/docs/helm-upgrade.md            |   4 -
 site2/website-next/docs/io-aerospike-sink.md       |   4 -
 site2/website-next/docs/io-aerospike.md            |   4 -
 site2/website-next/docs/io-canal-source.md         |   4 -
 site2/website-next/docs/io-cassandra-sink.md       |  16 +-
 site2/website-next/docs/io-cassandra.md            |   4 -
 site2/website-next/docs/io-cdc-canal.md            |   4 -
 site2/website-next/docs/io-cdc-debezium.md         |  57 +-
 site2/website-next/docs/io-cdc.md                  |   4 -
 site2/website-next/docs/io-cli.md                  |   4 -
 site2/website-next/docs/io-connectors.md           |   4 -
 site2/website-next/docs/io-debezium-source.md      |  75 ++-
 site2/website-next/docs/io-debug.md                |   4 -
 site2/website-next/docs/io-develop.md              |   7 +-
 site2/website-next/docs/io-dynamodb-source.md      |  28 +-
 site2/website-next/docs/io-dynamodb.md             |   5 +-
 site2/website-next/docs/io-elasticsearch-sink.md   |  14 +-
 site2/website-next/docs/io-elasticsearch.md        |   4 -
 site2/website-next/docs/io-file-source.md          |  30 +-
 site2/website-next/docs/io-file.md                 |   4 -
 site2/website-next/docs/io-flume-sink.md           |  16 +-
 site2/website-next/docs/io-flume-source.md         |  16 +-
 site2/website-next/docs/io-hbase-sink.md           |  22 +-
 site2/website-next/docs/io-hbase.md                |   4 -
 site2/website-next/docs/io-hdfs.md                 |   4 -
 site2/website-next/docs/io-hdfs2-sink.md           |  18 +-
 site2/website-next/docs/io-hdfs3-sink.md           |  14 +-
 site2/website-next/docs/io-influxdb-sink.md        |  45 +-
 site2/website-next/docs/io-influxdb.md             |   4 -
 site2/website-next/docs/io-jdbc-sink.md            |  40 +-
 site2/website-next/docs/io-jdbc.md                 |   4 -
 site2/website-next/docs/io-kafka-sink.md           |  31 +-
 site2/website-next/docs/io-kafka-source.md         |  16 +-
 site2/website-next/docs/io-kafka.md                |   4 -
 site2/website-next/docs/io-kinesis-sink.md         |  18 +-
 site2/website-next/docs/io-kinesis-source.md       |  28 +-
 site2/website-next/docs/io-kinesis.md              |   4 -
 site2/website-next/docs/io-mongo-sink.md           |  16 +-
 site2/website-next/docs/io-mongo.md                |   4 -
 site2/website-next/docs/io-netty-source.md         |  14 +-
 site2/website-next/docs/io-netty.md                |   4 -
 site2/website-next/docs/io-nsq-source.md           |   4 -
 site2/website-next/docs/io-nsq.md                  |   5 +-
 site2/website-next/docs/io-overview.md             |  22 +-
 site2/website-next/docs/io-quickstart.md           |   4 -
 site2/website-next/docs/io-rabbitmq-sink.md        |  34 +-
 site2/website-next/docs/io-rabbitmq-source.md      |  36 +-
 site2/website-next/docs/io-rabbitmq.md             |   4 -
 site2/website-next/docs/io-redis-sink.md           |  22 +-
 site2/website-next/docs/io-redis.md                |   4 -
 site2/website-next/docs/io-solr-sink.md            |  18 +-
 site2/website-next/docs/io-solr.md                 |   4 -
 site2/website-next/docs/io-tcp.md                  |   4 -
 site2/website-next/docs/io-twitter-source.md       |   4 -
 site2/website-next/docs/io-twitter.md              |   4 -
 site2/website-next/docs/io-use.md                  | 282 +--------
 site2/website-next/docs/performance-pulsar-perf.md |   8 +-
 site2/website-next/docs/reference-cli-tools.md     |   8 +-
 site2/website-next/docs/reference-configuration.md |  17 +-
 .../website-next/docs/reference-connector-admin.md |   4 -
 site2/website-next/docs/reference-metrics.md       |   4 -
 site2/website-next/docs/reference-pulsar-admin.md  |   6 +-
 site2/website-next/docs/reference-terminology.md   |   4 -
 .../docs/schema-evolution-compatibility.md         |  10 +-
 site2/website-next/docs/schema-get-started.md      |   4 -
 site2/website-next/docs/schema-manage.md           | 138 ++---
 site2/website-next/docs/schema-understand.md       |  26 +-
 site2/website-next/docs/security-athenz.md         |   4 -
 site2/website-next/docs/security-authorization.md  |  14 +-
 site2/website-next/docs/security-bouncy-castle.md  |   4 -
 site2/website-next/docs/security-encryption.md     |  38 +-
 site2/website-next/docs/security-extending.md      |   4 -
 site2/website-next/docs/security-jwt.md            |  23 +-
 site2/website-next/docs/security-kerberos.md       |   4 -
 site2/website-next/docs/security-oauth2.md         |   4 -
 site2/website-next/docs/security-overview.md       |   4 -
 .../docs/security-tls-authentication.md            |  16 +-
 site2/website-next/docs/security-tls-keystore.md   |   4 -
 site2/website-next/docs/security-tls-transport.md  |  24 +-
 site2/website-next/docs/security-token-admin.md    |   4 -
 .../docs/sql-deployment-configurations.md          |   6 +-
 site2/website-next/docs/sql-getting-started.md     |   4 -
 site2/website-next/docs/sql-overview.md            |   4 -
 site2/website-next/docs/sql-rest-api.md            |   4 -
 site2/website-next/docs/tiered-storage-aliyun.md   |   4 -
 site2/website-next/docs/tiered-storage-aws.md      |   4 -
 site2/website-next/docs/tiered-storage-azure.md    |   4 -
 .../website-next/docs/tiered-storage-filesystem.md | 632 +++++++++++---------
 site2/website-next/docs/tiered-storage-gcs.md      |   4 -
 site2/website-next/docs/tiered-storage-overview.md |   4 -
 site2/website-next/docs/transaction-api.md         |   6 +-
 site2/website-next/docs/transaction-guarantee.md   |   4 -
 site2/website-next/docs/txn-how.md                 |   4 -
 site2/website-next/docs/txn-monitor.md             |   4 -
 site2/website-next/docs/txn-use.md                 |   4 -
 site2/website-next/docs/txn-what.md                |   4 -
 site2/website-next/docs/txn-why.md                 |   4 -
 .../website-next/docs/window-functions-context.md  |   4 -
 site2/website-next/docusaurus.config.js            |   4 +
 site2/website-next/static/assets/FileSystem-1.png  | Bin 0 -> 298961 bytes
 site2/website-next/static/assets/FileSystem-2.png  | Bin 0 -> 232911 bytes
 site2/website-next/static/assets/FileSystem-3.png  | Bin 0 -> 213823 bytes
 site2/website-next/static/assets/FileSystem-8.png  | Bin 0 -> 216594 bytes
 .../concepts-architecture-overview.md              |  12 +-
 .../version-2.6.3/concepts-authentication.md       |   9 +
 .../concepts-clients.md                            |  31 +-
 .../concepts-messaging.md                          |  89 +--
 .../concepts-multi-tenancy.md                      |  18 -
 .../concepts-multiple-advertised-listeners.md      |   4 -
 .../concepts-overview.md                           |   4 -
 .../concepts-proxy-sni-routing.md                  |   4 -
 .../concepts-replication.md                        |   4 -
 .../concepts-tiered-storage.md                     |   4 -
 .../concepts-topic-compaction.md                   |   4 -
 .../getting-started-clients.md                     |  12 +-
 .../getting-started-docker.md                      |   4 -
 .../getting-started-helm.md                        |  38 +-
 .../getting-started-pulsar.md                      |   4 -
 .../getting-started-standalone.md                  |   4 -
 .../schema-evolution-compatibility.md              |   4 -
 .../schema-get-started.md                          |  12 +-
 .../schema-manage.md                               |   0
 .../schema-understand.md                           |  12 -
 .../version-2.6.4/cookbooks-deduplication.md       |  15 +-
 .../{deploy-docs.md => deploy-dcos.md}             |   4 +-
 .../version-2.6.4/functions-develop.md             | 151 +----
 .../versioned_docs/version-2.6.4/io-overview.md    |  22 +-
 .../versioned_docs/version-2.6.4/io-use.md         | 282 +--------
 .../versioned_docs/version-2.6.4/schema-manage.md  |  75 +--
 .../versioned_docs/version-2.6.4/security-jwt.md   |  23 +-
 .../versioned_docs/version-2.7.1/adaptors-kafka.md |   4 -
 .../versioned_docs/version-2.7.1/adaptors-spark.md |   4 -
 .../versioned_docs/version-2.7.1/adaptors-storm.md |   4 -
 .../version-2.7.1/admin-api-brokers.md             |  75 +--
 .../version-2.7.1/admin-api-clusters.md            |  90 +--
 .../version-2.7.1/admin-api-functions.md           | 270 +--------
 .../version-2.7.1/admin-api-namespaces.md          | 450 +-------------
 .../admin-api-non-partitioned-topics.md            |   4 -
 .../admin-api-non-persistent-topics.md             |   4 -
 .../version-2.7.1/admin-api-overview.md            |  15 +-
 .../version-2.7.1/admin-api-partitioned-topics.md  |   4 -
 .../version-2.7.1/admin-api-permissions.md         |  45 +-
 .../version-2.7.1/admin-api-persistent-topics.md   |   4 -
 .../version-2.7.1/admin-api-schemas.md             |   4 -
 .../version-2.7.1/admin-api-tenants.md             |  75 +--
 .../version-2.7.1/admin-api-topics.md              | 531 +++--------------
 .../version-2.7.1/administration-dashboard.md      |   3 -
 .../version-2.7.1/administration-geo.md            |   4 -
 .../version-2.7.1/administration-isolation.md      |  30 +-
 .../version-2.7.1/administration-load-balance.md   |   4 -
 .../version-2.7.1/administration-proxy.md          |   4 -
 .../version-2.7.1/administration-pulsar-manager.md |   4 -
 .../version-2.7.1/administration-stats.md          |   4 -
 .../version-2.7.1/administration-upgrade.md        |   4 -
 .../version-2.7.1/administration-zk-bk.md          |   4 -
 .../version-2.7.1/client-libraries-cgo.md          |   4 -
 .../version-2.7.1/client-libraries-cpp.md          |   4 -
 .../version-2.7.1/client-libraries-dotnet.md       |   4 -
 .../version-2.7.1/client-libraries-go.md           |   4 -
 .../version-2.7.1/client-libraries-java.md         |   4 -
 .../version-2.7.1/client-libraries-node.md         |   4 -
 .../version-2.7.1/client-libraries-python.md       |   4 -
 .../version-2.7.1/client-libraries-websocket.md    |   4 -
 .../concepts-architecture-overview.md              |   4 -
 .../version-2.7.1/concepts-authentication.md       |   4 -
 .../version-2.7.1/concepts-clients.md              |   4 -
 .../version-2.7.1/concepts-messaging.md            |  37 +-
 .../version-2.7.1/concepts-multi-tenancy.md        |   4 -
 .../concepts-multiple-advertised-listeners.md      |   4 -
 .../version-2.7.1/concepts-overview.md             |   4 -
 .../version-2.7.1/concepts-proxy-sni-routing.md    |   4 -
 .../version-2.7.1/concepts-replication.md          |   4 -
 .../version-2.7.1/concepts-tiered-storage.md       |   4 -
 .../version-2.7.1/concepts-topic-compaction.md     |   4 -
 .../version-2.7.1/concepts-transactions.md         |   4 -
 .../version-2.7.1/cookbooks-bookkeepermetadata.md  |   4 -
 .../version-2.7.1/cookbooks-compaction.md          |   4 -
 .../version-2.7.1/cookbooks-deduplication.md       |  15 +-
 .../version-2.7.1/cookbooks-encryption.md          |   4 -
 .../version-2.7.1/cookbooks-message-queue.md       |   4 -
 .../version-2.7.1/cookbooks-non-persistent.md      |   4 -
 .../version-2.7.1/cookbooks-partitioned.md         |   4 -
 .../version-2.7.1/cookbooks-retention-expiry.md    |  17 +-
 .../version-2.7.1/cookbooks-tiered-storage.md      |   4 -
 .../versioned_docs/version-2.7.1/deploy-aws.md     |   4 -
 .../deploy-bare-metal-multi-cluster.md             |  30 +-
 .../version-2.7.1/deploy-bare-metal.md             |  31 +-
 .../versioned_docs/version-2.7.1/deploy-dcos.md    |  10 +-
 .../versioned_docs/version-2.7.1/deploy-docker.md  |   4 -
 .../version-2.7.1/deploy-kubernetes.md             |   4 -
 .../version-2.7.1/deploy-monitoring.md             |   4 -
 .../versioned_docs/version-2.7.1/develop-schema.md |   4 -
 .../version-2.7.1/developing-binary-protocol.md    |   4 -
 .../versioned_docs/version-2.7.1/developing-cpp.md |   4 -
 .../version-2.7.1/developing-load-manager.md       |   4 -
 .../version-2.7.1/developing-tools.md              |   4 -
 .../versioned_docs/version-2.7.1/functions-cli.md  |   4 -
 .../version-2.7.1/functions-debug.md               |   4 -
 .../version-2.7.1/functions-deploy.md              |   4 -
 .../version-2.7.1/functions-develop.md             | 160 +----
 .../version-2.7.1/functions-metrics.md             |   4 -
 .../version-2.7.1/functions-overview.md            |   4 -
 .../version-2.7.1/functions-package.md             |   4 -
 .../version-2.7.1/functions-runtime.md             |   4 -
 .../version-2.7.1/functions-worker.md              |   4 -
 .../version-2.7.1/getting-started-clients.md       |   4 -
 .../getting-started-concepts-and-architecture.md   |   4 -
 .../version-2.7.1/getting-started-docker.md        |   4 -
 .../version-2.7.1/getting-started-helm.md          |   4 -
 .../version-2.7.1/getting-started-pulsar.md        |   4 -
 .../version-2.7.1/getting-started-standalone.md    |   4 -
 .../versioned_docs/version-2.7.1/helm-deploy.md    |   4 -
 .../versioned_docs/version-2.7.1/helm-install.md   |   4 -
 .../versioned_docs/version-2.7.1/helm-overview.md  |   4 -
 .../versioned_docs/version-2.7.1/helm-prepare.md   |   4 -
 .../versioned_docs/version-2.7.1/helm-tools.md     |   4 -
 .../versioned_docs/version-2.7.1/helm-upgrade.md   |   4 -
 .../version-2.7.1/io-aerospike-sink.md             |   4 -
 .../version-2.7.1/io-canal-source.md               |   4 -
 .../version-2.7.1/io-cassandra-sink.md             |   4 -
 .../version-2.7.1/io-cdc-debezium.md               |   4 -
 .../versioned_docs/version-2.7.1/io-cdc.md         |   4 -
 .../versioned_docs/version-2.7.1/io-cli.md         |   4 -
 .../versioned_docs/version-2.7.1/io-connectors.md  |   4 -
 .../version-2.7.1/io-debezium-source.md            |   4 -
 .../versioned_docs/version-2.7.1/io-debug.md       |   4 -
 .../versioned_docs/version-2.7.1/io-develop.md     |   4 -
 .../version-2.7.1/io-dynamodb-source.md            |   4 -
 .../version-2.7.1/io-elasticsearch-sink.md         |   4 -
 .../versioned_docs/version-2.7.1/io-file-source.md |   4 -
 .../versioned_docs/version-2.7.1/io-flume-sink.md  |   4 -
 .../version-2.7.1/io-flume-source.md               |   4 -
 .../versioned_docs/version-2.7.1/io-hbase-sink.md  |   4 -
 .../versioned_docs/version-2.7.1/io-hdfs2-sink.md  |   4 -
 .../versioned_docs/version-2.7.1/io-hdfs3-sink.md  |   4 -
 .../version-2.7.1/io-influxdb-sink.md              |   4 -
 .../versioned_docs/version-2.7.1/io-jdbc-sink.md   |   4 -
 .../versioned_docs/version-2.7.1/io-kafka-sink.md  |   4 -
 .../version-2.7.1/io-kafka-source.md               |   4 -
 .../version-2.7.1/io-kinesis-sink.md               |   4 -
 .../version-2.7.1/io-kinesis-source.md             |   4 -
 .../versioned_docs/version-2.7.1/io-mongo-sink.md  |   4 -
 .../version-2.7.1/io-netty-source.md               |   4 -
 .../versioned_docs/version-2.7.1/io-nsq-source.md  |   4 -
 .../versioned_docs/version-2.7.1/io-overview.md    |  22 +-
 .../versioned_docs/version-2.7.1/io-quickstart.md  |   4 -
 .../version-2.7.1/io-rabbitmq-sink.md              |   4 -
 .../version-2.7.1/io-rabbitmq-source.md            |   4 -
 .../versioned_docs/version-2.7.1/io-redis-sink.md  |   4 -
 .../versioned_docs/version-2.7.1/io-solr-sink.md   |   4 -
 .../version-2.7.1/io-twitter-source.md             |   4 -
 .../versioned_docs/version-2.7.1/io-twitter.md     |   4 -
 .../versioned_docs/version-2.7.1/io-use.md         | 282 +--------
 .../version-2.7.1/performance-pulsar-perf.md       |   4 -
 .../version-2.7.1/reference-cli-tools.md           |   6 +-
 .../version-2.7.1/reference-configuration.md       |   4 -
 .../version-2.7.1/reference-connector-admin.md     |   4 -
 .../version-2.7.1/reference-metrics.md             |   4 -
 .../version-2.7.1/reference-pulsar-admin.md        |   4 -
 .../version-2.7.1/reference-terminology.md         |   4 -
 .../schema-evolution-compatibility.md              |   4 -
 .../version-2.7.1/schema-get-started.md            |   4 -
 .../versioned_docs/version-2.7.1/schema-manage.md  |  75 +--
 .../version-2.7.1/schema-understand.md             |   4 -
 .../version-2.7.1/security-athenz.md               |   4 -
 .../version-2.7.1/security-authorization.md        |   4 -
 .../version-2.7.1/security-bouncy-castle.md        |   4 -
 .../version-2.7.1/security-encryption.md           |   4 -
 .../version-2.7.1/security-extending.md            |   4 -
 .../versioned_docs/version-2.7.1/security-jwt.md   |  23 +-
 .../version-2.7.1/security-kerberos.md             |   4 -
 .../version-2.7.1/security-oauth2.md               |   4 -
 .../version-2.7.1/security-overview.md             |   4 -
 .../version-2.7.1/security-tls-authentication.md   |   4 -
 .../version-2.7.1/security-tls-keystore.md         |   4 -
 .../version-2.7.1/security-tls-transport.md        |  20 +-
 .../version-2.7.1/security-token-admin.md          |   4 -
 .../version-2.7.1/sql-deployment-configurations.md |   4 -
 .../version-2.7.1/sql-getting-started.md           |   4 -
 .../versioned_docs/version-2.7.1/sql-overview.md   |   4 -
 .../versioned_docs/version-2.7.1/sql-rest-api.md   |   4 -
 .../version-2.7.1/tiered-storage-aws.md            |   4 -
 .../version-2.7.1/tiered-storage-azure.md          |   4 -
 .../version-2.7.1/tiered-storage-filesystem.md     | 632 +++++++++++---------
 .../version-2.7.1/tiered-storage-gcs.md            |   4 -
 .../version-2.7.1/tiered-storage-overview.md       |   4 -
 .../version-2.7.1/transaction-api.md               |   4 -
 .../version-2.7.1/transaction-guarantee.md         |   4 -
 .../version-2.7.1/window-functions-context.md      |   4 -
 .../versioned_docs/version-2.7.2/adaptors-kafka.md |   4 -
 .../versioned_docs/version-2.7.2/adaptors-spark.md |   4 -
 .../versioned_docs/version-2.7.2/adaptors-storm.md |   4 -
 .../version-2.7.2/admin-api-brokers.md             |  75 +--
 .../version-2.7.2/admin-api-clusters.md            |  90 +--
 .../version-2.7.2/admin-api-functions.md           | 270 +--------
 .../version-2.7.2/admin-api-namespaces.md          | 450 +-------------
 .../admin-api-non-partitioned-topics.md            |   4 -
 .../admin-api-non-persistent-topics.md             |   4 -
 .../version-2.7.2/admin-api-overview.md            |  15 +-
 .../version-2.7.2/admin-api-partitioned-topics.md  |   4 -
 .../version-2.7.2/admin-api-permissions.md         |  45 +-
 .../version-2.7.2/admin-api-persistent-topics.md   |   4 -
 .../version-2.7.2/admin-api-schemas.md             |   4 -
 .../version-2.7.2/admin-api-tenants.md             |  75 +--
 .../version-2.7.2/admin-api-topics.md              | 590 +++++--------------
 .../version-2.7.2/administration-dashboard.md      |   3 -
 .../version-2.7.2/administration-geo.md            |   4 -
 .../version-2.7.2/administration-isolation.md      |  30 +-
 .../version-2.7.2/administration-load-balance.md   |   4 -
 .../version-2.7.2/administration-proxy.md          |   4 -
 .../version-2.7.2/administration-pulsar-manager.md |   4 -
 .../version-2.7.2/administration-stats.md          |   4 -
 .../version-2.7.2/administration-upgrade.md        |   4 -
 .../version-2.7.2/administration-zk-bk.md          |   4 -
 .../version-2.7.2/client-libraries-cgo.md          |   4 -
 .../version-2.7.2/client-libraries-cpp.md          |   4 -
 .../version-2.7.2/client-libraries-dotnet.md       |   4 -
 .../version-2.7.2/client-libraries-go.md           |   4 -
 .../version-2.7.2/client-libraries-java.md         |   4 -
 .../version-2.7.2/client-libraries-node.md         |   4 -
 .../version-2.7.2/client-libraries-python.md       |   4 -
 .../version-2.7.2/client-libraries-websocket.md    |   4 -
 .../concepts-architecture-overview.md              |   7 +-
 .../version-2.7.2/concepts-authentication.md       |   6 +-
 .../version-2.7.2/concepts-clients.md              |   7 +-
 .../version-2.7.2/concepts-messaging.md            |  62 +-
 .../version-2.7.2/concepts-multi-tenancy.md        |   6 +-
 .../concepts-multiple-advertised-listeners.md      |   7 +-
 .../version-2.7.2/concepts-overview.md             |   8 +-
 .../version-2.7.2/concepts-proxy-sni-routing.md    |  12 +-
 .../version-2.7.2/concepts-replication.md          |   6 +-
 .../version-2.7.2/concepts-tiered-storage.md       |   6 +-
 .../version-2.7.2/concepts-topic-compaction.md     |   6 +-
 .../version-2.7.2/concepts-transactions.md         |   6 +-
 .../version-2.7.2/cookbooks-bookkeepermetadata.md  |   4 -
 .../version-2.7.2/cookbooks-compaction.md          |   4 -
 .../version-2.7.2/cookbooks-deduplication.md       |  15 +-
 .../version-2.7.2/cookbooks-encryption.md          |   4 -
 .../version-2.7.2/cookbooks-message-queue.md       |   4 -
 .../version-2.7.2/cookbooks-non-persistent.md      |   4 -
 .../version-2.7.2/cookbooks-partitioned.md         |   4 -
 .../version-2.7.2/cookbooks-retention-expiry.md    |  17 +-
 .../version-2.7.2/cookbooks-tiered-storage.md      |   4 -
 .../versioned_docs/version-2.7.2/deploy-aws.md     |   5 +-
 .../deploy-bare-metal-multi-cluster.md             |  30 +-
 .../version-2.7.2/deploy-bare-metal.md             |  31 +-
 .../versioned_docs/version-2.7.2/deploy-dcos.md    |  10 +-
 .../versioned_docs/version-2.7.2/deploy-docker.md  |   4 -
 .../version-2.7.2/deploy-kubernetes.md             |   4 -
 .../version-2.7.2/deploy-monitoring.md             |   4 -
 .../version-2.7.2/developing-binary-protocol.md    | 581 ------------------
 .../versioned_docs/version-2.7.2/developing-cpp.md | 114 ----
 .../version-2.7.2/developing-load-manager.md       | 227 --------
 .../version-2.7.2/developing-tools.md              | 111 ----
 .../functions-cli.md                               |   4 -
 .../functions-debug.md                             |   4 -
 .../functions-deploy.md                            |   4 -
 .../functions-develop.md                           | 158 +----
 .../functions-metrics.md                           |   4 -
 .../functions-overview.md                          |   4 -
 .../functions-package.md                           |   4 -
 .../functions-runtime.md                           |   4 -
 .../functions-worker.md                            |   4 -
 .../version-2.7.2/getting-started-clients.md       |   4 -
 .../getting-started-concepts-and-architecture.md   |   4 -
 .../version-2.7.2/getting-started-docker.md        |  26 +-
 .../version-2.7.2/getting-started-helm.md          | 471 ++++++++-------
 .../getting-started-pulsar.md                      |   4 -
 .../version-2.7.2/getting-started-standalone.md    |  38 +-
 .../versioned_docs/version-2.7.2/helm-deploy.md    |   4 -
 .../versioned_docs/version-2.7.2/helm-install.md   |   4 -
 .../versioned_docs/version-2.7.2/helm-overview.md  |   4 -
 .../versioned_docs/version-2.7.2/helm-prepare.md   |   4 -
 .../versioned_docs/version-2.7.2/helm-tools.md     |   4 -
 .../versioned_docs/version-2.7.2/helm-upgrade.md   |   4 -
 .../version-2.7.2/io-aerospike-sink.md             |   4 -
 .../version-2.7.2/io-canal-source.md               |   4 -
 .../version-2.7.2/io-cassandra-sink.md             |   4 -
 .../version-2.7.2/io-cdc-debezium.md               |  27 +-
 .../versioned_docs/version-2.7.2/io-cdc.md         |   4 -
 .../versioned_docs/version-2.7.2/io-cli.md         |   4 -
 .../versioned_docs/version-2.7.2/io-connectors.md  |   4 -
 .../version-2.7.2/io-debezium-source.md            |  27 +-
 .../versioned_docs/version-2.7.2/io-debug.md       |   4 -
 .../versioned_docs/version-2.7.2/io-develop.md     |  10 +-
 .../version-2.7.2/io-dynamodb-source.md            |   4 -
 .../version-2.7.2/io-elasticsearch-sink.md         |   4 -
 .../versioned_docs/version-2.7.2/io-file-source.md |   4 -
 .../versioned_docs/version-2.7.2/io-flume-sink.md  |   4 -
 .../version-2.7.2/io-flume-source.md               |   4 -
 .../versioned_docs/version-2.7.2/io-hbase-sink.md  |   4 -
 .../versioned_docs/version-2.7.2/io-hdfs2-sink.md  |   4 -
 .../versioned_docs/version-2.7.2/io-hdfs3-sink.md  |   4 -
 .../version-2.7.2/io-influxdb-sink.md              |   4 -
 .../versioned_docs/version-2.7.2/io-jdbc-sink.md   |   4 -
 .../versioned_docs/version-2.7.2/io-kafka-sink.md  |   4 -
 .../version-2.7.2/io-kafka-source.md               |   4 -
 .../version-2.7.2/io-kinesis-sink.md               |   4 -
 .../version-2.7.2/io-kinesis-source.md             |   4 -
 .../versioned_docs/version-2.7.2/io-mongo-sink.md  |   4 -
 .../version-2.7.2/io-netty-source.md               |   4 -
 .../versioned_docs/version-2.7.2/io-nsq-source.md  |   4 -
 .../versioned_docs/version-2.7.2/io-overview.md    |  22 +-
 .../versioned_docs/version-2.7.2/io-quickstart.md  |   9 +-
 .../version-2.7.2/io-rabbitmq-sink.md              |   4 -
 .../version-2.7.2/io-rabbitmq-source.md            |   4 -
 .../versioned_docs/version-2.7.2/io-redis-sink.md  |   4 -
 .../versioned_docs/version-2.7.2/io-solr-sink.md   |   4 -
 .../version-2.7.2/io-twitter-source.md             |   4 -
 .../versioned_docs/version-2.7.2/io-twitter.md     |   4 -
 .../versioned_docs/version-2.7.2/io-use.md         | 282 +--------
 .../version-2.7.2/performance-pulsar-perf.md       |   4 -
 .../schema-evolution-compatibility.md              |   4 -
 .../version-2.7.2/schema-get-started.md            |   8 +-
 .../versioned_docs/version-2.7.2/schema-manage.md  |  75 +--
 .../version-2.7.2/schema-understand.md             |   4 -
 .../version-2.7.2/security-athenz.md               |   4 -
 .../version-2.7.2/security-authorization.md        |   4 -
 .../version-2.7.2/security-bouncy-castle.md        |   4 -
 .../version-2.7.2/security-encryption.md           |   4 -
 .../version-2.7.2/security-extending.md            |   4 -
 .../versioned_docs/version-2.7.2/security-jwt.md   |  23 +-
 .../version-2.7.2/security-kerberos.md             |   4 -
 .../version-2.7.2/security-oauth2.md               |   4 -
 .../version-2.7.2/security-overview.md             |   4 -
 .../version-2.7.2/security-tls-authentication.md   |   4 -
 .../version-2.7.2/security-tls-keystore.md         |   4 -
 .../version-2.7.2/security-tls-transport.md        |  20 +-
 .../version-2.7.2/security-token-admin.md          |   4 -
 .../version-2.7.2/sql-deployment-configurations.md |   4 -
 .../version-2.7.2/sql-getting-started.md           |   4 -
 .../versioned_docs/version-2.7.2/sql-overview.md   |   4 -
 .../versioned_docs/version-2.7.2/sql-rest-api.md   |   4 -
 .../version-2.7.2/tiered-storage-aws.md            |   4 -
 .../version-2.7.2/tiered-storage-azure.md          |   4 -
 .../version-2.7.2/tiered-storage-filesystem.md     | 632 +++++++++++---------
 .../version-2.7.2/tiered-storage-gcs.md            |   4 -
 .../version-2.7.2/tiered-storage-overview.md       |   4 -
 .../version-2.7.2/transaction-api.md               |   4 -
 .../version-2.7.2/transaction-guarantee.md         |   4 -
 .../window-functions-context.md                    |   4 -
 .../versioned_docs/version-2.7.3/adaptors-kafka.md |   4 -
 .../versioned_docs/version-2.7.3/adaptors-spark.md |   4 -
 .../versioned_docs/version-2.7.3/adaptors-storm.md |   4 -
 .../version-2.7.3/admin-api-brokers.md             |  75 +--
 .../version-2.7.3/admin-api-clusters.md            |  90 +--
 .../version-2.7.3/admin-api-functions.md           | 270 +--------
 .../version-2.7.3/admin-api-namespaces.md          | 450 +-------------
 .../admin-api-non-partitioned-topics.md            |   4 -
 .../admin-api-non-persistent-topics.md             |   4 -
 .../version-2.7.3/admin-api-overview.md            |  15 +-
 .../version-2.7.3/admin-api-partitioned-topics.md  |   4 -
 .../version-2.7.3/admin-api-permissions.md         |  45 +-
 .../version-2.7.3/admin-api-persistent-topics.md   |   4 -
 .../version-2.7.3/admin-api-schemas.md             |   4 -
 .../version-2.7.3/admin-api-tenants.md             |  75 +--
 .../version-2.7.3/admin-api-topics.md              | 531 +++--------------
 .../version-2.7.3/administration-dashboard.md      |   3 -
 .../version-2.7.3/administration-geo.md            |   4 -
 .../version-2.7.3/administration-isolation.md      |  30 +-
 .../version-2.7.3/administration-load-balance.md   |   4 -
 .../version-2.7.3/administration-proxy.md          |   4 -
 .../version-2.7.3/administration-pulsar-manager.md |   4 -
 .../version-2.7.3/administration-stats.md          |   4 -
 .../version-2.7.3/administration-upgrade.md        |   4 -
 .../version-2.7.3/administration-zk-bk.md          |   4 -
 .../version-2.7.3/client-libraries-cgo.md          |   4 -
 .../version-2.7.3/client-libraries-cpp.md          |   4 -
 .../version-2.7.3/client-libraries-dotnet.md       |   4 -
 .../version-2.7.3/client-libraries-go.md           |   4 -
 .../version-2.7.3/client-libraries-java.md         |   4 -
 .../version-2.7.3/client-libraries-node.md         |   4 -
 .../version-2.7.3/client-libraries-python.md       |   4 -
 .../version-2.7.3/client-libraries-websocket.md    |   4 -
 .../concepts-architecture-overview.md              |   4 -
 .../version-2.7.3/concepts-authentication.md       |   4 -
 .../version-2.7.3/concepts-clients.md              |   4 -
 .../version-2.7.3/concepts-messaging.md            |  43 +-
 .../version-2.7.3/concepts-multi-tenancy.md        |   4 -
 .../concepts-multiple-advertised-listeners.md      |   4 -
 .../version-2.7.3/concepts-overview.md             |   4 -
 .../version-2.7.3/concepts-proxy-sni-routing.md    |   4 -
 .../version-2.7.3/concepts-replication.md          |   4 -
 .../version-2.7.3/concepts-tiered-storage.md       |   4 -
 .../version-2.7.3/concepts-topic-compaction.md     |   4 -
 .../version-2.7.3/concepts-transactions.md         |   4 -
 .../version-2.7.3/cookbooks-bookkeepermetadata.md  |   4 -
 .../version-2.7.3/cookbooks-compaction.md          |   4 -
 .../version-2.7.3/cookbooks-deduplication.md       |  15 +-
 .../version-2.7.3/cookbooks-encryption.md          |   4 -
 .../version-2.7.3/cookbooks-message-queue.md       |   4 -
 .../version-2.7.3/cookbooks-non-persistent.md      |   4 -
 .../version-2.7.3/cookbooks-partitioned.md         |   4 -
 .../version-2.7.3/cookbooks-retention-expiry.md    |  17 +-
 .../version-2.7.3/cookbooks-tiered-storage.md      |   4 -
 .../versioned_docs/version-2.7.3/deploy-aws.md     |   4 -
 .../deploy-bare-metal-multi-cluster.md             |  30 +-
 .../version-2.7.3/deploy-bare-metal.md             |  31 +-
 .../versioned_docs/version-2.7.3/deploy-dcos.md    |  10 +-
 .../versioned_docs/version-2.7.3/deploy-docker.md  |   4 -
 .../version-2.7.3/deploy-kubernetes.md             |   4 -
 .../version-2.7.3/deploy-monitoring.md             |   4 -
 .../version-2.7.3/developing-binary-protocol.md    |   4 -
 .../versioned_docs/version-2.7.3/developing-cpp.md |   4 -
 .../version-2.7.3/developing-load-manager.md       |   4 -
 .../version-2.7.3/developing-tools.md              |   4 -
 .../versioned_docs/version-2.7.3/functions-cli.md  |   4 -
 .../version-2.7.3/functions-debug.md               |   4 -
 .../version-2.7.3/functions-deploy.md              |   4 -
 .../version-2.7.3/functions-develop.md             | 158 +----
 .../version-2.7.3/functions-metrics.md             |   4 -
 .../version-2.7.3/functions-overview.md            |   4 -
 .../version-2.7.3/functions-package.md             |   4 -
 .../version-2.7.3/functions-runtime.md             |   4 -
 .../version-2.7.3/functions-worker.md              |   4 -
 .../version-2.7.3/getting-started-clients.md       |   4 -
 .../getting-started-concepts-and-architecture.md   |   4 -
 .../version-2.7.3/getting-started-docker.md        |   4 -
 .../version-2.7.3/getting-started-helm.md          |   4 -
 .../version-2.7.3/getting-started-pulsar.md        |   4 -
 .../version-2.7.3/getting-started-standalone.md    |   4 -
 .../versioned_docs/version-2.7.3/helm-deploy.md    |   4 -
 .../versioned_docs/version-2.7.3/helm-install.md   |   4 -
 .../versioned_docs/version-2.7.3/helm-overview.md  |   4 -
 .../versioned_docs/version-2.7.3/helm-prepare.md   |   4 -
 .../versioned_docs/version-2.7.3/helm-tools.md     |   4 -
 .../versioned_docs/version-2.7.3/helm-upgrade.md   |   4 -
 .../version-2.7.3/io-aerospike-sink.md             |   4 -
 .../version-2.7.3/io-canal-source.md               |   4 -
 .../version-2.7.3/io-cassandra-sink.md             |   4 -
 .../version-2.7.3/io-cdc-debezium.md               |   4 -
 .../versioned_docs/version-2.7.3/io-cdc.md         |   4 -
 .../versioned_docs/version-2.7.3/io-cli.md         |   4 -
 .../versioned_docs/version-2.7.3/io-connectors.md  |   4 -
 .../version-2.7.3/io-debezium-source.md            |   4 -
 .../versioned_docs/version-2.7.3/io-debug.md       |   4 -
 .../versioned_docs/version-2.7.3/io-develop.md     |   4 -
 .../version-2.7.3/io-dynamodb-source.md            |   4 -
 .../version-2.7.3/io-elasticsearch-sink.md         |   4 -
 .../versioned_docs/version-2.7.3/io-file-source.md |   4 -
 .../versioned_docs/version-2.7.3/io-flume-sink.md  |   4 -
 .../version-2.7.3/io-flume-source.md               |   4 -
 .../versioned_docs/version-2.7.3/io-hbase-sink.md  |   4 -
 .../versioned_docs/version-2.7.3/io-hdfs2-sink.md  |   4 -
 .../versioned_docs/version-2.7.3/io-hdfs3-sink.md  |   4 -
 .../version-2.7.3/io-influxdb-sink.md              |   4 -
 .../versioned_docs/version-2.7.3/io-jdbc-sink.md   |   4 -
 .../versioned_docs/version-2.7.3/io-kafka-sink.md  |   4 -
 .../version-2.7.3/io-kafka-source.md               |   4 -
 .../version-2.7.3/io-kinesis-sink.md               |   4 -
 .../version-2.7.3/io-kinesis-source.md             |   4 -
 .../versioned_docs/version-2.7.3/io-mongo-sink.md  |   4 -
 .../version-2.7.3/io-netty-source.md               |   4 -
 .../versioned_docs/version-2.7.3/io-nsq-source.md  |   4 -
 .../versioned_docs/version-2.7.3/io-overview.md    |  22 +-
 .../versioned_docs/version-2.7.3/io-quickstart.md  |   4 -
 .../version-2.7.3/io-rabbitmq-sink.md              |   4 -
 .../version-2.7.3/io-rabbitmq-source.md            |   4 -
 .../versioned_docs/version-2.7.3/io-redis-sink.md  |   4 -
 .../versioned_docs/version-2.7.3/io-solr-sink.md   |   4 -
 .../version-2.7.3/io-twitter-source.md             |   4 -
 .../versioned_docs/version-2.7.3/io-twitter.md     |   4 -
 .../versioned_docs/version-2.7.3/io-use.md         | 282 +--------
 .../version-2.7.3/performance-pulsar-perf.md       |   4 -
 .../version-2.7.3/reference-cli-tools.md           |   4 -
 .../version-2.7.3/reference-configuration.md       |   4 -
 .../version-2.7.3/reference-connector-admin.md     |   4 -
 .../version-2.7.3/reference-metrics.md             |   4 -
 .../version-2.7.3/reference-pulsar-admin.md        |   4 -
 .../version-2.7.3/reference-terminology.md         |   4 -
 .../schema-evolution-compatibility.md              |   4 -
 .../version-2.7.3/schema-get-started.md            |   4 -
 .../versioned_docs/version-2.7.3/schema-manage.md  |  75 +--
 .../version-2.7.3/schema-understand.md             |   4 -
 .../version-2.7.3/security-athenz.md               |   4 -
 .../version-2.7.3/security-authorization.md        |   4 -
 .../version-2.7.3/security-bouncy-castle.md        |   4 -
 .../version-2.7.3/security-encryption.md           |   4 -
 .../version-2.7.3/security-extending.md            |   4 -
 .../versioned_docs/version-2.7.3/security-jwt.md   |  23 +-
 .../version-2.7.3/security-kerberos.md             |   4 -
 .../version-2.7.3/security-oauth2.md               |   4 -
 .../version-2.7.3/security-overview.md             |   4 -
 .../version-2.7.3/security-tls-authentication.md   |   4 -
 .../version-2.7.3/security-tls-keystore.md         |   4 -
 .../version-2.7.3/security-tls-transport.md        |  20 +-
 .../version-2.7.3/security-token-admin.md          |   4 -
 .../version-2.7.3/sql-deployment-configurations.md |   4 -
 .../version-2.7.3/sql-getting-started.md           |   4 -
 .../versioned_docs/version-2.7.3/sql-overview.md   |   4 -
 .../versioned_docs/version-2.7.3/sql-rest-api.md   |   4 -
 .../version-2.7.3/tiered-storage-aws.md            |   4 -
 .../version-2.7.3/tiered-storage-azure.md          |   4 -
 .../version-2.7.3/tiered-storage-filesystem.md     | 633 +++++++++++---------
 .../version-2.7.3/tiered-storage-gcs.md            |   4 -
 .../version-2.7.3/tiered-storage-overview.md       |   4 -
 .../version-2.7.3/transaction-api.md               |   4 -
 .../version-2.7.3/transaction-guarantee.md         |   4 -
 .../version-2.7.3/window-functions-context.md      |   4 -
 .../versioned_docs/version-2.8.0/adaptors-kafka.md |   4 -
 .../versioned_docs/version-2.8.0/adaptors-spark.md |   4 -
 .../versioned_docs/version-2.8.0/adaptors-storm.md |   4 -
 .../version-2.8.0/admin-api-brokers.md             |  90 +--
 .../version-2.8.0/admin-api-clusters.md            |  90 +--
 .../version-2.8.0/admin-api-functions.md           | 270 +--------
 .../version-2.8.0/admin-api-namespaces.md          | 450 +-------------
 .../admin-api-non-partitioned-topics.md            |   4 -
 .../admin-api-non-persistent-topics.md             |   4 -
 .../version-2.8.0/admin-api-overview.md            |  15 +-
 .../version-2.8.0/admin-api-packages.md            | 105 +---
 .../version-2.8.0/admin-api-partitioned-topics.md  |   4 -
 .../version-2.8.0/admin-api-permissions.md         |  45 +-
 .../version-2.8.0/admin-api-persistent-topics.md   |   4 -
 .../version-2.8.0/admin-api-schemas.md             |   4 -
 .../version-2.8.0/admin-api-tenants.md             |  75 +--
 .../version-2.8.0/admin-api-topics.md              | 532 +++--------------
 .../version-2.8.0/administration-dashboard.md      |   3 -
 .../version-2.8.0/administration-geo.md            |   4 -
 .../version-2.8.0/administration-isolation.md      |  30 +-
 .../version-2.8.0/administration-load-balance.md   |   4 -
 .../version-2.8.0/administration-proxy.md          |   4 -
 .../version-2.8.0/administration-pulsar-manager.md |   4 -
 .../version-2.8.0/administration-stats.md          |   4 -
 .../version-2.8.0/administration-upgrade.md        |   4 -
 .../version-2.8.0/administration-zk-bk.md          |   4 -
 .../version-2.8.0/client-libraries-cgo.md          |   4 -
 .../version-2.8.0/client-libraries-cpp.md          |   4 -
 .../version-2.8.0/client-libraries-dotnet.md       |   4 -
 .../version-2.8.0/client-libraries-go.md           |   4 -
 .../version-2.8.0/client-libraries-java.md         |   4 -
 .../version-2.8.0/client-libraries-node.md         |   4 -
 .../version-2.8.0/client-libraries-python.md       |   4 -
 .../version-2.8.0/client-libraries-websocket.md    |   4 -
 .../concepts-architecture-overview.md              |   4 -
 .../version-2.8.0/concepts-authentication.md       |   4 -
 .../version-2.8.0/concepts-clients.md              |   4 -
 .../version-2.8.0/concepts-messaging.md            |  44 +-
 .../version-2.8.0/concepts-multi-tenancy.md        |   4 -
 .../concepts-multiple-advertised-listeners.md      |   4 -
 .../version-2.8.0/concepts-overview.md             |   4 -
 .../version-2.8.0/concepts-proxy-sni-routing.md    |  15 +-
 .../version-2.8.0/concepts-replication.md          |   4 -
 .../version-2.8.0/concepts-tiered-storage.md       |   4 -
 .../version-2.8.0/concepts-topic-compaction.md     |   4 -
 .../version-2.8.0/concepts-transactions.md         |   4 -
 .../version-2.8.0/cookbooks-bookkeepermetadata.md  |   4 -
 .../version-2.8.0/cookbooks-compaction.md          |   4 -
 .../version-2.8.0/cookbooks-deduplication.md       |  15 +-
 .../version-2.8.0/cookbooks-encryption.md          |   4 -
 .../version-2.8.0/cookbooks-message-queue.md       |   4 -
 .../version-2.8.0/cookbooks-non-persistent.md      |   4 -
 .../version-2.8.0/cookbooks-partitioned.md         |   4 -
 .../version-2.8.0/cookbooks-retention-expiry.md    |  17 +-
 .../version-2.8.0/cookbooks-tiered-storage.md      |   4 -
 .../versioned_docs/version-2.8.0/deploy-aws.md     |   4 -
 .../deploy-bare-metal-multi-cluster.md             |  30 +-
 .../version-2.8.0/deploy-bare-metal.md             |  29 +-
 .../versioned_docs/version-2.8.0/deploy-dcos.md    |  10 +-
 .../versioned_docs/version-2.8.0/deploy-docker.md  |   4 -
 .../version-2.8.0/deploy-kubernetes.md             |   4 -
 .../version-2.8.0/deploy-monitoring.md             |   4 -
 .../version-2.8.0/developing-binary-protocol.md    |   4 -
 .../version-2.8.0/developing-load-manager.md       |   4 -
 .../version-2.8.0/developing-tools.md              |   4 -
 .../versioned_docs/version-2.8.0/functions-cli.md  |   4 -
 .../version-2.8.0/functions-debug.md               |   4 -
 .../version-2.8.0/functions-deploy.md              |   4 -
 .../version-2.8.0/functions-develop.md             | 158 +----
 .../version-2.8.0/functions-metrics.md             |   4 -
 .../version-2.8.0/functions-overview.md            |   4 -
 .../version-2.8.0/functions-package.md             |   4 -
 .../version-2.8.0/functions-runtime.md             |   4 -
 .../version-2.8.0/functions-worker.md              |   4 -
 .../version-2.8.0/getting-started-clients.md       |   4 -
 .../getting-started-concepts-and-architecture.md   |   4 -
 .../version-2.8.0/getting-started-docker.md        |   4 -
 .../version-2.8.0/getting-started-helm.md          |   4 -
 .../version-2.8.0/getting-started-pulsar.md        |   4 -
 .../version-2.8.0/getting-started-standalone.md    |   4 -
 .../versioned_docs/version-2.8.0/helm-deploy.md    |   4 -
 .../versioned_docs/version-2.8.0/helm-install.md   |   4 -
 .../versioned_docs/version-2.8.0/helm-overview.md  |   4 -
 .../versioned_docs/version-2.8.0/helm-prepare.md   |   4 -
 .../versioned_docs/version-2.8.0/helm-tools.md     |   4 -
 .../versioned_docs/version-2.8.0/helm-upgrade.md   |   4 -
 .../version-2.8.0/io-aerospike-sink.md             |   4 -
 .../version-2.8.0/io-canal-source.md               |   4 -
 .../version-2.8.0/io-cassandra-sink.md             |   4 -
 .../version-2.8.0/io-cdc-debezium.md               |   4 -
 .../versioned_docs/version-2.8.0/io-cdc.md         |   4 -
 .../versioned_docs/version-2.8.0/io-cli.md         |   4 -
 .../versioned_docs/version-2.8.0/io-connectors.md  |   4 -
 .../version-2.8.0/io-debezium-source.md            |   4 -
 .../versioned_docs/version-2.8.0/io-debug.md       |   4 -
 .../versioned_docs/version-2.8.0/io-develop.md     |   7 +-
 .../version-2.8.0/io-dynamodb-source.md            |   4 -
 .../version-2.8.0/io-elasticsearch-sink.md         |   4 -
 .../versioned_docs/version-2.8.0/io-file-source.md |   4 -
 .../versioned_docs/version-2.8.0/io-flume-sink.md  |   4 -
 .../version-2.8.0/io-flume-source.md               |   4 -
 .../versioned_docs/version-2.8.0/io-hbase-sink.md  |   4 -
 .../versioned_docs/version-2.8.0/io-hdfs2-sink.md  |   4 -
 .../versioned_docs/version-2.8.0/io-hdfs3-sink.md  |   4 -
 .../version-2.8.0/io-influxdb-sink.md              |   4 -
 .../versioned_docs/version-2.8.0/io-jdbc-sink.md   |   4 -
 .../versioned_docs/version-2.8.0/io-kafka-sink.md  |   4 -
 .../version-2.8.0/io-kafka-source.md               |   4 -
 .../version-2.8.0/io-kinesis-sink.md               |   4 -
 .../version-2.8.0/io-kinesis-source.md             |   4 -
 .../versioned_docs/version-2.8.0/io-mongo-sink.md  |   4 -
 .../version-2.8.0/io-netty-source.md               |   4 -
 .../versioned_docs/version-2.8.0/io-nsq-source.md  |   4 -
 .../versioned_docs/version-2.8.0/io-overview.md    |  22 +-
 .../versioned_docs/version-2.8.0/io-quickstart.md  |   4 -
 .../version-2.8.0/io-rabbitmq-sink.md              |   4 -
 .../version-2.8.0/io-rabbitmq-source.md            |   4 -
 .../versioned_docs/version-2.8.0/io-redis-sink.md  |   4 -
 .../versioned_docs/version-2.8.0/io-solr-sink.md   |   4 -
 .../version-2.8.0/io-twitter-source.md             |   4 -
 .../versioned_docs/version-2.8.0/io-twitter.md     |   4 -
 .../versioned_docs/version-2.8.0/io-use.md         | 282 +--------
 .../version-2.8.0/performance-pulsar-perf.md       |   4 -
 .../version-2.8.0/reference-cli-tools.md           |   4 -
 .../version-2.8.0/reference-configuration.md       |   4 -
 .../version-2.8.0/reference-connector-admin.md     |   4 -
 .../version-2.8.0/reference-metrics.md             |   4 -
 .../version-2.8.0/reference-pulsar-admin.md        |   4 -
 .../version-2.8.0/reference-terminology.md         |   4 -
 .../schema-evolution-compatibility.md              |   4 -
 .../version-2.8.0/schema-get-started.md            |   4 -
 .../versioned_docs/version-2.8.0/schema-manage.md  |  75 +--
 .../version-2.8.0/schema-understand.md             |  26 +-
 .../version-2.8.0/security-athenz.md               |   4 -
 .../version-2.8.0/security-authorization.md        |   4 -
 .../version-2.8.0/security-bouncy-castle.md        |   4 -
 .../version-2.8.0/security-encryption.md           |   4 -
 .../version-2.8.0/security-extending.md            |   4 -
 .../versioned_docs/version-2.8.0/security-jwt.md   |  23 +-
 .../version-2.8.0/security-kerberos.md             |   4 -
 .../version-2.8.0/security-oauth2.md               |   4 -
 .../version-2.8.0/security-overview.md             |   4 -
 .../version-2.8.0/security-tls-authentication.md   |   4 -
 .../version-2.8.0/security-tls-keystore.md         |   4 -
 .../version-2.8.0/security-tls-transport.md        |  20 +-
 .../version-2.8.0/security-token-admin.md          |   4 -
 .../version-2.8.0/sql-deployment-configurations.md |   4 -
 .../version-2.8.0/sql-getting-started.md           |   4 -
 .../versioned_docs/version-2.8.0/sql-overview.md   |   4 -
 .../versioned_docs/version-2.8.0/sql-rest-api.md   |   4 -
 .../version-2.8.0/tiered-storage-aliyun.md         |   4 -
 .../version-2.8.0/tiered-storage-aws.md            |   4 -
 .../version-2.8.0/tiered-storage-azure.md          |   4 -
 .../version-2.8.0/tiered-storage-filesystem.md     | 633 +++++++++++---------
 .../version-2.8.0/tiered-storage-gcs.md            |   4 -
 .../version-2.8.0/tiered-storage-overview.md       |   4 -
 .../version-2.8.0/transaction-api.md               |   4 -
 .../version-2.8.0/transaction-guarantee.md         |   4 -
 .../versioned_docs/version-2.8.0/txn-how.md        |   4 -
 .../versioned_docs/version-2.8.0/txn-monitor.md    |   4 -
 .../versioned_docs/version-2.8.0/txn-use.md        |   4 -
 .../versioned_docs/version-2.8.0/txn-what.md       |   4 -
 .../versioned_docs/version-2.8.0/txn-why.md        |   4 -
 .../version-2.8.0/window-functions-context.md      |   4 -
 .../versioned_sidebars/version-2.6.3-sidebars.json | 102 ++++
 .../versioned_sidebars/version-2.6.4-sidebars.json |   2 +-
 .../versioned_sidebars/version-2.7.2-sidebars.json |  20 +
 site2/website-next/versions.json                   |   1 +
 .../versioned_docs/version-2.6.1/deploy-dcos.md    |   4 +-
 .../versioned_docs/version-2.6.2/deploy-dcos.md    |   4 +-
 .../versioned_docs/version-2.6.3/deploy-dcos.md    |   4 +-
 .../versioned_docs/version-2.6.4/deploy-dcos.md    |   4 +-
 863 files changed, 4381 insertions(+), 17383 deletions(-)

diff --git a/site2/website-next/docs/adaptors-kafka.md b/site2/website-next/docs/adaptors-kafka.md
index aa37357..27382e9 100644
--- a/site2/website-next/docs/adaptors-kafka.md
+++ b/site2/website-next/docs/adaptors-kafka.md
@@ -4,10 +4,6 @@ title: Pulsar adaptor for Apache Kafka
 sidebar_label: "Kafka client wrapper"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 Pulsar provides an easy option for applications that are currently written using the [Apache Kafka](http://kafka.apache.org) Java client API.
 
diff --git a/site2/website-next/docs/adaptors-spark.md b/site2/website-next/docs/adaptors-spark.md
index 324aaa4..afa5a7e 100644
--- a/site2/website-next/docs/adaptors-spark.md
+++ b/site2/website-next/docs/adaptors-spark.md
@@ -4,10 +4,6 @@ title: Pulsar adaptor for Apache Spark
 sidebar_label: "Apache Spark"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Spark Streaming receiver
 The Spark Streaming receiver for Pulsar is a custom receiver that enables Apache [Spark Streaming](https://spark.apache.org/streaming/) to receive raw data from Pulsar.
 
diff --git a/site2/website-next/docs/adaptors-storm.md b/site2/website-next/docs/adaptors-storm.md
index a5ca062..9df9076 100644
--- a/site2/website-next/docs/adaptors-storm.md
+++ b/site2/website-next/docs/adaptors-storm.md
@@ -4,10 +4,6 @@ title: Pulsar adaptor for Apache Storm
 sidebar_label: "Apache Storm"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar Storm is an adaptor for integrating with [Apache Storm](http://storm.apache.org/) topologies. It provides core Storm implementations for sending and receiving data.
 
 An application can inject data into a Storm topology via a generic Pulsar spout, as well as consume data from a Storm topology via a generic Pulsar bolt.
diff --git a/site2/website-next/docs/admin-api-brokers.md b/site2/website-next/docs/admin-api-brokers.md
index c29e6e2..55c0184 100644
--- a/site2/website-next/docs/admin-api-brokers.md
+++ b/site2/website-next/docs/admin-api-brokers.md
@@ -41,20 +41,7 @@ Fetch all available active brokers that are serving traffic.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -93,20 +80,7 @@ Fetch the information of the leader broker, for example, the service url.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -147,20 +121,7 @@ It finds all namespaces which are owned and served by a given broker.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -213,20 +174,7 @@ But since all broker configuration in Pulsar is stored in ZooKeeper, configurati
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 The [`update-dynamic-config`](reference-pulsar-admin.md#brokers-update-dynamic-config) subcommand will update existing configuration. It takes two arguments: the name of the parameter and the new value using the `config` and `value` flag respectively. Here's an example for the [`brokerShutdownTimeoutMs`](reference-configuration.md#broker-brokerShutdownTimeoutMs) parameter:
@@ -260,20 +208,7 @@ admin.brokers().updateDynamicConfiguration(configName, configValue);
 Fetch a list of all potentially updatable configuration parameters.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -307,20 +242,7 @@ Fetch a list of all parameters that have been dynamically updated.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
diff --git a/site2/website-next/docs/admin-api-clusters.md b/site2/website-next/docs/admin-api-clusters.md
index 1063279..8687ae6 100644
--- a/site2/website-next/docs/admin-api-clusters.md
+++ b/site2/website-next/docs/admin-api-clusters.md
@@ -37,20 +37,7 @@ New clusters can be provisioned using the admin interface.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 You can provision a new cluster using the [`create`](reference-pulsar-admin.md#clusters-create) subcommand. Here's an example:
@@ -129,20 +116,7 @@ You can fetch the [configuration](reference-configuration) for an existing clust
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get`](reference-pulsar-admin.md#clusters-get) subcommand and specify the name of the cluster. Here's an example:
@@ -184,20 +158,7 @@ You can update the configuration for an existing cluster at any time.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`update`](reference-pulsar-admin.md#clusters-update) subcommand and specify new configuration values using flags.
@@ -240,20 +201,7 @@ Clusters can be deleted from a Pulsar [instance](reference-terminology.md#instan
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`delete`](reference-pulsar-admin.md#clusters-delete) subcommand and specify the name of the cluster.
@@ -288,20 +236,7 @@ You can fetch a list of all clusters in a Pulsar [instance](reference-terminolog
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`list`](reference-pulsar-admin.md#clusters-list) subcommand.
@@ -338,20 +273,7 @@ Peer clusters can be configured for a given cluster in a Pulsar [instance](refer
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`update-peer-clusters`](reference-pulsar-admin.md#clusters-update-peer-clusters) subcommand and specify the list of peer-cluster names.
diff --git a/site2/website-next/docs/admin-api-functions.md b/site2/website-next/docs/admin-api-functions.md
index 40976ec..ea97ac5 100644
--- a/site2/website-next/docs/admin-api-functions.md
+++ b/site2/website-next/docs/admin-api-functions.md
@@ -42,20 +42,7 @@ You can create a Pulsar function in cluster mode (deploy it on a Pulsar cluster)
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`create`](reference-pulsar-admin.md#functions-create) subcommand. 
@@ -111,20 +98,7 @@ You can update a Pulsar function that has been deployed to a Pulsar cluster usin
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST Admin API",
-    "value": "REST Admin API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST Admin API","value":"REST Admin API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`update`](reference-pulsar-admin.md#functions-update) subcommand. 
@@ -175,20 +149,7 @@ You can start a stopped function instance with `instance-id` using Admin CLI, RE
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand. 
@@ -227,20 +188,7 @@ You can start all stopped function instances using Admin CLI, REST API or Java A
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`start`](reference-pulsar-admin.md#functions-start) subcommand. 
@@ -280,20 +228,7 @@ You can stop a function instance with `instance-id` using Admin CLI, REST API or
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand. 
@@ -334,20 +269,7 @@ You can stop all function instances using Admin CLI, REST API or Java Admin API.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stop`](reference-pulsar-admin.md#functions-stop) subcommand. 
@@ -387,20 +309,7 @@ Restart a function instance with `instance-id` using Admin CLI, REST API or Java
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand. 
@@ -441,20 +350,7 @@ You can restart all function instances using Admin CLI, REST API or Java admin A
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`restart`](reference-pulsar-admin.md#functions-restart) subcommand. 
@@ -494,20 +390,7 @@ You can list all Pulsar functions running under a specific tenant and namespace
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`list`](reference-pulsar-admin.md#functions-list) subcommand.
@@ -546,20 +429,7 @@ You can delete a Pulsar function that is running on a Pulsar cluster using Admin
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`delete`](reference-pulsar-admin.md#functions-delete) subcommand. 
@@ -599,20 +469,7 @@ You can get information about a Pulsar function currently running in cluster mod
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`get`](reference-pulsar-admin.md#functions-get) subcommand. 
@@ -651,20 +508,7 @@ admin.functions().getFunction(tenant, namespace, functionName);
 You can get the current status of a Pulsar function instance with `instance-id` using Admin CLI, REST API or Java Admin API.
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand. 
@@ -705,20 +549,7 @@ You can get the current status of a Pulsar function instance using Admin CLI, RE
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`status`](reference-pulsar-admin.md#functions-status) subcommand. 
@@ -757,20 +588,7 @@ admin.functions().getFunctionStatus(tenant, namespace, functionName);
 You can get the current stats of a Pulsar Function instance with `instance-id` using Admin CLI, REST API or Java admin API.
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stats`](reference-pulsar-admin.md#functions-stats) subcommand. 
@@ -811,20 +629,7 @@ You can get the current stats of a Pulsar function using Admin CLI, REST API or
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`stats`](reference-pulsar-admin.md#functions-stats) subcommand. 
@@ -864,20 +669,7 @@ You can trigger a specified Pulsar function with a supplied value using Admin CL
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`trigger`](reference-pulsar-admin.md#functions-trigger) subcommand. 
@@ -920,20 +712,7 @@ You can put the state associated with a Pulsar function using Admin CLI, REST AP
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`putstate`](reference-pulsar-admin.md#functions-putstate) subcommand. 
@@ -976,20 +755,7 @@ You can fetch the current state associated with a Pulsar function using Admin CL
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin CLI",
-    "value": "Java Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin CLI","value":"Java Admin CLI"}]}>
 <TabItem value="Admin CLI">
 
 Use the [`querystate`](reference-pulsar-admin.md#functions-querystate) subcommand. 
diff --git a/site2/website-next/docs/admin-api-namespaces.md b/site2/website-next/docs/admin-api-namespaces.md
index d3aebb8..e13e284 100644
--- a/site2/website-next/docs/admin-api-namespaces.md
+++ b/site2/website-next/docs/admin-api-namespaces.md
@@ -34,20 +34,7 @@ You can create new namespaces under a given [tenant](reference-terminology.md#te
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`create`](reference-pulsar-admin.md#namespaces-create) subcommand and specify the namespace by name:
@@ -86,20 +73,7 @@ You can fetch the current policies associated with a namespace at any time.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`policies`](reference-pulsar-admin.md#namespaces-policies) subcommand and specify the namespace:
@@ -159,20 +133,7 @@ You can list all namespaces within a given Pulsar [tenant](reference-terminology
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`list`](reference-pulsar-admin.md#namespaces-list) subcommand and specify the tenant:
@@ -213,20 +174,7 @@ You can delete existing namespaces from a tenant.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`delete`](reference-pulsar-admin.md#namespaces-delete) subcommand and specify the namespace:
@@ -267,20 +215,7 @@ You can set replication clusters for a namespace to enable Pulsar to internally
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -318,20 +253,7 @@ You can get the list of replication clusters for a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -384,20 +306,7 @@ Backlog quota restriction can be taken care by defining restriction of backlog-q
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -434,20 +343,7 @@ You can get a configured backlog quota for a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -495,20 +391,7 @@ You can remove backlog quota policies for a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -555,20 +438,7 @@ Persistence policies allow users to configure persistency-level for all topic me
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -605,20 +475,7 @@ You can get the configured persistence policies of a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -668,20 +525,7 @@ The namespace bundle is a virtual group of topics which belong to the same names
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -718,20 +562,7 @@ One namespace bundle can contain multiple topics but can be served by only one b
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -770,20 +601,7 @@ You can configure the time to live (in seconds) duration for messages. In the ex
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -820,20 +638,7 @@ When the message-ttl for a namespace is set, you can use the command below to ge
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -888,20 +693,7 @@ Remove a message TTL of the configured namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -941,20 +733,7 @@ It clears all message backlog for all the topics that belong to a specific names
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -991,20 +770,7 @@ It clears all message backlog for all the topics that belong to a specific Names
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1043,20 +809,7 @@ Each namespace contains multiple topics and the retention size (storage size) of
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1093,20 +846,7 @@ It shows retention information of a given namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1165,20 +905,7 @@ disables the throttling.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1218,20 +945,7 @@ It shows configured message-rate for the namespace (topics under this namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1283,20 +997,7 @@ disables the throttling.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1336,20 +1037,7 @@ It shows configured message-rate for the namespace (topics under this namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1401,20 +1089,7 @@ disables the throttling.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1454,20 +1129,7 @@ It shows configured message-rate for the namespace (topics under this namespace
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1516,20 +1178,7 @@ It shows configured `deduplicationSnapshotInterval` for a namespace (Each topic
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1567,20 +1216,7 @@ Set configured `deduplicationSnapshotInterval` for a namespace. Each topic under
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1625,20 +1261,7 @@ Remove configured `deduplicationSnapshotInterval` of a namespace (Each topic und
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```
@@ -1683,20 +1306,7 @@ Use the [`unload`](reference-pulsar-admin.md#unload) subcommand of the [`namespa
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST",
-    "value": "REST"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST","value":"REST"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
diff --git a/site2/website-next/docs/admin-api-non-partitioned-topics.md b/site2/website-next/docs/admin-api-non-partitioned-topics.md
index 1461ec6..e221e27 100644
--- a/site2/website-next/docs/admin-api-non-partitioned-topics.md
+++ b/site2/website-next/docs/admin-api-non-partitioned-topics.md
@@ -4,8 +4,4 @@ title: Managing non-partitioned topics
 sidebar_label: "Non-partitioned topics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/docs/admin-api-non-persistent-topics.md b/site2/website-next/docs/admin-api-non-persistent-topics.md
index a9f7e12..78dac35 100644
--- a/site2/website-next/docs/admin-api-non-persistent-topics.md
+++ b/site2/website-next/docs/admin-api-non-persistent-topics.md
@@ -4,8 +4,4 @@ title: Managing non-persistent topics
 sidebar_label: "Non-Persistent topics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/docs/admin-api-overview.md b/site2/website-next/docs/admin-api-overview.md
index d1e2fb6..d65f35e 100644
--- a/site2/website-next/docs/admin-api-overview.md
+++ b/site2/website-next/docs/admin-api-overview.md
@@ -44,20 +44,7 @@ Each of the three admin interfaces (the `pulsar-admin` CLI tool, the {@inject: r
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 If you have enabled authentication, you need to provide an auth configuration to use the `pulsar-admin` tool. By default, the configuration for the `pulsar-admin` tool is in the [`conf/client.conf`](reference-configuration.md#client) file. The following are the available parameters:
diff --git a/site2/website-next/docs/admin-api-packages.md b/site2/website-next/docs/admin-api-packages.md
index 0bb5f97..524fdf4 100644
--- a/site2/website-next/docs/admin-api-packages.md
+++ b/site2/website-next/docs/admin-api-packages.md
@@ -85,20 +85,7 @@ You can upload a package to the package management service in the following ways
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -140,20 +127,7 @@ You can download a package to the package management service in the following wa
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -194,20 +168,7 @@ Download a package to the package management service asynchronously.
 You can get a list of all versions of a package in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -248,20 +209,7 @@ List all versions of a package asynchronously.
 You can get a list of all the packages with the given type in a namespace in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -303,20 +251,7 @@ You can get the metadata of a package in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -357,20 +292,7 @@ Get the metadata of a package asynchronously.
 You can update the metadata of a package in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -412,20 +334,7 @@ You can delete a specified package with its package name in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 The following command example deletes a package of version 0.1.
diff --git a/site2/website-next/docs/admin-api-partitioned-topics.md b/site2/website-next/docs/admin-api-partitioned-topics.md
index 6359aa3..7221b3d 100644
--- a/site2/website-next/docs/admin-api-partitioned-topics.md
+++ b/site2/website-next/docs/admin-api-partitioned-topics.md
@@ -4,8 +4,4 @@ title: Managing partitioned topics
 sidebar_label: "Partitioned topics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/docs/admin-api-permissions.md b/site2/website-next/docs/admin-api-permissions.md
index 7d315ee..fb45ac7 100644
--- a/site2/website-next/docs/admin-api-permissions.md
+++ b/site2/website-next/docs/admin-api-permissions.md
@@ -27,20 +27,7 @@ You can grant permissions to specific roles for lists of operations such as `pro
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`grant-permission`](reference-pulsar-admin.md#grant-permission) subcommand and specify a namespace, actions using the `--actions` flag, and a role using the `--role` flag:
@@ -116,20 +103,7 @@ You can see which permissions have been granted to which roles in a namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`permissions`](reference-pulsar-admin#permissions) subcommand and specify a namespace:
@@ -170,20 +144,7 @@ You can revoke permissions from specific roles, which means that those roles wil
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`revoke-permission`](reference-pulsar-admin.md#revoke-permission) subcommand and specify a namespace and a role using the `--role` flag:
diff --git a/site2/website-next/docs/admin-api-persistent-topics.md b/site2/website-next/docs/admin-api-persistent-topics.md
index 2b7317c..8a7abae 100644
--- a/site2/website-next/docs/admin-api-persistent-topics.md
+++ b/site2/website-next/docs/admin-api-persistent-topics.md
@@ -4,8 +4,4 @@ title: Managing persistent topics
 sidebar_label: "Persistent topics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/docs/admin-api-schemas.md b/site2/website-next/docs/admin-api-schemas.md
index 9d10c08..8399a03 100644
--- a/site2/website-next/docs/admin-api-schemas.md
+++ b/site2/website-next/docs/admin-api-schemas.md
@@ -4,7 +4,3 @@ title: Managing Schemas
 sidebar_label: "Schemas"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
diff --git a/site2/website-next/docs/admin-api-tenants.md b/site2/website-next/docs/admin-api-tenants.md
index 543183d..f4ce055 100644
--- a/site2/website-next/docs/admin-api-tenants.md
+++ b/site2/website-next/docs/admin-api-tenants.md
@@ -31,20 +31,7 @@ You can list all of the tenants associated with an [instance](reference-terminol
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`list`](reference-pulsar-admin.md#tenants-list) subcommand.
@@ -81,20 +68,7 @@ You can create a new tenant.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`create`](reference-pulsar-admin.md#tenants-create) subcommand:
@@ -141,20 +115,7 @@ You can fetch the [configuration](reference-configuration) for an existing tenan
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get`](reference-pulsar-admin.md#tenants-get) subcommand and specify the name of the tenant. Here's an example:
@@ -199,20 +160,7 @@ Tenants can be deleted from a Pulsar [instance](reference-terminology.md#instanc
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`delete`](reference-pulsar-admin.md#tenants-delete) subcommand and specify the name of the tenant.
@@ -247,20 +195,7 @@ You can update a tenant's configuration.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "JAVA",
-    "value": "JAVA"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"JAVA","value":"JAVA"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`update`](reference-pulsar-admin.md#tenants-update) subcommand.
diff --git a/site2/website-next/docs/admin-api-topics.md b/site2/website-next/docs/admin-api-topics.md
index 1e5adcd..4f5fbb5 100644
--- a/site2/website-next/docs/admin-api-topics.md
+++ b/site2/website-next/docs/admin-api-topics.md
@@ -50,20 +50,7 @@ You can get the list of topics under a given namespace in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -98,20 +85,7 @@ You can grant permissions on a client role to perform specific actions on a give
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -149,20 +123,7 @@ You can fetch permission in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -203,20 +164,7 @@ admin.topics().getPermissions(topic);
 You can revoke a permission granted on a client role in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -260,20 +208,7 @@ You can delete a topic in the following ways. You cannot delete a topic if any a
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -307,20 +242,7 @@ admin.topics().delete(topic);
 You can unload a topic in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -633,20 +555,7 @@ To get the status of a topic, you can use the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -824,20 +733,7 @@ The following is an example of the detailed statistics of a topic.
 To get the internal status of a topic, you can use the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -871,20 +767,7 @@ admin.topics().getInternalStats(topic);
 You can peek a number of messages for a specific subscription of a given topic in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -926,20 +809,7 @@ You can fetch the message with the given ledger ID and entry ID in the following
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -977,20 +847,7 @@ You can examine a specific message on a topic by position relative to the earlie
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1026,20 +883,7 @@ You can get message ID published at or just after the given datetime.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1077,20 +921,7 @@ You can skip a number of messages for a specific subscription of a given topic i
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1128,20 +959,7 @@ You can skip all the old messages for a specific subscription of a given topic.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1178,20 +996,7 @@ You can reset a subscription cursor position back to the position which is recor
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1229,20 +1034,7 @@ You can locate the broker URL which is serving the given topic in the following
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1279,20 +1071,7 @@ You can check the range of the bundle which contains given topic in the followin
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1329,20 +1108,7 @@ You can check all subscription names for a given topic in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1373,76 +1139,13 @@ admin.topics().getSubscriptions(topic);
 
 </Tabs>
 
-### Unsubscribe
-
-When a subscription does not process messages any more, you can unsubscribe it in the following ways. 
-
-<Tabs 
-  defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
-<TabItem value="pulsar-admin">
-
-```shell
-
-$ pulsar-admin topics unsubscribe \
-  --subscription my-subscription \
-  persistent://test-tenant/ns1/tp1 \
-
-```
-
-</TabItem>
-<TabItem value="REST API">
-
-{@inject: endpoint|DELETE|/admin/v2/namespaces/:tenant/:namespace/:topic/subscription/:subscription|operation/deleteSubscription?version=@pulsar:version_number@}
-
-</TabItem>
-<TabItem value="Java">
-
-```java
-
-String topic = "persistent://my-tenant/my-namespace/my-topic";
-String subscriptionName = "my-subscription";
-admin.topics().deleteSubscription(topic, subscriptionName);
-
-```
-
-</TabItem>
-
-</Tabs>
-
 ### Last Message Id
 
 You can get the last committed message ID for a persistent topic. It is available since 2.3.0 release.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1483,20 +1186,7 @@ For more information about the two parameters, see [here](reference-configuratio
 You can create non-partitioned topics in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 When you create non-partitioned topics with the [`create`](reference-pulsar-admin.md#create-3) command, you need to specify the topic name as an argument.
@@ -1510,7 +1200,7 @@ $ bin/pulsar-admin topics create \
 
 :::note
 
-When you create a non-partitioned topic with the suffix '-partition-' followed by numeric value like 'xyz-topic-partition-x' for the topic name, if a partitioned topic with same suffix 'xyz-topic-partition-y' exists, then the numeric value(x) for the non-partitioned topic must be larger than the number of partitions(y) of the partitioned topic. Otherwise, you cannot create such a non-partitioned topic. 
+When you create a non-partitioned topic with the suffix '-partition-' followed by numeric value like 'xyz-topic-partition-x' for the topic name, if a partitioned topic with same suffix 'xyz-topic-partition-y' exists, then the numeric value(x) for the non-partitioned topic must be larger than the number of partitions(y) of the partitioned topic. Otherwise, you cannot create such a non-partitioned topic.
 
 :::
 
@@ -1537,20 +1227,7 @@ admin.topics().createNonPartitionedTopic(topicName);
 You can delete non-partitioned topics in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1583,20 +1260,7 @@ admin.topics().delete(topic);
 You can get the list of topics under a given namespace in the following ways.  
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1667,20 +1331,7 @@ You can check the current statistics of a given topic. The following is an examp
 You can check the current statistics of a given topic and its connected producers and consumers in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1723,20 +1374,7 @@ For more information about the two parameters, see [here](reference-configuratio
 You can create partitioned topics in the following ways.
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 When you create partitioned topics with the [`create-partitioned-topic`](reference-pulsar-admin.md#create-partitioned-topic)
@@ -1782,20 +1420,7 @@ When topic auto-creation is disabled, and you have a partitioned topic without a
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can create missed partitions with the [`create-missed-partitions`](reference-pulsar-admin.md#create-missed-partitions) command and specify the topic name as an argument.
@@ -1836,20 +1461,7 @@ Field | Description
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can check the number of partitions in a partitioned topic with the [`get-partitioned-topic-metadata`](reference-pulsar-admin.md#get-partitioned-topic-metadata) subcommand. 
@@ -1891,20 +1503,7 @@ Producers and consumers can find the newly created partitions automatically.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can update partitioned topics with the [`update-partitioned-topic`](reference-pulsar-admin.md#update-partitioned-topic) command.
@@ -1940,20 +1539,7 @@ You can delete partitioned topics with the [`delete-partitioned-topic`](referenc
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -1985,20 +1571,7 @@ admin.topics().delete(topic);
 You can get the list of topics under a given namespace in the following ways.  
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -2092,20 +1665,7 @@ You can check the current statistics of a given partitioned topic and its connec
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -2181,20 +1741,7 @@ You can get the internal stats for the partitioned topic in the following ways.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -2228,20 +1775,7 @@ You can get backlog size of a single topic partition or a nonpartitioned topic g
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 ```shell
@@ -2365,3 +1899,119 @@ If a message has a key, it supersedes the round robin routing policy. The follow
 
 ```
 
+## Manage subscriptions
+
+You can use [Pulsar admin API](admin-api-overview) to create, check, and delete subscriptions.
+
+### Create subscription
+
+You can create a subscription for a topic using one of the following methods.
+
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+
+<TabItem value="pulsar-admin">
+
+```shell
+
+pulsar-admin topics create-subscription \
+--subscription my-subscription \
+persistent://test-tenant/ns1/tp1
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|PUT|/admin/v2/persistent/:tenant/:namespace/:topic/subscription/:subscription|operation/createSubscriptions?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+```java
+
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+String subscriptionName = "my-subscription";
+admin.topics().createSubscription(topic, subscriptionName, MessageId.latest);
+
+```
+
+</TabItem>
+
+</Tabs>
+
+### Get subscription
+
+You can check all subscription names for a given topic using one of the following methods.
+
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+
+<TabItem value="pulsar-admin">
+
+```shell
+
+pulsar-admin topics subscriptions \
+persistent://test-tenant/ns1/tp1 \
+my-subscription
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/subscriptions|operation/getSubscriptions?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+```java
+
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+admin.topics().getSubscriptions(topic);
+
+```
+
+</TabItem>
+
+</Tabs>
+
+### Unsubscribe subscription 
+
+When a subscription does not process messages any more, you can unsubscribe it using one of the following methods. 
+
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+
+<TabItem value="pulsar-admin">
+
+```shell
+
+pulsar-admin topics unsubscribe \
+--subscription my-subscription \
+persistent://test-tenant/ns1/tp1
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|DELETE|/admin/v2/namespaces/:tenant/:namespace/:topic/subscription/:subscription|operation/deleteSubscription?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+```java
+
+String topic = "persistent://my-tenant/my-namespace/my-topic";
+String subscriptionName = "my-subscription";
+admin.topics().deleteSubscription(topic, subscriptionName);
+
+```
+
+</TabItem>
+
+</Tabs>
\ No newline at end of file
diff --git a/site2/website-next/docs/administration-dashboard.md b/site2/website-next/docs/administration-dashboard.md
index 46977ed..8419a4e 100644
--- a/site2/website-next/docs/administration-dashboard.md
+++ b/site2/website-next/docs/administration-dashboard.md
@@ -4,9 +4,6 @@ title: Pulsar dashboard
 sidebar_label: "Dashboard"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 :::note
 
 Pulsar dashboard is deprecated. We recommend you use [Pulsar Manager](administration-pulsar-manager) to manage and monitor the stats of your topics. 
diff --git a/site2/website-next/docs/administration-geo.md b/site2/website-next/docs/administration-geo.md
index 3e6023e..e2ff3f4 100644
--- a/site2/website-next/docs/administration-geo.md
+++ b/site2/website-next/docs/administration-geo.md
@@ -47,8 +47,6 @@ All messages produced in any of the three clusters are delivered to all subscrip
 
 ## Configure replication
 
-As stated in [Geo-replication and Pulsar properties](#geo-replication-and-pulsar-properties) section, geo-replication in Pulsar is managed at the [tenant](reference-terminology.md#tenant) level.
-
 The following example connects three clusters: **us-east**, **us-west**, and **us-cent**.
 
 ### Connect replication clusters
@@ -110,7 +108,11 @@ $ bin/pulsar-admin tenants create my-tenant \
 
 To update permissions of an existing tenant, use `update` instead of `create`.
 
-### Enable geo-replication namespaces
+### Enable geo-replication 
+
+You can enable geo-replication at **namespace** or **topic** level.
+
+#### Enable geo-replication at namespace level
 
 You can create a namespace with the following command sample.
 
@@ -129,11 +131,24 @@ $ bin/pulsar-admin namespaces set-clusters my-tenant/my-namespace \
 
 ```
 
-You can change the replication clusters for a namespace at any time, without disruption to ongoing traffic. Replication channels are immediately set up or stopped in all clusters as soon as the configuration changes.
+#### Enable geo-replication at topic level
 
-### Use topics with geo-replication
+You can set geo-replication at topic level using the command `pulsar-admin topics set-replication-clusters`. For the latest and complete information about `Pulsar admin`, including commands, flags, descriptions, and more, see [Pulsar admin doc](https://pulsar.apache.org/tools/pulsar-admin/).
+
+```shell
+
+$ bin/pulsar-admin topics set-replication-clusters --clusters us-west,us-east,us-cent my-tenant/my-namespace/my-topic
+
+```
+
+:::tip
 
-Once you create a geo-replication namespace, any topics that producers or consumers create within that namespace is replicated across clusters. Typically, each application uses the `serviceUrl` for the local cluster.
+- You can change the replication clusters for a namespace at any time, without disruption to ongoing traffic. Replication channels are immediately set up or stopped in all clusters as soon as the configuration changes.
+- Once you create a geo-replication namespace, any topics that producers or consumers create within that namespace are replicated across clusters. Typically, each application uses the `serviceUrl` for the local cluster.
+
+:::
+
+### Use topics with geo-replication
 
 #### Selective replication
 
@@ -161,14 +176,30 @@ producer.newMessage()
 
 #### Topic stats
 
-Topic-specific statistics for geo-replication topics are available via the [`pulsar-admin`](reference-pulsar-admin) tool and {@inject: rest:REST:/} API:
+You can check topic-specific statistics for geo-replication topics using one of the following methods.
+
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"}]}>
+<TabItem value="pulsar-admin">
+
+Use the [`pulsar-admin topics stats`](https://pulsar.apache.org/tools/pulsar-admin/) command.
 
 ```shell
 
-$ bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic
+$ bin/pulsar-admin topics stats persistent://my-tenant/my-namespace/my-topic
 
 ```
 
+</TabItem>
+<TabItem value="REST API">
+
+{@inject: endpoint|GET|/admin/v2/:schema/:tenant/:namespace/:topic/stats|operation/getStats?version=@pulsar:version_number@}
+
+</TabItem>
+
+</Tabs>
+
 Each cluster reports its own local stats, including the incoming and outgoing replication rates and backlogs.
 
 #### Delete a geo-replication topic
diff --git a/site2/website-next/docs/administration-isolation.md b/site2/website-next/docs/administration-isolation.md
index a6e93ab..c4cda73 100644
--- a/site2/website-next/docs/administration-isolation.md
+++ b/site2/website-next/docs/administration-isolation.md
@@ -20,20 +20,7 @@ You can set a namespace isolation policy for a cluster using one of the followin
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java admin API",
-    "value": "Java admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java admin API","value":"Java admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -79,20 +66,7 @@ You can set a bookie affinity group using one of the following methods.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java admin API",
-    "value": "Java admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java admin API","value":"Java admin API"}]}>
 
 <TabItem value="Admin CLI">
 
diff --git a/site2/website-next/docs/administration-load-balance.md b/site2/website-next/docs/administration-load-balance.md
index 26d1861..6557f5d 100644
--- a/site2/website-next/docs/administration-load-balance.md
+++ b/site2/website-next/docs/administration-load-balance.md
@@ -4,10 +4,6 @@ title: Pulsar load balance
 sidebar_label: "Load balance"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Load balance across Pulsar brokers
 
 Pulsar is an horizontally scalable messaging system, so the traffic in a logical cluster must be balanced across all the available Pulsar brokers as evenly as possible, which is a core requirement.
diff --git a/site2/website-next/docs/administration-proxy.md b/site2/website-next/docs/administration-proxy.md
index e27c7d4..3cef937 100644
--- a/site2/website-next/docs/administration-proxy.md
+++ b/site2/website-next/docs/administration-proxy.md
@@ -4,10 +4,6 @@ title: Pulsar proxy
 sidebar_label: "Pulsar proxy"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar proxy is an optional gateway. Pulsar proxy is used when direct connections between clients and Pulsar brokers are either infeasible or undesirable. For example, when you run Pulsar in a cloud environment or on [Kubernetes](https://kubernetes.io) or an analogous platform, you can run Pulsar proxy.
 
 ## Configure the proxy
diff --git a/site2/website-next/docs/administration-pulsar-manager.md b/site2/website-next/docs/administration-pulsar-manager.md
index 80cd52a..3513739 100644
--- a/site2/website-next/docs/administration-pulsar-manager.md
+++ b/site2/website-next/docs/administration-pulsar-manager.md
@@ -4,10 +4,6 @@ title: Pulsar Manager
 sidebar_label: "Pulsar Manager"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar Manager is a web-based GUI management and monitoring tool that helps administrators and users manage and monitor tenants, namespaces, topics, subscriptions, brokers, clusters, and so on, and supports dynamic configuration of multiple environments.
 
 :::note
diff --git a/site2/website-next/docs/administration-stats.md b/site2/website-next/docs/administration-stats.md
index 2ef0f23..2ccd73c 100644
--- a/site2/website-next/docs/administration-stats.md
+++ b/site2/website-next/docs/administration-stats.md
@@ -4,10 +4,6 @@ title: Pulsar stats
 sidebar_label: "Pulsar statistics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Partitioned topics
 
 |Stat|Description|
diff --git a/site2/website-next/docs/administration-upgrade.md b/site2/website-next/docs/administration-upgrade.md
index 683c904..30e820f 100644
--- a/site2/website-next/docs/administration-upgrade.md
+++ b/site2/website-next/docs/administration-upgrade.md
@@ -4,10 +4,6 @@ title: Upgrade Guide
 sidebar_label: "Upgrade"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Upgrade guidelines
 
 Apache Pulsar is comprised of multiple components, ZooKeeper, bookies, and brokers. These components are either stateful or stateless. You do not have to upgrade ZooKeeper nodes unless you have special requirement. While you upgrade, you need to pay attention to bookies (stateful), brokers and proxies (stateless).
diff --git a/site2/website-next/docs/administration-zk-bk.md b/site2/website-next/docs/administration-zk-bk.md
index f815583..e5f9688 100644
--- a/site2/website-next/docs/administration-zk-bk.md
+++ b/site2/website-next/docs/administration-zk-bk.md
@@ -4,10 +4,6 @@ title: ZooKeeper and BookKeeper administration
 sidebar_label: "ZooKeeper and BookKeeper"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar relies on two external systems for essential tasks:
 
 * [ZooKeeper](https://zookeeper.apache.org/) is responsible for a wide variety of configuration-related and coordination-related tasks.
diff --git a/site2/website-next/docs/client-libraries-cgo.md b/site2/website-next/docs/client-libraries-cgo.md
index dc9e585..dc1ee95 100644
--- a/site2/website-next/docs/client-libraries-cgo.md
+++ b/site2/website-next/docs/client-libraries-cgo.md
@@ -4,10 +4,6 @@ title: Pulsar CGo client
 sidebar_label: "CGo(deprecated)"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use Pulsar Go client to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Go (aka Golang).
 
 All the methods in [producers](#producers), [consumers](#consumers), and [readers](#readers) of a Go client are thread-safe.
diff --git a/site2/website-next/docs/client-libraries-cpp.md b/site2/website-next/docs/client-libraries-cpp.md
index b84c7a0..958861a 100644
--- a/site2/website-next/docs/client-libraries-cpp.md
+++ b/site2/website-next/docs/client-libraries-cpp.md
@@ -4,10 +4,6 @@ title: Pulsar C++ client
 sidebar_label: "C++"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use Pulsar C++ client to create Pulsar producers and consumers in C++.
 
 All the methods in producer, consumer, and reader of a C++ client are thread-safe.
diff --git a/site2/website-next/docs/client-libraries-dotnet.md b/site2/website-next/docs/client-libraries-dotnet.md
index ff608e0..a2c0f52 100644
--- a/site2/website-next/docs/client-libraries-dotnet.md
+++ b/site2/website-next/docs/client-libraries-dotnet.md
@@ -4,10 +4,6 @@ title: Pulsar C# client
 sidebar_label: "C#"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use the Pulsar C# client (DotPulsar) to create Pulsar producers and consumers in C#. All the methods in the producer, consumer, and reader of a C# client are thread-safe. The official documentation for DotPulsar is available [here](https://github.com/apache/pulsar-dotpulsar/wiki).
 
 ## Installation
diff --git a/site2/website-next/docs/client-libraries-go.md b/site2/website-next/docs/client-libraries-go.md
index ab07c4c..831ea42 100644
--- a/site2/website-next/docs/client-libraries-go.md
+++ b/site2/website-next/docs/client-libraries-go.md
@@ -4,10 +4,6 @@ title: Pulsar Go client
 sidebar_label: "Go"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > Tips: Currently, the CGo client will be deprecated, if you want to know more about the CGo client, please refer to [CGo client docs](client-libraries-cgo)
 
 You can use Pulsar [Go client](https://github.com/apache/pulsar-client-go) to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Go (aka Golang).
diff --git a/site2/website-next/docs/client-libraries-java.md b/site2/website-next/docs/client-libraries-java.md
index a47c27f..b8150e1 100644
--- a/site2/website-next/docs/client-libraries-java.md
+++ b/site2/website-next/docs/client-libraries-java.md
@@ -4,10 +4,6 @@ title: Pulsar Java client
 sidebar_label: "Java"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use a Pulsar Java client to create the Java [producer](#producer), [consumer](#consumer), and [readers](#reader) of messages and to perform [administrative tasks](admin-api-overview). The current Java client version is **@pulsar:version@**.
 
 All the methods in [producer](#producer), [consumer](#consumer), and [reader](#reader) of a Java client are thread-safe.
@@ -224,6 +220,7 @@ stringProducer.send("My message");
 > 
 > ```
 
+
 ### Configure producer
 
 If you instantiate a `Producer` object by specifying only a topic name as the example above, the default configuration of producer is used.
@@ -302,7 +299,7 @@ You can terminate the builder chain with `sendAsync()` and get a future return.
 
 In Pulsar, consumers subscribe to topics and handle messages that producers publish to those topics. You can instantiate a new [consumer](reference-terminology.md#consumer) by first instantiating a {@inject: javadoc:PulsarClient:/client/org/apache/pulsar/client/api/PulsarClient} object and passing it a URL for a Pulsar broker (as [above](#client-configuration)).
 
-Once you've instantiated a {@inject: javadoc:PulsarClient:/client/org/apache/pulsar/client/api/PulsarClient} object, you can create a {@inject: javadoc:Consumer:/client/org/apache/pulsar/client/api/Consumer} by specifying a [topic](reference-terminology.md#topic) and a [subscription](concepts-messaging.md#subscription-modes).
+Once you've instantiated a {@inject: javadoc:PulsarClient:/client/org/apache/pulsar/client/api/PulsarClient} object, you can create a {@inject: javadoc:Consumer:/client/org/apache/pulsar/client/api/Consumer} by specifying a [topic](reference-terminology.md#topic) and a [subscription](concepts-messaging.md#subscription-types).
 
 ```java
 
@@ -375,7 +372,7 @@ When you create a consumer, you can use the `loadConf` configuration. The follow
 `consumerName`|String|Consumer name|null
 `ackTimeoutMillis`|long|Timeout of unacked messages|0
 `tickDurationMillis`|long|Granularity of the ack-timeout redelivery.<br /><br />Using an higher `tickDurationMillis` reduces the memory overhead to track messages when setting ack-timeout to a bigger value (for example, 1 hour).|1000
-`priorityLevel`|int|Priority level for a consumer to which a broker gives more priority while dispatching messages in the shared subscription mode. <br /><br />The broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br /><br />In shared subscription mode, the broker **first dispatches messages to the max priority level consumers if they have permits**. Otherwise, the broker considers next priority level consumers.<br /><br /> **Example 1**<br />If a subscription h [...]
+`priorityLevel`|int|Priority level for a consumer to which a broker gives more priority while dispatching messages in Shared subscription type. <br /><br />The broker follows descending priorities. For example, 0=max-priority, 1, 2,...<br /><br />In Shared subscription type, the broker **first dispatches messages to the max priority level consumers if they have permits**. Otherwise, the broker considers next priority level consumers.<br /><br /> **Example 1**<br />If a subscription has c [...]
 `cryptoFailureAction`|ConsumerCryptoFailureAction|Consumer should take action when it receives a message that can not be decrypted.<br /><li>**FAIL**: this is the default option to fail messages until crypto succeeds.</li><li> **DISCARD**:silently acknowledge and not deliver message to an application.</li><li>**CONSUME**: deliver encrypted messages to applications. It is the application's responsibility to decrypt the message.</li><br />The decompression of message fails. <br /><br />If  [...]
 `properties`|SortedMap<String, String>|A name or value property of this consumer.<br /><br />`properties` is application defined metadata attached to a consumer. <br /><br />When getting a topic stats, associate this metadata with the consumer stats for easier identification.|new TreeMap()
 `readCompacted`|boolean|If enabling `readCompacted`, a consumer reads messages from a compacted topic rather than reading a full message backlog of a topic.<br /><br /> A consumer only sees the latest value for each key in the compacted topic, up until reaching the point in the topic message when compacting backlog. Beyond that point, send messages as normal.<br /><br />Only enabling `readCompacted` on subscriptions to persistent topics, which have a single active consumer (like failure  [...]
@@ -385,6 +382,7 @@ When you create a consumer, you can use the `loadConf` configuration. The follow
 `deadLetterPolicy`|DeadLetterPolicy|Dead letter policy for consumers.<br /><br />By default, some messages are probably redelivered many times, even to the extent that it never stops.<br /><br />By using the dead letter mechanism, messages have the max redelivery count. **When exceeding the maximum number of redeliveries, messages are sent to the Dead Letter Topic and acknowledged automatically**.<br /><br />You can enable the dead letter mechanism by setting `deadLetterPolicy`.<br /><br [...]
 `autoUpdatePartitions`|boolean|If `autoUpdatePartitions` is enabled, a consumer subscribes to partition increasement automatically.<br /><br />**Note**: this is only for partitioned consumers.|true
 `replicateSubscriptionState`|boolean|If `replicateSubscriptionState` is enabled, a subscription state is replicated to geo-replicated clusters.|false
+`negativeAckRedeliveryBackoff`|NegativeAckRedeliveryBackoff|Interface for custom message is negativeAcked policy. You can specify `NegativeAckRedeliveryBackoff` for a consumer.| `NegativeAckRedeliveryExponentialBackoff`
 
 You can configure parameters if you do not want to use the default configuration. For a full list, see the Javadoc for the {@inject: javadoc:ConsumerBuilder:/client/org/apache/pulsar/client/api/ConsumerBuilder} class. 
 
@@ -464,6 +462,30 @@ BatchReceivePolicy.builder()
 
 :::
 
+### Negative acknowledgment redelivery backoff
+
+The `NegativeAckRedeliveryBackoff` introduces a redelivery backoff mechanism. You can achieve redelivery with different delays by setting `redeliveryCount ` of messages. 
+
+```java
+
+Consumer consumer =  client.newConsumer()
+        .topic("my-topic")
+        .subscriptionName("my-subscription")
+        .negativeAckRedeliveryBackoff(NegativeAckRedeliveryExponentialBackoff.builder()
+                .minNackTimeMs(1000)
+                .maxNackTimeMs(60 * 1000)
+                .build())
+        .subscribe();
+
+```
+
+:::note
+
+- The `negativeAckRedeliveryBackoff` does not work with `consumer.negativeAcknowledge(MessageId messageId)` because you are not able to get the redelivery count from the message ID.
+- If a consumer crashes, it triggers the redelivery of unacked messages. In this case, `NegativeAckRedeliveryBackoff` does not take effect and the messages might get redelivered earlier than the delay time from the backoff.
+
+:::
+
 ### Multi-topic subscriptions
 
 In addition to subscribing a consumer to a single Pulsar topic, you can also subscribe to multiple topics simultaneously using [multi-topic subscriptions](concepts-messaging.md#multi-topic-subscriptions). To use multi-topic subscriptions you can supply either a regular expression (regex) or a `List` of topics. If you select topics via regex, all topics must be within the same Pulsar namespace.
@@ -559,13 +581,13 @@ private void receiveMessageFromConsumer(Object consumer) {
 
 ```
 
-### Subscription modes
+### Subscription types
 
-Pulsar has various [subscription modes](concepts-messaging#subscription-modes) to match different scenarios. A topic can have multiple subscriptions with different subscription modes. However, a subscription can only have one subscription mode at a time.
+Pulsar has various [subscription types](concepts-messaging#subscription-types) to match different scenarios. A topic can have multiple subscriptions with different subscription types. However, a subscription can only have one subscription type at a time.
 
-A subscription is identical with the subscription name which can specify only one subscription mode at a time. You cannot change the subscription mode unless all existing consumers of this subscription are offline.
+A subscription is identical with the subscription name; a subscription name can specify only one subscription type at a time. To change the subscription type, you should first stop all consumers of this subscription.
 
-Different subscription modes have different message distribution modes. This section describes the differences of subscription modes and how to use them.
+Different subscription types have different message distribution types. This section describes the differences of subscription types and how to use them.
 
 In order to better describe their differences, assuming you have a topic named "my-topic", and the producer has published 10 messages.
 
@@ -591,7 +613,7 @@ producer.newMessage().key("key-4").value("message-4-2").send();
 
 #### Exclusive
 
-Create a new consumer and subscribe with the `Exclusive` subscription mode.
+Create a new consumer and subscribe with the `Exclusive` subscription type.
 
 ```java
 
@@ -613,7 +635,7 @@ If topic is a partitioned topic, the first consumer subscribes to all partitione
 
 #### Failover
 
-Create new consumers and subscribe with the`Failover` subscription mode.
+Create new consumers and subscribe with the`Failover` subscription type.
 
 ```java
 
@@ -666,7 +688,7 @@ If a topic is a partitioned topic, each partition has only one active consumer,
 
 #### Shared
 
-Create new consumers and subscribe with `Shared` subscription mode:
+Create new consumers and subscribe with `Shared` subscription type.
 
 ```java
 
@@ -685,7 +707,7 @@ Consumer consumer2 = client.newConsumer()
 
 ```
 
-In shared subscription mode, multiple consumers can attach to the same subscription and messages are delivered in a round robin distribution across consumers.
+In Shared subscription type, multiple consumers can attach to the same subscription and messages are delivered in a round robin distribution across consumers.
 
 If a broker dispatches only one message at a time, consumer1 receives the following information.
 
@@ -711,11 +733,11 @@ consumer2 receives the following information.
 
 ```
 
-`Shared` subscription is different from `Exclusive` and `Failover` subscription modes. `Shared` subscription has better flexibility, but cannot provide order guarantee.
+`Shared` subscription is different from `Exclusive` and `Failover` subscription types. `Shared` subscription has better flexibility, but cannot provide order guarantee.
 
 #### Key_shared
 
-This is a new subscription mode since 2.4.0 release, create new consumers and subscribe with `Key_Shared` subscription mode.
+This is a new subscription type since 2.4.0 release. Create new consumers and subscribe with `Key_Shared` subscription type.
 
 ```java
 
@@ -734,7 +756,7 @@ Consumer consumer2 = client.newConsumer()
 
 ```
 
-Just like in the `Shared` subscription, all consumers in the `Key_Shared` subscription mode can attach to the same subscription. But the `Key_Shared` subscription mode is different from the `Shared` subscription. In the `Key_Shared` subscription mode, messages with the same key are delivered to only one consumer in order. The possible distribution of messages between different consumers (by default we do not know in advance which keys will be assigned to a consumer, but a key will only b [...]
+Just like in `Shared` subscription, all consumers in `Key_Shared` subscription type can attach to the same subscription. But `Key_Shared` subscription type is different from the `Shared` subscription. In `Key_Shared` subscription type, messages with the same key are delivered to only one consumer in order. The possible distribution of messages between different consumers (by default we do not know in advance which keys will be assigned to a consumer, but a key will only be assigned to a  [...]
 
 consumer1 receives the following information.
 
diff --git a/site2/website-next/docs/client-libraries-node.md b/site2/website-next/docs/client-libraries-node.md
index 42a1927..4b0033c 100644
--- a/site2/website-next/docs/client-libraries-node.md
+++ b/site2/website-next/docs/client-libraries-node.md
@@ -4,10 +4,6 @@ title: The Pulsar Node.js client
 sidebar_label: "Node.js"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Pulsar Node.js client can be used to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Node.js.
 
 All the methods in [producers](#producers), [consumers](#consumers), and [readers](#readers) of a Node.js client are thread-safe.
diff --git a/site2/website-next/docs/client-libraries-python.md b/site2/website-next/docs/client-libraries-python.md
index bf2b092..65f14b8 100644
--- a/site2/website-next/docs/client-libraries-python.md
+++ b/site2/website-next/docs/client-libraries-python.md
@@ -4,10 +4,6 @@ title: Pulsar Python client
 sidebar_label: "Python"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar Python client library is a wrapper over the existing [C++ client library](client-libraries-cpp) and exposes all of the [same features](/api/cpp). You can find the code in the [Python directory](https://github.com/apache/pulsar/tree/master/pulsar-client-cpp/python) of the C++ client code.
 
 All the methods in producer, consumer, and reader of a Python client are thread-safe.
diff --git a/site2/website-next/docs/client-libraries-websocket.md b/site2/website-next/docs/client-libraries-websocket.md
index c789002..c663f97 100644
--- a/site2/website-next/docs/client-libraries-websocket.md
+++ b/site2/website-next/docs/client-libraries-websocket.md
@@ -4,10 +4,6 @@ title: Pulsar WebSocket API
 sidebar_label: "WebSocket"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) API provides a simple way to interact with Pulsar using languages that do not have an official [client library](getting-started-clients). Through WebSocket, you can publish and consume messages and use features available on the [Client Features Matrix](https://github.com/apache/pulsar/wiki/Client-Features-Matrix) page.
 
 
@@ -207,23 +203,60 @@ Server will push messages on the WebSocket session:
 ```json
 
 {
-  "messageId": "CAAQAw==",
-  "payload": "SGVsbG8gV29ybGQ=",
-  "properties": {"key1": "value1", "key2": "value2"},
-  "publishTime": "2016-08-30 16:45:57.785",
-  "redeliveryCount": 4
+  "messageId": "CAMQADAA",
+  "payload": "hvXcJvHW7kOSrUn17P2q71RA5SdiXwZBqw==",
+  "properties": {},
+  "publishTime": "2021-10-29T16:01:38.967-07:00",
+  "redeliveryCount": 0,
+  "encryptionContext": {
+    "keys": {
+      "client-rsa.pem": {
+        "keyValue": "jEuwS+PeUzmCo7IfLNxqoj4h7txbLjCQjkwpaw5AWJfZ2xoIdMkOuWDkOsqgFmWwxiecakS6GOZHs94x3sxzKHQx9Oe1jpwBg2e7L4fd26pp+WmAiLm/ArZJo6JotTeFSvKO3u/yQtGTZojDDQxiqFOQ1ZbMdtMZA8DpSMuq+Zx7PqLo43UdW1+krjQfE5WD+y+qE3LJQfwyVDnXxoRtqWLpVsAROlN2LxaMbaftv5HckoejJoB4xpf/dPOUqhnRstwQHf6klKT5iNhjsY4usACt78uILT0pEPd14h8wEBidBz/vAlC/zVMEqiDVzgNS7dqEYS4iHbf7cnWVCn3Hxw==",
+        "metadata": {}
+      }
+    },
+    "param": "Tfu1PxVm6S9D3+Hk",
+    "compressionType": "NONE",
+    "uncompressedMessageSize": 0,
+    "batchSize": {
+      "empty": false,
+      "present": true
+    }
+  }
 }
 
 ```
 
-Key | Type | Required? | Explanation
-:---|:-----|:----------|:-----------
-`messageId` | string | yes | Message ID
-`payload` | string | yes | Base-64 encoded payload
-`publishTime` | string | yes | Publish timestamp
-`redeliveryCount` | number | yes | Number of times this message was already delivered
-`properties` | key-value pairs | no | Application-defined properties
-`key` | string | no |  Original routing key set by producer
+Below are the parameters in the WebSocket consumer response.
+
+- General parameters
+
+  Key | Type | Required? | Explanation
+  :---|:-----|:----------|:-----------
+  `messageId` | string | yes | Message ID
+  `payload` | string | yes | Base-64 encoded payload
+  `publishTime` | string | yes | Publish timestamp
+  `redeliveryCount` | number | yes | Number of times this message was already delivered
+  `properties` | key-value pairs | no | Application-defined properties
+  `key` | string | no |  Original routing key set by producer
+  `encryptionContext` | EncryptionContext | no | Encryption context that consumers can use to decrypt received messages
+  `param` | string | no | Initialization vector for cipher (Base64 encoding)
+  `batchSize` | string | no | Number of entries in a message (if it is a batch message)
+  `uncompressedMessageSize` | string | no | Message size before compression
+  `compressionType` | string | no | Algorithm used to compress the message payload
+
+- `encryptionContext` related parameter
+
+  Key | Type | Required? | Explanation
+  :---|:-----|:----------|:-----------
+  `keys` |key-EncryptionKey pairs | yes | Key in `key-EncryptionKey` pairs is an encryption key name. Value in `key-EncryptionKey` pairs is an encryption key object.
+
+- `encryptionKey` related parameters
+
+  Key | Type | Required? | Explanation
+  :---|:-----|:----------|:-----------
+  `keyValue` | string | yes | Encryption key (Base64 encoding)
+  `metadata` | key-value pairs | no | Application-defined metadata
 
 #### Acknowledging the message
 
diff --git a/site2/website-next/docs/concepts-architecture-overview.md b/site2/website-next/docs/concepts-architecture-overview.md
index 470c616..8fe0717 100644
--- a/site2/website-next/docs/concepts-architecture-overview.md
+++ b/site2/website-next/docs/concepts-architecture-overview.md
@@ -4,10 +4,6 @@ title: Architecture Overview
 sidebar_label: "Architecture"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 At the highest level, a Pulsar instance is composed of one or more Pulsar clusters. Clusters within an instance can [replicate](concepts-replication) data amongst themselves.
 
 In a Pulsar cluster:
diff --git a/site2/website-next/docs/concepts-authentication.md b/site2/website-next/docs/concepts-authentication.md
index 724b710..335da8d 100644
--- a/site2/website-next/docs/concepts-authentication.md
+++ b/site2/website-next/docs/concepts-authentication.md
@@ -4,9 +4,5 @@ title: Authentication and Authorization
 sidebar_label: "Authentication and Authorization"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar supports a pluggable [authentication](security-overview.md) mechanism which can be configured at the proxy and/or the broker. Pulsar also supports a pluggable [authorization](security-authorization) mechanism. These mechanisms work together to identify the client and its access rights on topics, namespaces and tenants.
 
diff --git a/site2/website-next/docs/concepts-clients.md b/site2/website-next/docs/concepts-clients.md
index d8084fad..65201b5 100644
--- a/site2/website-next/docs/concepts-clients.md
+++ b/site2/website-next/docs/concepts-clients.md
@@ -4,10 +4,6 @@ title: Pulsar Clients
 sidebar_label: "Clients"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar exposes a client API with language bindings for [Java](client-libraries-java.md), [Go](client-libraries-go.md), [Python](client-libraries-python.md), [C++](client-libraries-cpp.md) and [C#](client-libraries-dotnet). The client API optimizes and encapsulates Pulsar's client-broker communication protocol and exposes a simple and intuitive API for use by applications.
 
 Under the hood, the current official Pulsar client libraries support transparent reconnection and/or connection failover to brokers, queuing of messages until acknowledged by the broker, and heuristics such as connection retries with backoff.
diff --git a/site2/website-next/docs/concepts-messaging.md b/site2/website-next/docs/concepts-messaging.md
index 8665c56..5c46a9d 100644
--- a/site2/website-next/docs/concepts-messaging.md
+++ b/site2/website-next/docs/concepts-messaging.md
@@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs';
 import TabItem from '@theme/TabItem';
 
 
-Pulsar is built on the [publish-subscribe](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) pattern (often abbreviated to pub-sub). In this pattern, [producers](#producers) publish messages to [topics](#topics); [consumers](#consumers) [subscribe](#subscription-modes) to those topics, process incoming messages, and send [acknowledgements](#acknowledgement) to the broker when processing is finished.
+Pulsar is built on the [publish-subscribe](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) pattern (often abbreviated to pub-sub). In this pattern, [producers](#producers) publish messages to [topics](#topics); [consumers](#consumers) [subscribe](#subscription-types) to those topics, process incoming messages, and send [acknowledgements](#acknowledgement) to the broker when processing is finished.
 
 When a subscription is created, Pulsar [retains](concepts-architecture-overview.md#persistent-storage) all messages, even if the consumer is disconnected. The retained messages are discarded only when a consumer acknowledges that all these messages are processed successfully. 
 
@@ -109,7 +109,7 @@ By default, batch index acknowledgement is disabled (`acknowledgmentAtBatchIndex
 Before you enable chunking, read the following instructions.
 - Batching and chunking cannot be enabled simultaneously. To enable chunking, you must disable batching in advance.
 - Chunking is only supported for persisted topics.
-- Chunking is only supported for the exclusive and failover subscription modes.
+- Chunking is only supported for Exclusive and Failover subscription types.
 
 When chunking is enabled (`chunkingEnabled=true`), if the message size is greater than the allowed maximum publish-payload size, the producer splits the original message into chunked messages and publishes them with chunked metadata to the broker separately and in order. At the broker side, the chunked messages are stored in the managed-ledger in the same way as that of ordinary messages. The only difference is that the consumer needs to buffer the chunked messages and combines them into [...]
 
@@ -177,7 +177,7 @@ consumer.acknowledgeCumulative(msg);
 
 :::note
 
-Cumulative acknowledgement cannot be used in the [shared subscription mode](#subscription-modes), because the shared subscription mode involves multiple consumers who have access to the same subscription. In the shared subscription mode, messages are acknowledged individually.
+Cumulative acknowledgement cannot be used in [Shared subscription type](#subscription-types), because Shared subscription type involves multiple consumers which have access to the same subscription. In Shared subscription type, messages are acknowledged individually.
 
 :::
 
@@ -185,11 +185,11 @@ Cumulative acknowledgement cannot be used in the [shared subscription mode](#sub
 
 When a consumer fails to consume a message and intends to consume it again, this consumer should send a negative acknowledgement to the broker. Then, the broker will redeliver this message to the consumer.
 
-Messages are negatively acknowledged individually or cumulatively, depending on the consumption subscription mode.
+Messages are negatively acknowledged individually or cumulatively, depending on the consumption subscription type.
 
-In the exclusive and failover subscription modes, consumers only negatively acknowledge the last message they receive.
+In Exclusive and Failover subscription types, consumers only negatively acknowledge the last message they receive.
 
-In the shared and Key_Shared subscription modes, consumers can negatively acknowledge messages individually.
+In Shared and Key_Shared subscription types, consumers can negatively acknowledge messages individually.
 
 Be aware that negative acknowledgments on ordered subscription types, such as Exclusive, Failover and Key_Shared, might cause failed messages being sent to consumers out of the original order.
 
@@ -208,6 +208,23 @@ If batching is enabled, all messages in one batch are redelivered to the consume
 
 :::
 
+### Negative redelivery backoff
+
+In general, consumers are not able to process messages successfully. In this case, you can use [negative acknowledgement](concepts-messaging.md#negative-acknowledgement) and redeliver the messages after processing message failures, so that the messages can be redelivered to other consumers (for the Shared subscription).
+
+But this is not flexible enough. A better way is to use the **redelivery backoff mechanism**.  You can redeliver messages with different delays by setting the number of times the messages is retried.
+
+If you want to use `Negative Redelivery Backoff`, you can use the following API.
+
+```java
+
+consumer.negativeAckRedeliveryBackoff(NegativeAckRedeliveryExponentialBackoff.builder()
+        .minNackTimeMs(1000)
+        .maxNackTimeMs(60 * 1000)
+        .build())
+
+```
+
 ### Acknowledgement timeout
 
 If a message is not consumed successfully, and you want the broker to redeliver this message automatically, then you can enable automatic redelivery mechanism for  unacknowledged messages. With automatic redelivery enabled, the client tracks the unacknowledged messages within the entire `acktimeout` time range, and sends a `redeliver unacknowledged messages` request to the broker automatically when the acknowledgement timeout is specified.
@@ -266,7 +283,7 @@ Dead letter topic depends on message redelivery. Messages are redelivered either
 
 :::note
 
-Currently, dead letter topic is enabled in the Shared and Key_Shared subscription modes.
+Currently, dead letter topic is enabled in Shared and Key_Shared subscription types.
 
 :::
 
@@ -330,32 +347,33 @@ A namespace is a logical nomenclature within a tenant. A tenant creates multiple
 
 ## Subscriptions
 
-A subscription is a named configuration rule that determines how messages are delivered to consumers. Four subscription modes are available in Pulsar: [exclusive](#exclusive), [shared](#shared), [failover](#failover), and [key_shared](#key_shared). These modes are illustrated in the figure below.
+A subscription is a named configuration rule that determines how messages are delivered to consumers. Four subscription types are available in Pulsar: [exclusive](#exclusive), [shared](#shared), [failover](#failover), and [key_shared](#key_shared). These types are illustrated in the figure below.
 
-![Subscription modes](/assets/pulsar-subscription-modes.png)
+![Subscription types](/assets/pulsar-subscription-types.png)
 
 > **Pub-Sub or Queuing**  
 > In Pulsar, you can use different subscriptions flexibly.
-> * If you want to achieve traditional "fan-out pub-sub messaging" among consumers, specify a unique subscription name for each consumer. It is exclusive subscription mode.
+> * If you want to achieve traditional "fan-out pub-sub messaging" among consumers, specify a unique subscription name for each consumer. It is exclusive subscription type.
 > * If you want to achieve "message queuing" among consumers, share the same subscription name among multiple consumers(shared, failover, key_shared).
-> * If you want to achieve both effects simultaneously, combine exclusive subscription mode with other subscription modes for consumers.
+> * If you want to achieve both effects simultaneously, combine exclusive subscription type with other subscription types for consumers.
 
-### Consumerless Subscriptions and Their Corresponding Modes
-When a subscription has no consumers, its subscription mode is undefined. A subscription's mode is defined when a consumer connects to the subscription, and the mode can be changed by restarting all consumers with a different configuration.
+### Subscription types
 
-### Exclusive
+When a subscription has no consumers, its subscription type is undefined. The type of a subscription is defined when a consumer connects to it, and the type can be changed by restarting all consumers with a different configuration.
 
-In *exclusive* mode, only a single consumer is allowed to attach to the subscription. If multiple consumers subscribe to a topic using the same subscription, an error occurs.
+#### Exclusive
+
+In *Exclusive* type, only a single consumer is allowed to attach to the subscription. If multiple consumers subscribe to a topic using the same subscription, an error occurs.
 
 In the diagram below, only **Consumer A-0** is allowed to consume messages.
 
-> Exclusive mode is the default subscription mode.
+> Exclusive is the default subscription type.
 
 ![Exclusive subscriptions](/assets/pulsar-exclusive-subscriptions.png)
 
-### Failover
+#### Failover
 
-In *failover* mode, multiple consumers can attach to the same subscription. A master consumer is picked for non-partitioned topic or each partition of partitioned topic and receives messages. When the master consumer disconnects, all (non-acknowledged and subsequent) messages are delivered to the next consumer in line.
+In *Failover* type, multiple consumers can attach to the same subscription. A master consumer is picked for non-partitioned topic or each partition of partitioned topic and receives messages. When the master consumer disconnects, all (non-acknowledged and subsequent) messages are delivered to the next consumer in line.
 
 For partitioned topics, broker will sort consumers by priority level and lexicographical order of consumer name. Then broker will try to evenly assigns topics to consumers with the highest priority level.
 
@@ -365,49 +383,36 @@ In the diagram below, **Consumer-B-0** is the master consumer while **Consumer-B
 
 ![Failover subscriptions](/assets/pulsar-failover-subscriptions.png)
 
-### Shared
+#### Shared
 
-In *shared* or *round robin* mode, multiple consumers can attach to the same subscription. Messages are delivered in a round robin distribution across consumers, and any given message is delivered to only one consumer. When a consumer disconnects, all the messages that were sent to it and not acknowledged will be rescheduled for sending to the remaining consumers.
+In *shared* or *round robin* type, multiple consumers can attach to the same subscription. Messages are delivered in a round robin distribution across consumers, and any given message is delivered to only one consumer. When a consumer disconnects, all the messages that were sent to it and not acknowledged will be rescheduled for sending to the remaining consumers.
 
 In the diagram below, **Consumer-C-1** and **Consumer-C-2** are able to subscribe to the topic, but **Consumer-C-3** and others could as well.
 
-> **Limitations of shared mode**  
-> When using shared mode, be aware that:
+> **Limitations of Shared type**  
+> When using Shared type, be aware that:
 > * Message ordering is not guaranteed.
-> * You cannot use cumulative acknowledgment with shared mode.
+> * You cannot use cumulative acknowledgment with Shared type.
 
 ![Shared subscriptions](/assets/pulsar-shared-subscriptions.png)
 
-### Key_Shared
+#### Key_Shared
 
-In *Key_Shared* mode, multiple consumers can attach to the same subscription. Messages are delivered in a distribution across consumers and message with same key or same ordering key are delivered to only one consumer. No matter how many times the message is re-delivered, it is delivered to the same consumer. When a consumer connected or disconnected will cause served consumer change for some key of message.
+In *Key_Shared* type, multiple consumers can attach to the same subscription. Messages are delivered in a distribution across consumers and message with same key or same ordering key are delivered to only one consumer. No matter how many times the message is re-delivered, it is delivered to the same consumer. When a consumer connected or disconnected will cause served consumer change for some key of message.
 
 ![Key_Shared subscriptions](/assets/pulsar-key-shared-subscriptions.png)
 
-Note that when the consumers are using the Key_Shared subscription mode, you need to **disable batching** or **use key-based batching** for the producers. There are two reasons why the key-based batching is necessary for Key_Shared subscription mode:
+Note that when the consumers are using the Key_Shared subscription type, you need to **disable batching** or **use key-based batching** for the producers. There are two reasons why the key-based batching is necessary for Key_Shared subscription type:
 1. The broker dispatches messages according to the keys of the messages, but the default batching approach might fail to pack the messages with the same key to the same batch. 
 2. Since it is the consumers instead of the broker who dispatch the messages from the batches, the key of the first message in one batch is considered as the key of all messages in this batch, thereby leading to context errors. 
 
 The key-based batching aims at resolving the above-mentioned issues. This batching method ensures that the producers pack the messages with the same key to the same batch. The messages without a key are packed into one batch and this batch has no key. When the broker dispatches messages from this batch, it uses `NON_KEY` as the key. In addition, each consumer is associated with **only one** key and should receive **only one message batch** for the connected key. By default, you can limit [...]
 
-Below are examples of enabling the key-based batching under the Key_Shared subscription mode, with `client` being the Pulsar client that you created.
+Below are examples of enabling the key-based batching under the Key_Shared subscription type, with `client` being the Pulsar client that you created.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "C++",
-    "value": "C++"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"C++","value":"C++"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 ```
@@ -444,10 +449,70 @@ producer = client.create_producer(topic='my-topic', batching_type=pulsar.Batchin
 
 </Tabs>
 
-> **Limitations of Key_Shared mode**  
-> When you use Key_Shared mode, be aware that:
+> **Limitations of Key_Shared type**  
+> When you use Key_Shared type, be aware that:
 > * You need to specify a key or orderingKey for messages.
-> * You cannot use cumulative acknowledgment with Key_Shared mode.
+> * You cannot use cumulative acknowledgment with Key_Shared type.
+
+### Subscription modes
+
+#### What is a subscription mode
+
+The subscription mode indicates the cursor type. 
+
+- When a subscription is created, an associated cursor is created to record the last consumed position. 
+
+- When a consumer of the subscription restarts, it can continue consuming from the last message it consumes.
+
+Subscription mode | Description | Note
+|---|---|---
+`Durable`|The cursor is durable, which retains messages and persists the current position. <br /><br />If a broker restarts from a failure, it can recover the cursor from the persistent storage (BookKeeper), so that messages can continue to be consumed from the last consumed position.|`Durable` is the **default** subscription mode.
+`NonDurable`|The cursor is non-durable. <br /><br />Once a broker stops, the cursor is lost and can never be recovered, so that messages **can not** continue to be consumed from the last consumed position.|Reader’s subscription mode is `NonDurable` in nature and it does not prevent data in a topic from being deleted. Reader’s subscription mode **can not** be changed. 
+
+A [subscription](#concepts-messaging.md/#subscriptions) can have one or more consumers. When a consumer subscribes to a topic, it must specify the subscription name. A durable subscription and a non-durable subscription can have the same name, they are independent of each other. If a consumer specifies a subscription which does not exist before, the subscription is automatically created.
+
+#### When to use
+
+By default, messages of a topic without any durable subscriptions are marked as deleted. If you want to prevent the messages being marked as deleted, you can create a durable subscription for this topic. In this case, only acknowledged messages are marked as deleted. For more information, see [message retention and expiry](cookbooks-retention-expiry).
+
+#### How to use
+
+After a consumer is created, the default subscription mode of the consumer is `Durable`. You can change the subscription mode to `NonDurable` by making changes to the consumer’s configuration.
+
+<Tabs 
+  defaultValue="Durable"
+  values={[{"label":"Durable","value":"Durable"},{"label":"Non-durable","value":"Non-durable"}]}>
+
+<TabItem value="Durable">
+
+```java
+
+        Consumer<byte[]> consumer = pulsarClient.newConsumer()
+                .topic("my-topic")
+                .subscriptionName("my-sub")
+                .subscriptionMode(SubscriptionMode.Durable)
+                .subscribe();
+
+```
+
+</TabItem>
+<TabItem value="Non-durable">
+
+```java
+
+        Consumer<byte[]> consumer = pulsarClient.newConsumer()
+                .topic("my-topic")
+                .subscriptionName("my-sub")
+                .subscriptionMode(SubscriptionMode.NonDurable)
+                .subscribe();
+
+```
+
+</TabItem>
+
+</Tabs>
+
+For how to create, check, or delete a durable subscription, see [manage subscriptions](admin-api-topics.md/#manage-subscriptions).
 
 ## Multi-topic subscriptions
 
@@ -504,11 +569,11 @@ The diagram below illustrates this:
 
 The **Topic1** topic has five partitions (**P0** through **P4**) split across three brokers. Because there are more partitions than brokers, two brokers handle two partitions a piece, while the third handles only one (again, Pulsar handles this distribution of partitions automatically).
 
-Messages for this topic are broadcast to two consumers. The [routing mode](#routing-modes) determines each message should be published to which partition, while the [subscription mode](#subscription-modes) determines which messages go to which consumers.
+Messages for this topic are broadcast to two consumers. The [routing mode](#routing-modes) determines each message should be published to which partition, while the [subscription type](#subscription-types) determines which messages go to which consumers.
 
 Decisions about routing and subscription modes can be made separately in most cases. In general, throughput concerns should guide partitioning/routing decisions while subscription decisions should be guided by application semantics.
 
-There is no difference between partitioned topics and normal topics in terms of how subscription modes work, as partitioning only determines what happens between when a message is published by a producer and processed and acknowledged by a consumer.
+There is no difference between partitioned topics and normal topics in terms of how subscription types work, as partitioning only determines what happens between when a message is published by a producer and processed and acknowledged by a consumer.
 
 Partitioned topics need to be explicitly created via the [admin API](admin-api-overview). The number of partitions can be specified when creating the topic.
 
@@ -574,7 +639,7 @@ Non-persistent messaging is usually faster than persistent messaging because bro
 
 ### Client API
 
-Producers and consumers can connect to non-persistent topics in the same way as persistent topics, with the crucial difference that the topic name must start with `non-persistent`. All three subscription modes---[exclusive](#exclusive), [shared](#shared), and [failover](#failover)---are supported for non-persistent topics.
+Producers and consumers can connect to non-persistent topics in the same way as persistent topics, with the crucial difference that the topic name must start with `non-persistent`. All three subscription types---[exclusive](#exclusive), [shared](#shared), and [failover](#failover)---are supported for non-persistent topics.
 
 Here's an example [Java consumer](client-libraries-java.md#consumers) for a non-persistent topic:
 
@@ -654,7 +719,7 @@ Message deduplication makes Pulsar an ideal messaging system to be used in conju
 ## Delayed message delivery
 Delayed message delivery enables you to consume a message later rather than immediately. In this mechanism, a message is stored in BookKeeper, `DelayedDeliveryTracker` maintains the time index(time -> messageId) in memory after published to a broker, and it is delivered to a consumer once the specific delayed time is passed.  
 
-Delayed message delivery only works in Shared subscription mode. In Exclusive and Failover subscription modes, the delayed message is dispatched immediately.
+Delayed message delivery only works in Shared subscription type. In Exclusive and Failover subscription types, the delayed message is dispatched immediately.
 
 The diagram below illustrates the concept of delayed message delivery:
 
diff --git a/site2/website-next/docs/concepts-multi-tenancy.md b/site2/website-next/docs/concepts-multi-tenancy.md
index a831305..8a17e72 100644
--- a/site2/website-next/docs/concepts-multi-tenancy.md
+++ b/site2/website-next/docs/concepts-multi-tenancy.md
@@ -4,10 +4,6 @@ title: Multi Tenancy
 sidebar_label: "Multi Tenancy"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar was created from the ground up as a multi-tenant system. To support multi-tenancy, Pulsar has a concept of tenants. Tenants can be spread across clusters and can each have their own [authentication and authorization](security-overview) scheme applied to them. They are also the administrative unit at which storage quotas, [message TTL](cookbooks-retention-expiry.md#time-to-live-ttl), and isolation policies can be managed.
 
 The multi-tenant nature of Pulsar is reflected mostly visibly in topic URLs, which have this structure:
diff --git a/site2/website-next/docs/concepts-multiple-advertised-listeners.md b/site2/website-next/docs/concepts-multiple-advertised-listeners.md
index d9767b5..c4e60cc 100644
--- a/site2/website-next/docs/concepts-multiple-advertised-listeners.md
+++ b/site2/website-next/docs/concepts-multiple-advertised-listeners.md
@@ -4,10 +4,6 @@ title: Multiple advertised listeners
 sidebar_label: "Multiple advertised listeners"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 When a Pulsar cluster is deployed in the production environment, it may require to expose multiple advertised addresses for the broker. For example, when you deploy a Pulsar cluster in Kubernetes and want other clients, which are not in the same Kubernetes cluster, to connect to the Pulsar cluster, you need to assign a broker URL to external clients. But clients in the same Kubernetes cluster can still connect to the Pulsar cluster through the internal network of Kubernetes.
 
 ## Advertised listeners
diff --git a/site2/website-next/docs/concepts-overview.md b/site2/website-next/docs/concepts-overview.md
index 501f3fd..c76032c 100644
--- a/site2/website-next/docs/concepts-overview.md
+++ b/site2/website-next/docs/concepts-overview.md
@@ -4,10 +4,6 @@ title: Pulsar Overview
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar is a multi-tenant, high-performance solution for server-to-server messaging. Pulsar was originally developed by Yahoo, it is under the stewardship of the [Apache Software Foundation](https://www.apache.org/).
 
 Key features of Pulsar are listed below:
@@ -16,7 +12,7 @@ Key features of Pulsar are listed below:
 * Very low publish and end-to-end latency.
 * Seamless scalability to over a million topics.
 * A simple [client API](concepts-clients.md) with bindings for [Java](client-libraries-java.md), [Go](client-libraries-go.md), [Python](client-libraries-python.md) and [C++](client-libraries-cpp).
-* Multiple [subscription modes](concepts-messaging.md#subscription-modes) ([exclusive](concepts-messaging.md#exclusive), [shared](concepts-messaging.md#shared), and [failover](concepts-messaging.md#failover)) for topics.
+* Multiple [subscription types](concepts-messaging.md#subscription-types) ([exclusive](concepts-messaging.md#exclusive), [shared](concepts-messaging.md#shared), and [failover](concepts-messaging.md#failover)) for topics.
 * Guaranteed message delivery with [persistent message storage](concepts-architecture-overview.md#persistent-storage) provided by [Apache BookKeeper](http://bookkeeper.apache.org/).
 * A serverless light-weight computing framework [Pulsar Functions](functions-overview) offers the capability for stream-native data processing.
 * A serverless connector framework [Pulsar IO](io-overview), which is built on Pulsar Functions, makes it easier to move data in and out of Apache Pulsar.
diff --git a/site2/website-next/docs/concepts-proxy-sni-routing.md b/site2/website-next/docs/concepts-proxy-sni-routing.md
index efed49d..ed2c884 100644
--- a/site2/website-next/docs/concepts-proxy-sni-routing.md
+++ b/site2/website-next/docs/concepts-proxy-sni-routing.md
@@ -82,20 +82,7 @@ ATS SNI-routing works only with TLS. You need to enable TLS for the ATS proxy an
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "C++",
-    "value": "C++"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"C++","value":"C++"},{"label":"Python","value":"Python"}]}>
 
 <TabItem value="Java">
 
diff --git a/site2/website-next/docs/concepts-replication.md b/site2/website-next/docs/concepts-replication.md
index 95444fe..11677cc 100644
--- a/site2/website-next/docs/concepts-replication.md
+++ b/site2/website-next/docs/concepts-replication.md
@@ -4,9 +4,5 @@ title: Geo Replication
 sidebar_label: "Geo Replication"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar enables messages to be produced and consumed in different geo-locations. For instance, your application may be publishing data in one region or market and you would like to process it for consumption in other regions or markets. [Geo-replication](administration-geo) in Pulsar enables you to do that.
 
diff --git a/site2/website-next/docs/concepts-schema-registry.md b/site2/website-next/docs/concepts-schema-registry.md
index dfe639b..d28c9e6 100644
--- a/site2/website-next/docs/concepts-schema-registry.md
+++ b/site2/website-next/docs/concepts-schema-registry.md
@@ -3,7 +3,3 @@ id: concepts-schema-registry
 title: Schema Registry
 sidebar_label: "Schema Registry"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/concepts-tiered-storage.md b/site2/website-next/docs/concepts-tiered-storage.md
index 25f0808..f0bbde6 100644
--- a/site2/website-next/docs/concepts-tiered-storage.md
+++ b/site2/website-next/docs/concepts-tiered-storage.md
@@ -4,10 +4,6 @@ title: Tiered Storage
 sidebar_label: "Tiered Storage"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's segment oriented architecture allows for topic backlogs to grow very large, effectively without limit. However, this can become expensive over time.
 
 One way to alleviate this cost is to use Tiered Storage. With tiered storage, older messages in the backlog can be moved from BookKeeper to a cheaper storage mechanism, while still allowing clients to access the backlog as if nothing had changed.
diff --git a/site2/website-next/docs/concepts-topic-compaction.md b/site2/website-next/docs/concepts-topic-compaction.md
index 2c56fb1..3356298 100644
--- a/site2/website-next/docs/concepts-topic-compaction.md
+++ b/site2/website-next/docs/concepts-topic-compaction.md
@@ -4,10 +4,6 @@ title: Topic Compaction
 sidebar_label: "Topic Compaction"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar was built with highly scalable [persistent storage](concepts-architecture-overview.md#persistent-storage) of message data as a primary objective. Pulsar topics enable you to persistently store as many unacknowledged messages as you need while preserving message ordering. By default, Pulsar stores *all* unacknowledged/unprocessed messages produced on a topic. Accumulating many unacknowledged messages on a topic is necessary for many Pulsar use cases but it can also be very time int [...]
 
 > For a more practical guide to topic compaction, see the [Topic compaction cookbook](cookbooks-compaction).
diff --git a/site2/website-next/docs/concepts-transactions.md b/site2/website-next/docs/concepts-transactions.md
index 471b7f5..043eea8 100644
--- a/site2/website-next/docs/concepts-transactions.md
+++ b/site2/website-next/docs/concepts-transactions.md
@@ -4,10 +4,6 @@ title: Transactions
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Transactional semantics enable event streaming applications to consume, process, and produce messages in one atomic operation. In Pulsar, a producer or consumer can work with messages across multiple topics and partitions and ensure those messages are processed as a single unit. 
 
 The following concepts help you understand Pulsar transactions.
diff --git a/site2/website-next/docs/cookbooks-bookkeepermetadata.md b/site2/website-next/docs/cookbooks-bookkeepermetadata.md
index c37ac8a..187cb65 100644
--- a/site2/website-next/docs/cookbooks-bookkeepermetadata.md
+++ b/site2/website-next/docs/cookbooks-bookkeepermetadata.md
@@ -3,10 +3,6 @@ id: cookbooks-bookkeepermetadata
 title: BookKeeper Ledger Metadata
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar stores data on BookKeeper ledgers, you can understand the contents of a ledger by inspecting the metadata attached to the ledger.
 Such metadata are stored on ZooKeeper and they are readable using BookKeeper APIs.
 
diff --git a/site2/website-next/docs/cookbooks-compaction.md b/site2/website-next/docs/cookbooks-compaction.md
index dd84537..f95f64c 100644
--- a/site2/website-next/docs/cookbooks-compaction.md
+++ b/site2/website-next/docs/cookbooks-compaction.md
@@ -4,10 +4,6 @@ title: Topic compaction
 sidebar_label: "Topic compaction"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's [topic compaction](concepts-topic-compaction.md#compaction) feature enables you to create **compacted** topics in which older, "obscured" entries are pruned from the topic, allowing for faster reads through the topic's history (which messages are deemed obscured/outdated/irrelevant will depend on your use case).
 
 To use compaction:
diff --git a/site2/website-next/docs/cookbooks-deduplication.md b/site2/website-next/docs/cookbooks-deduplication.md
index 5b6d523..307fe03 100644
--- a/site2/website-next/docs/cookbooks-deduplication.md
+++ b/site2/website-next/docs/cookbooks-deduplication.md
@@ -76,20 +76,7 @@ The instructions for Java, Python, and C++ clients are different.
 
 <Tabs 
   defaultValue="Java clients"
-  values={[
-  {
-    "label": "Java clients",
-    "value": "Java clients"
-  },
-  {
-    "label": "Python clients",
-    "value": "Python clients"
-  },
-  {
-    "label": "C++ clients",
-    "value": "C++ clients"
-  }
-]}>
+  values={[{"label":"Java clients","value":"Java clients"},{"label":"Python clients","value":"Python clients"},{"label":"C++ clients","value":"C++ clients"}]}>
 <TabItem value="Java clients">
 
 To enable message deduplication on a [Java producer](client-libraries-java.md#producers), set the producer name using the `producerName` setter, and set the timeout to `0` using the `sendTimeout` setter. 
diff --git a/site2/website-next/docs/cookbooks-encryption.md b/site2/website-next/docs/cookbooks-encryption.md
index 0ab0d9d..fbd1c97 100644
--- a/site2/website-next/docs/cookbooks-encryption.md
+++ b/site2/website-next/docs/cookbooks-encryption.md
@@ -4,10 +4,6 @@ title: Pulsar Encryption
 sidebar_label: "Encryption "
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar encryption allows applications to encrypt messages at the producer and decrypt at the consumer. Encryption is performed using the public/private key pair configured by the application. Encrypted messages can only be decrypted by consumers with a valid key.
 
 ## Asymmetric and symmetric encryption
diff --git a/site2/website-next/docs/cookbooks-message-queue.md b/site2/website-next/docs/cookbooks-message-queue.md
index b2f7895..9b93a94 100644
--- a/site2/website-next/docs/cookbooks-message-queue.md
+++ b/site2/website-next/docs/cookbooks-message-queue.md
@@ -4,10 +4,6 @@ title: Using Pulsar as a message queue
 sidebar_label: "Message queue"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Message queues are essential components of many large-scale data architectures. If every single work object that passes through your system absolutely *must* be processed in spite of the slowness or downright failure of this or that system component, there's a good chance that you'll need a message queue to step in and ensure that unprocessed data is retained---with correct ordering---until the required actions are taken.
 
 Pulsar is a great choice for a message queue because:
diff --git a/site2/website-next/docs/cookbooks-non-persistent.md b/site2/website-next/docs/cookbooks-non-persistent.md
index 983958c..d40c4fb 100644
--- a/site2/website-next/docs/cookbooks-non-persistent.md
+++ b/site2/website-next/docs/cookbooks-non-persistent.md
@@ -4,10 +4,6 @@ title: Non-persistent messaging
 sidebar_label: "Non-persistent messaging"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 **Non-persistent topics** are Pulsar topics in which message data is *never* [persistently stored](concepts-architecture-overview.md#persistent-storage) and kept only in memory. This cookbook provides:
 
 * A basic [conceptual overview](#overview) of non-persistent topics
diff --git a/site2/website-next/docs/cookbooks-partitioned.md b/site2/website-next/docs/cookbooks-partitioned.md
index 244b7aa..2589693 100644
--- a/site2/website-next/docs/cookbooks-partitioned.md
+++ b/site2/website-next/docs/cookbooks-partitioned.md
@@ -3,8 +3,4 @@ id: cookbooks-partitioned
 title: Partitioned topics
 sidebar_label: "Partitioned Topics"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 For details of the content, refer to [manage topics](admin-api-topics).
\ No newline at end of file
diff --git a/site2/website-next/docs/cookbooks-retention-expiry.md b/site2/website-next/docs/cookbooks-retention-expiry.md
index a470eff..8aa0ef9 100644
--- a/site2/website-next/docs/cookbooks-retention-expiry.md
+++ b/site2/website-next/docs/cookbooks-retention-expiry.md
@@ -63,20 +63,7 @@ You can set a retention policy for a namespace by specifying the namespace, a si
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 You can use the [`set-retention`](reference-pulsar-admin.md#namespaces-set-retention) subcommand and specify a namespace, a size limit using the `-s`/`--size` flag, and a time limit using the `-t`/`--time` flag. 
@@ -140,7 +127,7 @@ $ pulsar-admin namespaces set-retention my-tenant/my-ns \
 
 :::note
 
-To disable the retention policy, you need to set both the size and time limit to `0`. Set either size or time limit to `0` is invalid. 
+To disable the retention policy, you need to set both the size and time limit to `0`. Set either size or time limit to `0` is invalid.
 
 :::
 
@@ -166,20 +153,7 @@ You can fetch the retention policy for a namespace by specifying the namespace.
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get-retention`](reference-pulsar-admin.md#namespaces) subcommand and specify the namespace.
@@ -246,20 +220,7 @@ You can set a size and/or time threshold and backlog retention policy for all of
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`set-backlog-quota`](reference-pulsar-admin.md#namespaces) subcommand and specify a namespace, a size limit using the `-l`/`--limit` , `-lt`/`--limitTime` flag to limit backlog, a retention policy using the `-p`/`--policy` flag and a policy type using `-t`/`--type` (default is destination_storage).
@@ -310,20 +271,7 @@ You can see which size threshold and backlog retention policy has been applied t
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get-backlog-quotas`](reference-pulsar-admin.md#pulsar-admin-namespaces-get-backlog-quotas) subcommand and specify a namespace. Here's an example:
@@ -363,20 +311,7 @@ Map<BacklogQuota.BacklogQuotaType,BacklogQuota> quotas =
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`remove-backlog-quota`](reference-pulsar-admin.md#pulsar-admin-namespaces-remove-backlog-quota) subcommand and specify a namespace, use `t`/`--type` to specify backlog type to remove(default is destination_storage). Here's an example:
@@ -429,20 +364,7 @@ By default, Pulsar stores all unacknowledged messages forever. This can lead to
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`set-message-ttl`](reference-pulsar-admin.md#pulsar-admin-namespaces-set-message-ttl) subcommand and specify a namespace and a TTL (in seconds) using the `-ttl`/`--messageTTL` flag.
@@ -478,20 +400,7 @@ admin.namespaces().setNamespaceMessageTTL(namespace, ttlInSeconds);
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`get-message-ttl`](reference-pulsar-admin.md#pulsar-admin-namespaces-get-message-ttl) subcommand and specify a namespace.
@@ -527,20 +436,7 @@ admin.namespaces().getNamespaceMessageTTL(namespace)
 
 <Tabs 
   defaultValue="pulsar-admin"
-  values={[
-  {
-    "label": "pulsar-admin",
-    "value": "pulsar-admin"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
 <TabItem value="pulsar-admin">
 
 Use the [`remove-message-ttl`](reference-pulsar-admin.md#pulsar-admin-namespaces-remove-message-ttl) subcommand and specify a namespace.
diff --git a/site2/website-next/docs/cookbooks-tiered-storage.md b/site2/website-next/docs/cookbooks-tiered-storage.md
index a41e2bb..f2ea50d 100644
--- a/site2/website-next/docs/cookbooks-tiered-storage.md
+++ b/site2/website-next/docs/cookbooks-tiered-storage.md
@@ -4,10 +4,6 @@ title: Tiered Storage
 sidebar_label: "Tiered Storage"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar's **Tiered Storage** feature allows older backlog data to be offloaded to long term storage, thereby freeing up space in BookKeeper and reducing storage costs. This cookbook walks you through using tiered storage in your Pulsar cluster.
 
 * Tiered storage uses [Apache jclouds](https://jclouds.apache.org) to support [Amazon S3](https://aws.amazon.com/s3/) and [Google Cloud Storage](https://cloud.google.com/storage/)(GCS for short)
@@ -54,7 +50,7 @@ Currently we support driver of types:
 > though it requires that you specify an endpoint url using `s3ManagedLedgerOffloadServiceEndpoint`. This is useful if
 > using a S3 compatible data store, other than AWS.
 
-```
+```conf
 
 managedLedgerOffloadDriver=aws-s3
 
@@ -69,7 +65,7 @@ Everything that you store in Cloud Storage must be contained in a bucket.
 You can use buckets to organize your data and control access to your data,
 but unlike directories and folders, you cannot nest buckets.
 
-```
+```conf
 
 s3ManagedLedgerOffloadBucket=pulsar-topic-offload
 
@@ -80,7 +76,7 @@ but a recommended configuration. If it is not configured, It will use the defaul
 
 With AWS S3, the default region is `US East (N. Virginia)`. Page [AWS Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html) contains more information.
 
-```
+```conf
 
 s3ManagedLedgerOffloadRegion=eu-west-3
 
@@ -99,7 +95,7 @@ Once you have created a set of credentials in the AWS IAM console, they can be c
 If you are on AWS instance with an instance profile that provides credentials, Pulsar will use these credentials
 if no other mechanism is provided
 
-2. Set the environment variables **AWS_ACCESS_KEY_ID** and **AWS_SECRET_ACCESS_KEY** in ```
+2. Set the environment variables **AWS_ACCESS_KEY_ID** and **AWS_SECRET_ACCESS_KEY** in ```conf/pulsar_env.sh```.
 
 ```bash
 
@@ -121,7 +117,7 @@ PULSAR_EXTRA_OPTS="${PULSAR_EXTRA_OPTS} ${PULSAR_MEM} ${PULSAR_GC} -Daws.accessK
 
 4. Set the access credentials in ```~/.aws/credentials```.
 
-```
+```conf
 
 [default]
 aws_access_key_id=ABC123456789
@@ -133,7 +129,7 @@ aws_secret_access_key=ded7db27a4558e2ea8bbf0bf37ae0e8521618f366c
 
 If you want to assume an IAM role, this can be done via specifying the following:
 
-```
+```conf
 
 s3ManagedLedgerOffloadRole=<aws role arn>
 s3ManagedLedgerOffloadRoleSessionName=pulsar-s3-offload
@@ -148,8 +144,7 @@ This will use the `DefaultAWSCredentialsProviderChain` for assuming this role.
 
 Pulsar also provides some knobs to configure the size of requests sent to AWS S3.
 
-- ```
-
+- ```s3ManagedLedgerOffloadMaxBlockSizeInBytes```  configures the maximum size of
   a "part" sent during a multipart upload. This cannot be smaller than 5MB. Default is 64MB.
 - ```s3ManagedLedgerOffloadReadBufferSizeInBytes``` configures the block size for
   each individual read when reading back data from AWS S3. Default is 1MB.
@@ -162,7 +157,7 @@ Buckets are the basic containers that hold your data. Everything that you store
 Cloud Storage must be contained in a bucket. You can use buckets to organize your data and
 control access to your data, but unlike directories and folders, you cannot nest buckets.
 
-```
+```conf
 
 gcsManagedLedgerOffloadBucket=pulsar-topic-offload
 
@@ -174,7 +169,7 @@ a recommended configuration. If it is not configured, It will use the default re
 Regarding GCS, buckets are default created in the `us multi-regional location`,
 page [Bucket Locations](https://cloud.google.com/storage/docs/bucket-locations) contains more information.
 
-```
+```conf
 
 gcsManagedLedgerOffloadRegion=europe-west3
 
@@ -199,7 +194,7 @@ To generate service account credentials or view the public credentials that you'
 
 > Notes: Make ensure that the service account you create has permission to operate GCS, you need to assign **Storage Admin** permission to your service account in [here](https://cloud.google.com/storage/docs/access-control/iam).
 
-```
+```conf
 
 gcsManagedLedgerOffloadServiceAccountKeyFile="/Users/hello/Downloads/project-804d5e6a6f33.json"
 
@@ -209,8 +204,7 @@ gcsManagedLedgerOffloadServiceAccountKeyFile="/Users/hello/Downloads/project-804
 
 Pulsar also provides some knobs to configure the size of requests sent to GCS.
 
-- ```
-
+- ```gcsManagedLedgerOffloadMaxBlockSizeInBytes``` configures the maximum size of a "part" sent
   during a multipart upload. This cannot be smaller than 5MB. Default is 64MB.
 - ```gcsManagedLedgerOffloadReadBufferSizeInBytes``` configures the block size for each individual
   read when reading back data from GCS. Default is 1MB.
@@ -224,7 +218,7 @@ In both cases, these should not be touched unless you know what you are doing.
 
 You can configure the connection address in the `broker.conf` file.
 
-```
+```conf
 
 fileSystemURI="hdfs://127.0.0.1:9000"
 
@@ -234,7 +228,7 @@ fileSystemURI="hdfs://127.0.0.1:9000"
 
 The configuration file is stored in the Hadoop profile path. It contains various settings, such as base path, authentication, and so on.
 
-```
+```conf
 
 fileSystemProfilePath="../conf/filesystem_offload_core_site.xml"
 
@@ -244,7 +238,7 @@ The model for storing topic data uses `org.apache.hadoop.io.MapFile`. You can us
 
 **Example**
 
-```
+```conf
 
     <property>
         <name>fs.defaultFS</name>
@@ -283,7 +277,7 @@ For more information about the configurations in `org.apache.hadoop.io.MapFile`,
 
 Namespace policies can be configured to offload data automatically once a threshold is reached. The threshold is based on the size of data that the topic has stored on the pulsar cluster. Once the topic reaches the threshold, an offload operation will be triggered. Setting a negative value to the threshold will disable automatic offloading. Setting the threshold to 0 will cause the broker to offload data as soon as it possiby can.
 
-```
+```bash
 
 $ bin/pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace
 
@@ -296,7 +290,7 @@ $ bin/pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-name
 By default, once messages were offloaded to long term storage, brokers will read them from long term storage, but messages still exists in bookkeeper for a period depends on the administrator's configuration. For 
 messages exists in both bookkeeper and long term storage, if they are preferred to read from bookkeeper, you can use command to change this configuration.
 
-```
+```bash
 
 # default value for -orp is tiered-storage-first
 $ bin/pulsar-admin namespaces set-offload-policies my-tenant/my-namespace -orp bookkeeper-first
@@ -310,7 +304,7 @@ Offloading can manually triggered through a REST endpoint on the Pulsar broker.
 
 When triggering offload, you must specify the maximum size, in bytes, of backlog which will be retained locally on the bookkeeper. The offload mechanism will offload segments from the start of the topic backlog until this condition is met.
 
-```
+```bash
 
 $ bin/pulsar-admin topics offload --size-threshold 10M my-tenant/my-namespace/topic1
 Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
@@ -319,7 +313,7 @@ Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages be
 
 The command to triggers an offload will not wait until the offload operation has completed. To check the status of the offload, use offload-status.
 
-```
+```bash
 
 $ bin/pulsar-admin topics offload-status my-tenant/my-namespace/topic1
 Offload is currently running
@@ -328,7 +322,7 @@ Offload is currently running
 
 To wait for offload to complete, add the -w flag.
 
-```
+```bash
 
 $ bin/pulsar-admin topics offload-status -w my-tenant/my-namespace/topic1
 Offload was a success
@@ -337,7 +331,7 @@ Offload was a success
 
 If there is an error offloading, the error will be propagated to the offload-status command.
 
-```
+```bash
 
 $ bin/pulsar-admin topics offload-status persistent://public/default/topic1
 Error in offload
diff --git a/site2/website-next/docs/deploy-aws.md b/site2/website-next/docs/deploy-aws.md
index d627a7d..a8ce367 100644
--- a/site2/website-next/docs/deploy-aws.md
+++ b/site2/website-next/docs/deploy-aws.md
@@ -4,10 +4,6 @@ title: Deploying a Pulsar cluster on AWS using Terraform and Ansible
 sidebar_label: "Amazon Web Services"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > For instructions on deploying a single Pulsar cluster manually rather than using Terraform and Ansible, see [Deploying a Pulsar cluster on bare metal](deploy-bare-metal.md). For instructions on manually deploying a multi-cluster Pulsar instance, see [Deploying a Pulsar instance on bare metal](deploy-bare-metal-multi-cluster).
 
 One of the easiest ways to get a Pulsar [cluster](reference-terminology.md#cluster) running on [Amazon Web Services](https://aws.amazon.com/) (AWS) is to use the [Terraform](https://terraform.io) infrastructure provisioning tool and the [Ansible](https://www.ansible.com) server automation tool. Terraform can create the resources necessary for running the Pulsar cluster---[EC2](https://aws.amazon.com/ec2/) instances, networking and security infrastructure, etc.---While Ansible can install [...]
@@ -78,6 +74,7 @@ $ cd pulsar/deployment/terraform-ansible/aws
 > 
 > ```
 
+
 In order to create the necessary AWS resources using Terraform, you need to create an SSH key. Enter the following commands to create a private SSH key in `~/.ssh/id_rsa` and a public key in `~/.ssh/id_rsa.pub`:
 
 ```bash
diff --git a/site2/website-next/docs/deploy-bare-metal-multi-cluster.md b/site2/website-next/docs/deploy-bare-metal-multi-cluster.md
index 4db16d8..9dd2526 100644
--- a/site2/website-next/docs/deploy-bare-metal-multi-cluster.md
+++ b/site2/website-next/docs/deploy-bare-metal-multi-cluster.md
@@ -4,17 +4,13 @@ title: Deploying a multi-cluster on bare metal
 sidebar_label: "Bare metal multi-cluster"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+:::tip
 
+1. You can use single-cluster Pulsar installation in most use cases, such as experimenting with Pulsar or using Pulsar in a startup or in a single team. If you need to run a multi-cluster Pulsar instance, see the [guide](deploy-bare-metal-multi-cluster).
+2. If you want to use all built-in [Pulsar IO](io-overview.md) connectors, you need to download `apache-pulsar-io-connectors`package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you have run a separate cluster of function workers for [Pulsar Functions](functions-overview).
+3. If you want to use [Tiered Storage](concepts-tiered-storage.md) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`package and install `apache-pulsar-offloaders` under `offloaders` directory in the Pulsar directory on every broker node. For more details of how to configure this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
 
->  **Tips** 
->
-> 1. You can use single-cluster Pulsar installation in most use cases, such as experimenting with Pulsar or using Pulsar in a startup or in a single team. If you need to run a multi-cluster Pulsar instance, see the [guide](deploy-bare-metal-multi-cluster).
->
-> 2. If you want to use all built-in [Pulsar IO](io-overview.md) connectors, you need to download `apache-pulsar-io-connectors`package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you have run a separate cluster of function workers for [Pulsar Functions](functions-overview).
->
->3. If you want to use [Tiered Storage](concepts-tiered-storage.md) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`package and install `apache-pulsar-offloaders` under `offloaders` directory in the Pulsar directory on every broker node. For more details of how to configure this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
+:::
 
 A Pulsar instance consists of multiple Pulsar clusters working in unison. You can distribute clusters across data centers or geographical regions and replicate the clusters amongst themselves using [geo-replication](administration-geo).Deploying a  multi-cluster Pulsar instance consists of the following steps:
 
diff --git a/site2/website-next/docs/deploy-bare-metal.md b/site2/website-next/docs/deploy-bare-metal.md
index 1efaab6..996b990 100644
--- a/site2/website-next/docs/deploy-bare-metal.md
+++ b/site2/website-next/docs/deploy-bare-metal.md
@@ -4,18 +4,13 @@ title: Deploy a cluster on bare metal
 sidebar_label: "Bare metal"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+:::tip
 
+1. You can use single-cluster Pulsar installation in most use cases, such as experimenting with Pulsar or using Pulsar in a startup or in a single team. If you need to run a multi-cluster Pulsar instance, see the [guide](deploy-bare-metal-multi-cluster).
+2. If you want to use all built-in [Pulsar IO](io-overview.md) connectors, you need to download `apache-pulsar-io-connectors`package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you have run a separate cluster of function workers for [Pulsar Functions](functions-overview).
+3. If you want to use [Tiered Storage](concepts-tiered-storage.md) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`package and install `apache-pulsar-offloaders` under `offloaders` directory in the Pulsar directory on every broker node. For more details of how to configure this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
 
-
-> **Tips**
->
-> 1. You can use single-cluster Pulsar installation in most use cases, such as experimenting with Pulsar or using Pulsar in a startup or in a single team. If you need to run a multi-cluster Pulsar instance, see the [guide](deploy-bare-metal-multi-cluster).
->
-> 2. If you want to use all built-in [Pulsar IO](io-overview.md) connectors, you need to download `apache-pulsar-io-connectors`package and install `apache-pulsar-io-connectors` under `connectors` directory in the pulsar directory on every broker node or on every function-worker node if you have run a separate cluster of function workers for [Pulsar Functions](functions-overview).
->
-> 3. If you want to use [Tiered Storage](concepts-tiered-storage.md) feature in your Pulsar deployment, you need to download `apache-pulsar-offloaders`package and install `apache-pulsar-offloaders` under `offloaders` directory in the Pulsar directory on every broker node. For more details of how to configure this feature, you can refer to the [Tiered storage cookbook](cookbooks-tiered-storage).
+:::
 
 Deploying a Pulsar cluster consists of the following steps:
 
@@ -30,8 +25,11 @@ Deploying a Pulsar cluster consists of the following steps:
 
 Currently, Pulsar is available for 64-bit **macOS**, **Linux**, and **Windows**. To use Pulsar, you need to install 64-bit JRE/JDK 8 or later versions.
 
->**Tips**  
-> You can reuse existing Zookeeper clusters.
+:::tip
+
+You can reuse existing Zookeeper clusters.
+
+:::
 
 To run Pulsar on bare metal, the following configuration is recommended:
 
@@ -419,6 +417,7 @@ webServicePortTls=8443
 > 
 > ```
 
+
 ### Enable Pulsar Functions (optional)
 
 If you want to enable [Pulsar Functions](functions-overview), you can follow the instructions as below:
@@ -487,6 +486,7 @@ brokerServiceurl=pulsar://us-west.example.com:6650
 > 
 > ```
 
+
 Once that is complete, you can publish a message to the Pulsar topic:
 
 ```bash
diff --git a/site2/website-next/docs/deploy-dcos.md b/site2/website-next/docs/deploy-dcos.md
index f7dabdf..da404eb 100644
--- a/site2/website-next/docs/deploy-dcos.md
+++ b/site2/website-next/docs/deploy-dcos.md
@@ -4,12 +4,11 @@ title: Deploy Pulsar on DC/OS
 sidebar_label: "DC/OS"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+:::tip
 
+To enable all built-in [Pulsar IO](io-overview) connectors in your Pulsar deploymente, we recommend you use `apachepulsar/pulsar-all` image instead of `apachepulsar/pulsar` image; the former has already bundled [all built-in connectors](io-overview.md#working-with-connectors).
 
-> **Tips**  
-> To enable all built-in [Pulsar IO](io-overview) connectors in your Pulsar deploymente, we recommend you use `apachepulsar/pulsar-all` image instead of `apachepulsar/pulsar` image; the former has already bundled [all built-in connectors](io-overview.md#working-with-connectors).
+:::
 
 [DC/OS](https://dcos.io/) (the <strong>D</strong>ata<strong>C</strong>enter <strong>O</strong>perating <strong>S</strong>ystem) is a distributed operating system for deploying and managing applications and systems on [Apache Mesos](http://mesos.apache.org/). DC/OS is an open-source tool created and maintained by [Mesosphere](https://mesosphere.com/).
 
diff --git a/site2/website-next/docs/deploy-docker.md b/site2/website-next/docs/deploy-docker.md
index b7a6bfe..f7334c8 100644
--- a/site2/website-next/docs/deploy-docker.md
+++ b/site2/website-next/docs/deploy-docker.md
@@ -4,10 +4,6 @@ title: Deploy a cluster on Docker
 sidebar_label: "Docker"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 To deploy a Pulsar cluster on Docker, complete the following steps:
 1. Deploy a ZooKeeper cluster (optional)
 2. Initialize cluster metadata
diff --git a/site2/website-next/docs/deploy-kubernetes.md b/site2/website-next/docs/deploy-kubernetes.md
index e2e55ac..4e170dc 100644
--- a/site2/website-next/docs/deploy-kubernetes.md
+++ b/site2/website-next/docs/deploy-kubernetes.md
@@ -4,10 +4,6 @@ title: Deploy Pulsar on Kubernetes
 sidebar_label: "Kubernetes"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 To get up and running with these charts as fast as possible, in a **non-production** use case, we provide
 a [quick start guide](getting-started-helm) for Proof of Concept (PoC) deployments.
 
diff --git a/site2/website-next/docs/deploy-monitoring.md b/site2/website-next/docs/deploy-monitoring.md
index fa9e6e2..c199f5f 100644
--- a/site2/website-next/docs/deploy-monitoring.md
+++ b/site2/website-next/docs/deploy-monitoring.md
@@ -4,10 +4,6 @@ title: Monitor
 sidebar_label: "Monitor"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use different ways to monitor a Pulsar cluster, exposing both metrics related to the usage of topics and the overall health of the individual components of the cluster.
 
 ## Collect metrics
diff --git a/site2/website-next/docs/developing-binary-protocol.md b/site2/website-next/docs/developing-binary-protocol.md
index bda6a1a..c8c8eda 100644
--- a/site2/website-next/docs/developing-binary-protocol.md
+++ b/site2/website-next/docs/developing-binary-protocol.md
@@ -4,10 +4,6 @@ title: Pulsar binary protocol specification
 sidebar_label: "Binary protocol"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar uses a custom binary protocol for communications between producers/consumers and brokers. This protocol is designed to support required features, such as acknowledgements and flow control, while ensuring maximum transport and implementation efficiency.
 
 Clients and brokers exchange *commands* with each other. Commands are formatted as binary [protocol buffer](https://developers.google.com/protocol-buffers/) (aka *protobuf*) messages. The format of protobuf commands is specified in the [`PulsarApi.proto`](https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/proto/PulsarApi.proto) file and also documented in the [Protobuf interface](#protobuf-interface) section below.
diff --git a/site2/website-next/docs/developing-load-manager.md b/site2/website-next/docs/developing-load-manager.md
index 3a791e1..9687f30 100644
--- a/site2/website-next/docs/developing-load-manager.md
+++ b/site2/website-next/docs/developing-load-manager.md
@@ -4,10 +4,6 @@ title: Modular load manager
 sidebar_label: "Modular load manager"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The *modular load manager*, implemented in  [`ModularLoadManagerImpl`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java), is a flexible alternative to the previously implemented load manager, [`SimpleLoadManagerImpl`](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.java), which attempts to simplify how load  [...]
 
 ## Usage
diff --git a/site2/website-next/docs/developing-tools.md b/site2/website-next/docs/developing-tools.md
index 9c476a9..d034926 100644
--- a/site2/website-next/docs/developing-tools.md
+++ b/site2/website-next/docs/developing-tools.md
@@ -4,10 +4,6 @@ title: Simulation tools
 sidebar_label: "Simulation tools"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 It is sometimes necessary create an test environment and incur artificial load to observe how well load managers
 handle the load. The load simulation controller, the load simulation client, and the broker monitor were created as an
 effort to make create this load and observe the effects on the managers more easily.
@@ -72,7 +68,7 @@ names. In all cases, the BASE name of the tenants, namespaces, and topics are us
 * Shutdown a previously created group of topics
   * `stop_group <tenant> <group>`
 * Copy the historical data from one ZooKeeper to another and simulate based on the message rates and sizes in that history
-    * `copy <tenant> <source zookeeper> <target zookeeper> [--rate-multiplier value]`
+  * `copy <tenant> <source zookeeper> <target zookeeper> [--rate-multiplier value]`
 * Simulate the load of the historical data on the current ZooKeeper (should be same ZooKeeper being simulated on)
   * `simulate <tenant> <zookeeper> [--rate-multiplier value]`
 * Stream the latest data from the given active ZooKeeper to simulate the real-time load of that ZooKeeper.
diff --git a/site2/website-next/docs/functions-api.md b/site2/website-next/docs/functions-api.md
index 46d854f..7cdbfd5 100644
--- a/site2/website-next/docs/functions-api.md
+++ b/site2/website-next/docs/functions-api.md
@@ -3,7 +3,3 @@ id: functions-api
 title: The Pulsar Functions API
 sidebar_label: "API"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/functions-cli.md b/site2/website-next/docs/functions-cli.md
index 88dd4cb..6a589ec 100644
--- a/site2/website-next/docs/functions-cli.md
+++ b/site2/website-next/docs/functions-cli.md
@@ -4,10 +4,6 @@ title: Pulsar Functions command line tool
 sidebar_label: "Reference: CLI"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The following tables list Pulsar Functions command-line tools. You can learn Pulsar Functions modes, commands, and parameters.
 
 ## localrun
diff --git a/site2/website-next/docs/functions-debug.md b/site2/website-next/docs/functions-debug.md
index bd68055..61d4d05 100644
--- a/site2/website-next/docs/functions-debug.md
+++ b/site2/website-next/docs/functions-debug.md
@@ -4,10 +4,6 @@ title: Debug Pulsar Functions
 sidebar_label: "How-to: Debug"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use the following methods to debug Pulsar Functions:
 
 * [Captured stderr](functions-debug.md#captured-stderr)
diff --git a/site2/website-next/docs/functions-debugging.md b/site2/website-next/docs/functions-debugging.md
index a104e84..7f4d527 100644
--- a/site2/website-next/docs/functions-debugging.md
+++ b/site2/website-next/docs/functions-debugging.md
@@ -2,7 +2,4 @@
 id: functions-debugging
 title: How to debug Pulsar Functions
 sidebar_label: "Debugging"
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+---
\ No newline at end of file
diff --git a/site2/website-next/docs/functions-deploy.md b/site2/website-next/docs/functions-deploy.md
index 2c3b5d0..13348db 100644
--- a/site2/website-next/docs/functions-deploy.md
+++ b/site2/website-next/docs/functions-deploy.md
@@ -4,10 +4,6 @@ title: Deploy Pulsar Functions
 sidebar_label: "How-to: Deploy"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Requirements
 
 To deploy and manage Pulsar Functions, you need to have a Pulsar cluster running. There are several options for this:
diff --git a/site2/website-next/docs/functions-deploying.md b/site2/website-next/docs/functions-deploying.md
index 226a47f..fabdbb7 100644
--- a/site2/website-next/docs/functions-deploying.md
+++ b/site2/website-next/docs/functions-deploying.md
@@ -3,7 +3,3 @@ id: functions-deploying
 title: Deploying and managing Pulsar Functions
 sidebar_label: "Deploying functions"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/functions-develop.md b/site2/website-next/docs/functions-develop.md
index bd38683..6f80257 100644
--- a/site2/website-next/docs/functions-develop.md
+++ b/site2/website-next/docs/functions-develop.md
@@ -22,16 +22,7 @@ The language-native function, which adds an exclamation point to all incoming st
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 ```Java
@@ -83,20 +74,7 @@ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
 The following example uses Pulsar Functions SDK.
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 ```Java
@@ -172,20 +150,7 @@ SerDe stands for **Ser**ialization and **De**serialization. Pulsar Functions use
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 When you write Pulsar Functions in Java, the following basic Java types are built in and supported by default: `String`, `Double`, `Integer`, `Float`, `Long`, `Short`, and `Byte`.
@@ -206,7 +171,7 @@ SerDe works in the following ways in Java Functions.
 - If the input or output topics do not exist, Pulsar Functions adopt the following rules to determine SerDe:
   - If the schema type is specified, Pulsar Functions use the specified schema type.
   - If SerDe is specified, Pulsar Functions use the specified SerDe, and the schema type for input and output topics is `Byte`.
-  - If neither the schema type nor SerDe is specified, Pulsar Functions use the built-in SerDe. For non-primitive schema type, the built-in SerDe serializes and deserializes objects in the `JSON` format. 
+  - If neither the schema type nor SerDe is specified, Pulsar Functions use the built-in SerDe. For non-primitive schema type, the built-in SerDe serializes and deserializes objects in the `JSON` format.
 
 </TabItem>
 <TabItem value="Python">
@@ -259,16 +224,7 @@ Imagine that you're writing Pulsar Functions that are processing tweet objects,
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 ```java
@@ -392,20 +348,7 @@ Java, Python and Go SDKs provide access to a **context object** that can be used
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 The [Context](https://github.com/apache/pulsar/blob/master/pulsar-functions/api-java/src/main/java/org/apache/pulsar/functions/api/Context.java) interface provides a number of methods that you can use to access the function [context](#context). The various method signatures for the `Context` interface are listed as follows.
@@ -645,20 +588,7 @@ $ bin/pulsar-admin functions create \
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java"> 
 
 The Java SDK [`Context`](#context) object enables you to access key/value pairs provided to Pulsar Functions via the command line (as JSON). The following example passes a key/value pair.
@@ -805,20 +735,7 @@ func contextFunc(ctx context.Context) {
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 Pulsar Functions that use the Java SDK have access to an [SLF4j](https://www.slf4j.org/) [`Logger`](https://www.slf4j.org/api/org/apache/log4j/Logger.html) object that can be used to produce logs at the chosen log level. The following example logs either a `WARNING`- or `INFO`-level log based on whether the incoming string contains the word `danger`.
@@ -1141,12 +1058,7 @@ Pulsar Functions using the Java SDK has access to the Pulsar admin client, which
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"}]}>
 <TabItem value="Java">
 
 Below is an example of how to use the Pulsar admin client exposed from the Function `context`.
@@ -1225,20 +1137,7 @@ Here are examples of how to customize metrics for Java and Python functions.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 You can record metrics using the [`Context`](#context) object on a per-key basis. For example, you can set a metric for the `process-count` key and a different metric for the `elevens-count` key every time the function processes a message. 
@@ -1307,20 +1206,7 @@ At the same time, Pulsar Functions provides two interfaces, **SecretsProvider**
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"}]}>
 <TabItem value="Java">
 
 You can get secret provider using the [`Context`](#context) object. The following is an example:
@@ -1398,16 +1284,7 @@ State storage is not available in Go.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 Currently Pulsar Functions expose the following APIs for mutating and accessing State. These APIs are available in the [Context](functions-develop.md#context) object when you are using Java SDK functions.
@@ -1644,16 +1521,7 @@ If `--watch` is specified, the CLI will watch the value of the provided `state-k
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"}]}>
 <TabItem value="Java">
 
 {@inject: github:WordCountFunction:/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/WordCountFunction.java} is a very good example
diff --git a/site2/website-next/docs/functions-guarantees.md b/site2/website-next/docs/functions-guarantees.md
index 7e00201..aefa8d3 100644
--- a/site2/website-next/docs/functions-guarantees.md
+++ b/site2/website-next/docs/functions-guarantees.md
@@ -3,7 +3,3 @@ id: functions-guarantees
 title: Processing guarantees
 sidebar_label: "Processing guarantees"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/functions-metrics.md b/site2/website-next/docs/functions-metrics.md
index 4f73f59..e76c556 100644
--- a/site2/website-next/docs/functions-metrics.md
+++ b/site2/website-next/docs/functions-metrics.md
@@ -4,7 +4,3 @@ title: Metrics for Pulsar Functions
 sidebar_label: "Metrics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
diff --git a/site2/website-next/docs/functions-overview.md b/site2/website-next/docs/functions-overview.md
index 1194c88..c84be36 100644
--- a/site2/website-next/docs/functions-overview.md
+++ b/site2/website-next/docs/functions-overview.md
@@ -4,10 +4,6 @@ title: Pulsar Functions overview
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 **Pulsar Functions** are lightweight compute processes that
 
 * consume messages from one or more Pulsar topics,
diff --git a/site2/website-next/docs/functions-package.md b/site2/website-next/docs/functions-package.md
index 65ca404..a75b913 100644
--- a/site2/website-next/docs/functions-package.md
+++ b/site2/website-next/docs/functions-package.md
@@ -4,10 +4,6 @@ title: Package Pulsar Functions
 sidebar_label: "How-to: Package"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can package Pulsar functions in Java, Python, and Go. Packaging the window function in Java is the same as [packaging a function in Java](#java).
 
 :::note
diff --git a/site2/website-next/docs/functions-quickstart.md b/site2/website-next/docs/functions-quickstart.md
index d822c79..722d5bc 100644
--- a/site2/website-next/docs/functions-quickstart.md
+++ b/site2/website-next/docs/functions-quickstart.md
@@ -2,7 +2,4 @@
 id: functions-quickstart
 title: Getting started with Pulsar Functions
 sidebar_label: "Getting started"
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+---
\ No newline at end of file
diff --git a/site2/website-next/docs/functions-runtime.md b/site2/website-next/docs/functions-runtime.md
index 4358f63..9636436 100644
--- a/site2/website-next/docs/functions-runtime.md
+++ b/site2/website-next/docs/functions-runtime.md
@@ -4,10 +4,6 @@ title: Configure Functions runtime
 sidebar_label: "Setup: Configure Functions runtime"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can use the following methods to run functions.
 
 - *Thread*: Invoke functions threads in functions worker.
@@ -150,6 +146,10 @@ functionRuntimeFactoryConfigs:
   extraFunctionDependenciesDir:
   # Additional memory padding added on top of the memory requested by the function per on a per instance basis
   percentMemoryPadding: 10
+  # The duration (in seconds) before the StatefulSet is deleted after a function stops or restarts.
+  # Value must be a non-negative integer. 0 indicates the StatefulSet is deleted immediately.
+  # Default is 5 seconds.
+  gracePeriodSeconds: 5
 
 ```
 
diff --git a/site2/website-next/docs/functions-state.md b/site2/website-next/docs/functions-state.md
index 55dc6e5..a858759 100644
--- a/site2/website-next/docs/functions-state.md
+++ b/site2/website-next/docs/functions-state.md
@@ -3,7 +3,3 @@ id: functions-state
 title: Pulsar Functions State Storage (Developer Preview)
 sidebar_label: "State Storage"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/functions-worker.md b/site2/website-next/docs/functions-worker.md
index dcb7c20..35867f7 100644
--- a/site2/website-next/docs/functions-worker.md
+++ b/site2/website-next/docs/functions-worker.md
@@ -3,10 +3,6 @@ id: functions-worker
 title: Deploy and manage functions worker
 sidebar_label: "Setup: Pulsar Functions Worker"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 Before using Pulsar Functions, you need to learn how to set up Pulsar Functions worker and how to [configure Functions runtime](functions-runtime).  
 
 Pulsar `functions-worker` is a logic component to run Pulsar Functions in cluster mode. Two options are available, and you can select either based on your requirements. 
diff --git a/site2/website-next/docs/getting-started-clients.md b/site2/website-next/docs/getting-started-clients.md
index a6b1d28..bcd37d4 100644
--- a/site2/website-next/docs/getting-started-clients.md
+++ b/site2/website-next/docs/getting-started-clients.md
@@ -4,10 +4,6 @@ title: Pulsar client libraries
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar supports the following client libraries:
 
 - [Java client](client-libraries-java)
diff --git a/site2/website-next/docs/getting-started-concepts-and-architecture.md b/site2/website-next/docs/getting-started-concepts-and-architecture.md
index c21c418..bc8d3a4 100644
--- a/site2/website-next/docs/getting-started-concepts-and-architecture.md
+++ b/site2/website-next/docs/getting-started-concepts-and-architecture.md
@@ -4,10 +4,6 @@ title: Pulsar concepts and architecture
 sidebar_label: "Concepts and architecture"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 
 
diff --git a/site2/website-next/docs/getting-started-docker.md b/site2/website-next/docs/getting-started-docker.md
index e802d6d..7ee20c2 100644
--- a/site2/website-next/docs/getting-started-docker.md
+++ b/site2/website-next/docs/getting-started-docker.md
@@ -4,10 +4,6 @@ title: Set up a standalone Pulsar in Docker
 sidebar_label: "Run Pulsar in Docker"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For local development and testing, you can run Pulsar in standalone mode on your own machine within a Docker container. 
 
 If you have not installed Docker, download the [Community edition](https://www.docker.com/community-edition) and follow the instructions for your OS.
diff --git a/site2/website-next/docs/getting-started-helm.md b/site2/website-next/docs/getting-started-helm.md
index 4f0b253..d435371 100644
--- a/site2/website-next/docs/getting-started-helm.md
+++ b/site2/website-next/docs/getting-started-helm.md
@@ -4,10 +4,6 @@ title: Get started in Kubernetes
 sidebar_label: "Run Pulsar in Kubernetes"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This section guides you through every step of installing and running Apache Pulsar with Helm on Kubernetes quickly, including the following sections:
 
 - Install the Apache Pulsar on Kubernetes using Helm
diff --git a/site2/website-next/docs/getting-started-pulsar.md b/site2/website-next/docs/getting-started-pulsar.md
index a17268b..560c8c1 100644
--- a/site2/website-next/docs/getting-started-pulsar.md
+++ b/site2/website-next/docs/getting-started-pulsar.md
@@ -4,10 +4,6 @@ title: Pulsar 2.0
 sidebar_label: "Pulsar 2.0"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar 2.0 is a major new release for Pulsar that brings some bold changes to the platform, including [simplified topic names](#topic-names), the addition of the [Pulsar Functions](functions-overview) feature, some terminology changes, and more.
 
 ## New features in Pulsar 2.0
diff --git a/site2/website-next/docs/getting-started-standalone.md b/site2/website-next/docs/getting-started-standalone.md
index f07e9a1..28dd6e1 100644
--- a/site2/website-next/docs/getting-started-standalone.md
+++ b/site2/website-next/docs/getting-started-standalone.md
@@ -5,10 +5,6 @@ title: Set up a standalone Pulsar locally
 sidebar_label: "Run Pulsar locally"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For local development and testing, you can run Pulsar in standalone mode on your machine. The standalone mode includes a Pulsar broker, the necessary ZooKeeper and BookKeeper components running inside of a single Java Virtual Machine (JVM) process.
 
 > **Pulsar in production?**  
diff --git a/site2/website-next/docs/helm-deploy.md b/site2/website-next/docs/helm-deploy.md
index 50bb077..5451bf9 100644
--- a/site2/website-next/docs/helm-deploy.md
+++ b/site2/website-next/docs/helm-deploy.md
@@ -4,10 +4,6 @@ title: Deploy Pulsar cluster using Helm
 sidebar_label: "Deployment"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before running `helm install`, you need to decide how to run Pulsar.
 Options can be specified using Helm's `--set option.name=value` command line option.
 
diff --git a/site2/website-next/docs/helm-install.md b/site2/website-next/docs/helm-install.md
index 8c13281..dd9c8af 100644
--- a/site2/website-next/docs/helm-install.md
+++ b/site2/website-next/docs/helm-install.md
@@ -4,10 +4,6 @@ title: Install Apache Pulsar using Helm
 sidebar_label: "Install "
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Install Apache Pulsar on Kubernetes with the official Pulsar Helm chart.
 
 ## Requirements
diff --git a/site2/website-next/docs/helm-overview.md b/site2/website-next/docs/helm-overview.md
index 0b52e06..474183b 100644
--- a/site2/website-next/docs/helm-overview.md
+++ b/site2/website-next/docs/helm-overview.md
@@ -4,10 +4,6 @@ title: Apache Pulsar Helm Chart
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 [Helm chart](https://github.com/apache/pulsar-helm-chart) supports you to install Apache Pulsar in a cloud-native environment.
 
 ## Introduction
diff --git a/site2/website-next/docs/helm-prepare.md b/site2/website-next/docs/helm-prepare.md
index 7ede02c..db55245 100644
--- a/site2/website-next/docs/helm-prepare.md
+++ b/site2/website-next/docs/helm-prepare.md
@@ -4,10 +4,6 @@ title: Prepare Kubernetes resources
 sidebar_label: "Prepare"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 For a fully functional Pulsar cluster, you need a few resources before deploying the Apache Pulsar Helm chart. The following provides instructions to prepare the Kubernetes cluster before deploying the Pulsar Helm chart.
 
 - [Google Kubernetes Engine](#google-kubernetes-engine)
diff --git a/site2/website-next/docs/helm-tools.md b/site2/website-next/docs/helm-tools.md
index e5173c5..7a95271 100644
--- a/site2/website-next/docs/helm-tools.md
+++ b/site2/website-next/docs/helm-tools.md
@@ -4,10 +4,6 @@ title: Required tools for deploying Pulsar Helm Chart
 sidebar_label: "Required Tools"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before deploying Pulsar to your Kubernetes cluster, there are some tools you must have installed locally.
 
 ## kubectl
diff --git a/site2/website-next/docs/helm-upgrade.md b/site2/website-next/docs/helm-upgrade.md
index 8c92cbc..4923b9c 100644
--- a/site2/website-next/docs/helm-upgrade.md
+++ b/site2/website-next/docs/helm-upgrade.md
@@ -4,10 +4,6 @@ title: Upgrade Pulsar Helm release
 sidebar_label: "Upgrade"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before upgrading your Pulsar installation, you need to check the change log corresponding to the specific release you want to upgrade to and look for any release notes that might pertain to the new Pulsar helm chart version.
 
 We also recommend that you need to provide all values using the `helm upgrade --set key=value` syntax or the `-f values.yml` instead of using `--reuse-values`, because some of the current values might be deprecated.
diff --git a/site2/website-next/docs/io-aerospike-sink.md b/site2/website-next/docs/io-aerospike-sink.md
index f3d48d9..8e423de 100644
--- a/site2/website-next/docs/io-aerospike-sink.md
+++ b/site2/website-next/docs/io-aerospike-sink.md
@@ -4,10 +4,6 @@ title: Aerospike sink connector
 sidebar_label: "Aerospike sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Aerospike sink connector pulls messages from Pulsar topics to Aerospike clusters.
 
 ## Configuration
diff --git a/site2/website-next/docs/io-aerospike.md b/site2/website-next/docs/io-aerospike.md
index d0b460f..07164b7 100644
--- a/site2/website-next/docs/io-aerospike.md
+++ b/site2/website-next/docs/io-aerospike.md
@@ -3,7 +3,3 @@ id: io-aerospike
 title: Aerospike Sink Connector
 sidebar_label: "Aerospike Sink Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-canal-source.md b/site2/website-next/docs/io-canal-source.md
index b00d35f..7bfae51 100644
--- a/site2/website-next/docs/io-canal-source.md
+++ b/site2/website-next/docs/io-canal-source.md
@@ -4,10 +4,6 @@ title: Canal source connector
 sidebar_label: "Canal source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Canal source connector pulls messages from MySQL to Pulsar topics.
 
 ## Configuration
diff --git a/site2/website-next/docs/io-cassandra-sink.md b/site2/website-next/docs/io-cassandra-sink.md
index 39cd538..d25313c 100644
--- a/site2/website-next/docs/io-cassandra-sink.md
+++ b/site2/website-next/docs/io-cassandra-sink.md
@@ -4,10 +4,6 @@ title: Cassandra sink connector
 sidebar_label: "Cassandra sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Cassandra sink connector pulls messages from Pulsar topics to Cassandra clusters.
 
 ## Configuration
@@ -33,11 +29,13 @@ Before using the Cassandra sink connector, you need to create a configuration fi
   ```json
   
   {
-      "roots": "localhost:9042",
-      "keyspace": "pulsar_test_keyspace",
-      "columnFamily": "pulsar_test_table",
-      "keyname": "key",
-      "columnName": "col"
+     "configs": {
+        "roots": "localhost:9042",
+        "keyspace": "pulsar_test_keyspace",
+        "columnFamily": "pulsar_test_table",
+        "keyname": "key",
+        "columnName": "col"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-cassandra.md b/site2/website-next/docs/io-cassandra.md
index c6fb34a..88f656c 100644
--- a/site2/website-next/docs/io-cassandra.md
+++ b/site2/website-next/docs/io-cassandra.md
@@ -3,7 +3,3 @@ id: io-cassandra
 title: Cassandra Sink Connector
 sidebar_label: "Cassandra Sink Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-cdc-canal.md b/site2/website-next/docs/io-cdc-canal.md
index f8556b5..3838dcf 100644
--- a/site2/website-next/docs/io-cdc-canal.md
+++ b/site2/website-next/docs/io-cdc-canal.md
@@ -3,7 +3,3 @@ id: io-cdc-canal
 title: CDC Canal Connector
 sidebar_label: "CDC Canal Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-cdc-debezium.md b/site2/website-next/docs/io-cdc-debezium.md
index cd9806f..de3bbc3 100644
--- a/site2/website-next/docs/io-cdc-debezium.md
+++ b/site2/website-next/docs/io-cdc-debezium.md
@@ -4,10 +4,6 @@ title: Debezium source connector
 sidebar_label: "Debezium source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Debezium source connector pulls messages from MySQL or PostgreSQL 
 and persists the messages to Pulsar topics.
 
@@ -53,20 +49,22 @@ You can use one of the following methods to create a configuration file.
   ```json
   
   {
-      "database.hostname": "localhost",
-      "database.port": "3306",
-      "database.user": "debezium",
-      "database.password": "dbz",
-      "database.server.id": "184054",
-      "database.server.name": "dbserver1",
-      "database.whitelist": "inventory",
-      "database.history": "org.apache.pulsar.io.debezium.PulsarDatabaseHistory",
-      "database.history.pulsar.topic": "history-topic",
-      "database.history.pulsar.service.url": "pulsar://127.0.0.1:6650",
-      "key.converter": "org.apache.kafka.connect.json.JsonConverter",
-      "value.converter": "org.apache.kafka.connect.json.JsonConverter",
-      "pulsar.service.url": "pulsar://127.0.0.1:6650",
-      "offset.storage.topic": "offset-topic"
+     "configs": {
+        "database.hostname": "localhost",
+        "database.port": "3306",
+        "database.user": "debezium",
+        "database.password": "dbz",
+        "database.server.id": "184054",
+        "database.server.name": "dbserver1",
+        "database.whitelist": "inventory",
+        "database.history": "org.apache.pulsar.io.debezium.PulsarDatabaseHistory",
+        "database.history.pulsar.topic": "history-topic",
+        "database.history.pulsar.service.url": "pulsar://127.0.0.1:6650",
+        "key.converter": "org.apache.kafka.connect.json.JsonConverter",
+        "value.converter": "org.apache.kafka.connect.json.JsonConverter",
+        "pulsar.service.url": "pulsar://127.0.0.1:6650",
+        "offset.storage.topic": "offset-topic"
+     }
   }
   
   ```
@@ -430,8 +428,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 2. Start a Pulsar service locally in standalone mode.
 
-   ```
-
+   ```bash
    
    $ bin/pulsar standalone
    
@@ -443,8 +440,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
     
     Make sure the nar file is available at `connectors/pulsar-io-mongodb-@pulsar:version@.nar`.
 
-       ```
-
+       ```bash
        
        $ bin/pulsar-admin source localrun \
        --archive connectors/pulsar-io-debezium-mongodb-@pulsar:version@.nar \
@@ -458,8 +454,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
    * Use the **YAML** configuration file as shown previously.
 
-       ```
-
+       ```bash
        
        $ bin/pulsar-admin source localrun  \
        --source-config-file debezium-mongodb-source-config.yaml
@@ -469,7 +464,6 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 4. Subscribe the topic _sub-products_ for the _inventory.products_ table.
 
    ```
-
    
    $ bin/pulsar-client consume -s "sub-products" public/default/dbserver1.inventory.products -n 0
    
@@ -477,8 +471,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 5. Start a MongoDB client in docker.
 
-   ```
-
+   ```bash
    
    $ docker exec -it pulsar-mongodb /bin/bash
    
@@ -486,8 +479,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 6. A MongoDB client pops out. 
 
-   ```
-
+   ```bash
    
    mongo -u debezium -p dbz --authenticationDatabase admin localhost:27017/inventory
    db.products.update({"_id":NumberLong(104)},{$set:{weight:1.25}})
@@ -496,8 +488,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
    In the terminal window of subscribing topic, you can receive the following messages.
 
-   ```
-
+   ```bash
    
    ----- got message -----
    {"schema":{"type":"struct","fields":[{"type":"string","optional":false,"field":"id"}],"optional":false,"name":"dbserver1.inventory.products.Key"},"payload":{"id":"104"}}, value = {"schema":{"type":"struct","fields":[{"type":"string","optional":true,"name":"io.debezium.data.Json","version":1,"field":"after"},{"type":"string","optional":true,"name":"io.debezium.data.Json","version":1,"field":"patch"},{"type":"struct","fields":[{"type":"string","optional":false,"field":"version"},{"type" [...]
@@ -508,7 +499,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
  
 ### Debezium postgres connector will hang when create snap
 
-```
+```$xslt
 
 #18 prio=5 os_prio=31 tid=0x00007fd83096f800 nid=0xa403 waiting on condition [0x000070000f534000]
     java.lang.Thread.State: WAITING (parking)
@@ -545,7 +536,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 If you encounter the above problems in synchronizing data, please refer to [this](https://github.com/apache/pulsar/issues/4075) and add the following configuration to the configuration file:
 
-```
+```$xslt
 
 max.queue.size=
 
diff --git a/site2/website-next/docs/io-cdc.md b/site2/website-next/docs/io-cdc.md
index d4f4f0f..df37397 100644
--- a/site2/website-next/docs/io-cdc.md
+++ b/site2/website-next/docs/io-cdc.md
@@ -4,10 +4,6 @@ title: CDC connector
 sidebar_label: "CDC connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 CDC source connectors capture log changes of databases (such as MySQL, MongoDB, and PostgreSQL) into Pulsar.
 
 > CDC source connectors are built on top of [Canal](https://github.com/alibaba/canal) and [Debezium](https://debezium.io/) and store all data into Pulsar cluster in a persistent, replicated, and partitioned way.
diff --git a/site2/website-next/docs/io-cli.md b/site2/website-next/docs/io-cli.md
index 5476eec..3b8af77 100644
--- a/site2/website-next/docs/io-cli.md
+++ b/site2/website-next/docs/io-cli.md
@@ -4,10 +4,6 @@ title: Connector Admin CLI
 sidebar_label: "CLI"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The `pulsar-admin` tool helps you manage Pulsar connectors.
   
 ## `sources`
diff --git a/site2/website-next/docs/io-connectors.md b/site2/website-next/docs/io-connectors.md
index 2c6affd..9e8ede9 100644
--- a/site2/website-next/docs/io-connectors.md
+++ b/site2/website-next/docs/io-connectors.md
@@ -4,10 +4,6 @@ title: Built-in connector
 sidebar_label: "Built-in connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar distribution includes a set of common connectors that have been packaged and tested with the rest of Apache Pulsar. These connectors import and export data from some of the most commonly used data systems. 
 
 Using any of these connectors is as easy as writing a simple connector and running the connector locally or submitting the connector to a Pulsar Functions cluster.
diff --git a/site2/website-next/docs/io-debezium-source.md b/site2/website-next/docs/io-debezium-source.md
index fbe0781..a03a042 100644
--- a/site2/website-next/docs/io-debezium-source.md
+++ b/site2/website-next/docs/io-debezium-source.md
@@ -4,10 +4,6 @@ title: Debezium source connector
 sidebar_label: "Debezium source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Debezium source connector pulls messages from MySQL or PostgreSQL 
 and persists the messages to Pulsar topics.
 
@@ -73,19 +69,21 @@ You can use one of the following methods to create a configuration file.
   ```json
   
   {
-      "database.hostname": "localhost",
-      "database.port": "3306",
-      "database.user": "debezium",
-      "database.password": "dbz",
-      "database.server.id": "184054",
-      "database.server.name": "dbserver1",
-      "database.whitelist": "inventory",
-      "database.history": "org.apache.pulsar.io.debezium.PulsarDatabaseHistory",
-      "database.history.pulsar.topic": "history-topic",
-      "database.history.pulsar.service.url": "pulsar://127.0.0.1:6650",
-      "key.converter": "org.apache.kafka.connect.json.JsonConverter",
-      "value.converter": "org.apache.kafka.connect.json.JsonConverter",
-      "offset.storage.topic": "offset-topic"
+     "configs": {
+        "database.hostname": "localhost",
+        "database.port": "3306",
+        "database.user": "debezium",
+        "database.password": "dbz",
+        "database.server.id": "184054",
+        "database.server.name": "dbserver1",
+        "database.whitelist": "inventory",
+        "database.history": "org.apache.pulsar.io.debezium.PulsarDatabaseHistory",
+        "database.history.pulsar.topic": "history-topic",
+        "database.history.pulsar.service.url": "pulsar://127.0.0.1:6650",
+        "key.converter": "org.apache.kafka.connect.json.JsonConverter",
+        "value.converter": "org.apache.kafka.connect.json.JsonConverter",
+        "offset.storage.topic": "offset-topic"
+     }
   }
   
   ```
@@ -421,12 +419,12 @@ You need to create a configuration file before using the Pulsar Debezium connect
   configs:
 
       ## config for pg, docker image: debezium/example-mongodb:0.10
-      mongodb.hosts: "rs0/mongodb:27017",
-      mongodb.name: "dbserver1",
-      mongodb.user: "debezium",
-      mongodb.password: "dbz",
-      mongodb.task.id: "1",
-      database.whitelist: "inventory",
+      mongodb.hosts: "rs0/mongodb:27017"
+      mongodb.name: "dbserver1"
+      mongodb.user: "debezium"
+      mongodb.password: "dbz"
+      mongodb.task.id: "1"
+      database.whitelist: "inventory"
       database.history.pulsar.service.url: "pulsar://127.0.0.1:6650"
   
   ```
@@ -458,8 +456,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 2. Start a Pulsar service locally in standalone mode.
 
-   ```
-
+   ```bash
    
    $ bin/pulsar standalone
    
@@ -471,8 +468,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
     
     Make sure the nar file is available at `connectors/pulsar-io-mongodb-@pulsar:version@.nar`.
 
-       ```
-
+       ```bash
        
        $ bin/pulsar-admin source localrun \
        --archive connectors/pulsar-io-debezium-mongodb-@pulsar:version@.nar \
@@ -486,8 +482,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
    * Use the **YAML** configuration file as shown previously.
 
-       ```
-
+       ```bash
        
        $ bin/pulsar-admin source localrun  \
        --source-config-file debezium-mongodb-source-config.yaml
@@ -497,7 +492,6 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 4. Subscribe the topic _sub-products_ for the _inventory.products_ table.
 
    ```
-
    
    $ bin/pulsar-client consume -s "sub-products" public/default/dbserver1.inventory.products -n 0
    
@@ -505,8 +499,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 5. Start a MongoDB client in docker.
 
-   ```
-
+   ```bash
    
    $ docker exec -it pulsar-mongodb /bin/bash
    
@@ -514,8 +507,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
 6. A MongoDB client pops out. 
 
-   ```
-
+   ```bash
    
    mongo -u debezium -p dbz --authenticationDatabase admin localhost:27017/inventory
    db.products.update({"_id":NumberLong(104)},{$set:{weight:1.25}})
@@ -524,8 +516,7 @@ This example shows how to change the data of a MongoDB table using the Pulsar De
 
    In the terminal window of subscribing topic, you can receive the following messages.
 
-   ```
-
+   ```bash
    
    ----- got message -----
    {"schema":{"type":"struct","fields":[{"type":"string","optional":false,"field":"id"}],"optional":false,"name":"dbserver1.inventory.products.Key"},"payload":{"id":"104"}}, value = {"schema":{"type":"struct","fields":[{"type":"string","optional":true,"name":"io.debezium.data.Json","version":1,"field":"after"},{"type":"string","optional":true,"name":"io.debezium.data.Json","version":1,"field":"patch"},{"type":"struct","fields":[{"type":"string","optional":false,"field":"version"},{"type" [...]
@@ -552,7 +543,7 @@ Using yaml as an example, you can create a debezium-oracle-source-config.yaml fi
 
 * JSON
 
-```
+```json
 
 {
   "database.hostname": "localhost",
@@ -579,7 +570,7 @@ Using yaml as an example, you can create a debezium-oracle-source-config.yaml fi
 
 * YAML
 
-```
+```yaml
 
 tenant: "public"
 namespace: "default"
@@ -626,7 +617,7 @@ Similarly to other connectors, you can use JSON or YAMl to configure the connect
 
 * JSON
 
-```
+```json
 
 {
   "database.hostname": "localhost",
@@ -652,7 +643,7 @@ Similarly to other connectors, you can use JSON or YAMl to configure the connect
 
 * YAML
 
-```
+```yaml
 
 tenant: "public"
 namespace: "default"
@@ -690,7 +681,7 @@ For the full list of configuration properties supported by Debezium, see [Debezi
  
 ### Debezium postgres connector will hang when create snap
 
-```
+```$xslt
 
 #18 prio=5 os_prio=31 tid=0x00007fd83096f800 nid=0xa403 waiting on condition [0x000070000f534000]
     java.lang.Thread.State: WAITING (parking)
@@ -727,7 +718,7 @@ For the full list of configuration properties supported by Debezium, see [Debezi
 
 If you encounter the above problems in synchronizing data, please refer to [this](https://github.com/apache/pulsar/issues/4075) and add the following configuration to the configuration file:
 
-```
+```$xslt
 
 max.queue.size=
 
diff --git a/site2/website-next/docs/io-debug.md b/site2/website-next/docs/io-debug.md
index 93e8d47..b353215 100644
--- a/site2/website-next/docs/io-debug.md
+++ b/site2/website-next/docs/io-debug.md
@@ -3,10 +3,6 @@ id: io-debug
 title: How to debug Pulsar connectors
 sidebar_label: "Debug"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
 This guide explains how to debug connectors in localrun or cluster mode and gives a debugging checklist.
 To better demonstrate how to debug Pulsar connectors, here takes a Mongo sink connector as an example.   
 
diff --git a/site2/website-next/docs/io-develop.md b/site2/website-next/docs/io-develop.md
index 316d164..bbd6501 100644
--- a/site2/website-next/docs/io-develop.md
+++ b/site2/website-next/docs/io-develop.md
@@ -386,12 +386,7 @@ Here is an example of how to customize metrics for a Java connector.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"}]}>
 <TabItem value="Java">
 
 ```
diff --git a/site2/website-next/docs/io-dynamodb-source.md b/site2/website-next/docs/io-dynamodb-source.md
index a37b865..a02f28d 100644
--- a/site2/website-next/docs/io-dynamodb-source.md
+++ b/site2/website-next/docs/io-dynamodb-source.md
@@ -4,10 +4,6 @@ title: AWS DynamoDB source connector
 sidebar_label: "AWS DynamoDB source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The DynamoDB source connector pulls data from DynamoDB table streams and persists data into Pulsar.
 
 This connector uses the [DynamoDB Streams Kinesis Adapter](https://github.com/awslabs/dynamodb-streams-kinesis-adapter),
@@ -47,17 +43,19 @@ Before using the DynamoDB source connector, you need to create a configuration f
   ```json
   
   {
-      "awsEndpoint": "https://some.endpoint.aws",
-      "awsRegion": "us-east-1",
-      "awsDynamodbStreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291",
-      "awsCredentialPluginParam": "{\"accessKey\":\"myKey\",\"secretKey\":\"my-Secret\"}",
-      "applicationName": "My test application",
-      "checkpointInterval": "30000",
-      "backoffTime": "4000",
-      "numRetries": "3",
-      "receiveQueueSize": 2000,
-      "initialPositionInStream": "TRIM_HORIZON",
-      "startAtTime": "2019-03-05T19:28:58.000Z"
+     "configs": {
+        "awsEndpoint": "https://some.endpoint.aws",
+        "awsRegion": "us-east-1",
+        "awsDynamodbStreamArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291",
+        "awsCredentialPluginParam": "{\"accessKey\":\"myKey\",\"secretKey\":\"my-Secret\"}",
+        "applicationName": "My test application",
+        "checkpointInterval": "30000",
+        "backoffTime": "4000",
+        "numRetries": "3",
+        "receiveQueueSize": 2000,
+        "initialPositionInStream": "TRIM_HORIZON",
+        "startAtTime": "2019-03-05T19:28:58.000Z"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-dynamodb.md b/site2/website-next/docs/io-dynamodb.md
index 5fba4c5..ec450f9 100644
--- a/site2/website-next/docs/io-dynamodb.md
+++ b/site2/website-next/docs/io-dynamodb.md
@@ -2,7 +2,4 @@
 id: io-dynamodb
 title: AWS DynamoDB Connector
 sidebar_label: "AWS DynamoDB Connector"
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+---
\ No newline at end of file
diff --git a/site2/website-next/docs/io-elasticsearch-sink.md b/site2/website-next/docs/io-elasticsearch-sink.md
index f2dd972..b655917 100644
--- a/site2/website-next/docs/io-elasticsearch-sink.md
+++ b/site2/website-next/docs/io-elasticsearch-sink.md
@@ -4,10 +4,6 @@ title: Elasticsearch sink connector
 sidebar_label: "Elasticsearch sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Elasticsearch sink connector pulls messages from Pulsar topics and persists the messages to indexes.
 
 
@@ -108,10 +104,12 @@ Before using the Elasticsearch sink connector, you need to create a configuratio
   ```json
   
   {
-      "elasticSearchUrl": "http://localhost:9200",
-      "indexName": "my_index",
-      "username": "scooby",
-      "password": "doobie"
+     "configs": {
+        "elasticSearchUrl": "http://localhost:9200",
+        "indexName": "my_index",
+        "username": "scooby",
+        "password": "doobie"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-elasticsearch.md b/site2/website-next/docs/io-elasticsearch.md
index 55ef0d9..01e783b 100644
--- a/site2/website-next/docs/io-elasticsearch.md
+++ b/site2/website-next/docs/io-elasticsearch.md
@@ -3,7 +3,3 @@ id: io-elasticsearch
 title: ElasticSearch Connector
 sidebar_label: "ElasticSearch Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-file-source.md b/site2/website-next/docs/io-file-source.md
index 191d7a4..cd0d9f7 100644
--- a/site2/website-next/docs/io-file-source.md
+++ b/site2/website-next/docs/io-file-source.md
@@ -4,10 +4,6 @@ title: File source connector
 sidebar_label: "File source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The File source connector pulls messages from files in directories and persists the messages to Pulsar topics.
 
 ## Configuration
@@ -40,18 +36,20 @@ Before using the File source connector, you need to create a configuration file
   ```json
   
   {
-      "inputDirectory": "/Users/david",
-      "recurse": true,
-      "keepFile": true,
-      "fileFilter": "[^\\.].*",
-      "pathFilter": "*",
-      "minimumFileAge": 0,
-      "maximumFileAge": 9999999999,
-      "minimumSize": 1,
-      "maximumSize": 5000000,
-      "ignoreHiddenFiles": true,
-      "pollingInterval": 5000,
-      "numWorkers": 1
+     "configs": {
+        "inputDirectory": "/Users/david",
+        "recurse": true,
+        "keepFile": true,
+        "fileFilter": "[^\\.].*",
+        "pathFilter": "*",
+        "minimumFileAge": 0,
+        "maximumFileAge": 9999999999,
+        "minimumSize": 1,
+        "maximumSize": 5000000,
+        "ignoreHiddenFiles": true,
+        "pollingInterval": 5000,
+        "numWorkers": 1
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-file.md b/site2/website-next/docs/io-file.md
index c1d405e..aea0324 100644
--- a/site2/website-next/docs/io-file.md
+++ b/site2/website-next/docs/io-file.md
@@ -3,7 +3,3 @@ id: io-file
 title: File Connector
 sidebar_label: "File Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-flume-sink.md b/site2/website-next/docs/io-flume-sink.md
index 5c6f8e2..874bc97 100644
--- a/site2/website-next/docs/io-flume-sink.md
+++ b/site2/website-next/docs/io-flume-sink.md
@@ -4,10 +4,6 @@ title: Flume sink connector
 sidebar_label: "Flume sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Flume sink connector pulls messages from Pulsar topics to logs.
 
 ## Configuration
@@ -35,11 +31,13 @@ Before using the Flume sink connector, you need to create a configuration file t
   ```json
   
   {
-      "name": "a1",
-      "confFile": "sink.conf",
-      "noReloadConf": "false",
-      "zkConnString": "",
-      "zkBasePath": ""
+     "configs": {
+        "name": "a1",
+        "confFile": "sink.conf",
+        "noReloadConf": "false",
+        "zkConnString": "",
+        "zkBasePath": ""
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-flume-source.md b/site2/website-next/docs/io-flume-source.md
index 25a75cd..b89bd38 100644
--- a/site2/website-next/docs/io-flume-source.md
+++ b/site2/website-next/docs/io-flume-source.md
@@ -4,10 +4,6 @@ title: Flume source connector
 sidebar_label: "Flume source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Flume source connector pulls messages from logs to Pulsar topics.
 
 ## Configuration
@@ -35,11 +31,13 @@ Before using the Flume source connector, you need to create a configuration file
   ```json
   
   {
-      "name": "a1",
-      "confFile": "source.conf",
-      "noReloadConf": "false",
-      "zkConnString": "",
-      "zkBasePath": ""
+     "configs": {
+        "name": "a1",
+        "confFile": "source.conf",
+        "noReloadConf": "false",
+        "zkConnString": "",
+        "zkBasePath": ""
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-hbase-sink.md b/site2/website-next/docs/io-hbase-sink.md
index de9baf1..4573483 100644
--- a/site2/website-next/docs/io-hbase-sink.md
+++ b/site2/website-next/docs/io-hbase-sink.md
@@ -4,10 +4,6 @@ title: HBase sink connector
 sidebar_label: "HBase sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The HBase sink connector pulls the messages from Pulsar topics 
 and persists the messages to HBase tables
 
@@ -39,14 +35,16 @@ Before using the HBase sink connector, you need to create a configuration file t
   ```json
   
   {
-      "hbaseConfigResources": "hbase-site.xml",
-      "zookeeperQuorum": "localhost",
-      "zookeeperClientPort": "2181",
-      "zookeeperZnodeParent": "/hbase",
-      "tableName": "pulsar_hbase",
-      "rowKeyName": "rowKey",
-      "familyName": "info",
-      "qualifierNames": [ 'name', 'address', 'age']
+     "configs": {
+        "hbaseConfigResources": "hbase-site.xml",
+        "zookeeperQuorum": "localhost",
+        "zookeeperClientPort": "2181",
+        "zookeeperZnodeParent": "/hbase",
+        "tableName": "pulsar_hbase",
+        "rowKeyName": "rowKey",
+        "familyName": "info",
+        "qualifierNames": [ 'name', 'address', 'age']
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-hbase.md b/site2/website-next/docs/io-hbase.md
index a54f2a7..ac64259 100644
--- a/site2/website-next/docs/io-hbase.md
+++ b/site2/website-next/docs/io-hbase.md
@@ -3,7 +3,3 @@ id: io-hbase
 title: hbase Connector
 sidebar_label: "hbase Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-hdfs.md b/site2/website-next/docs/io-hdfs.md
index e4ef72e..e30a40b 100644
--- a/site2/website-next/docs/io-hdfs.md
+++ b/site2/website-next/docs/io-hdfs.md
@@ -3,7 +3,3 @@ id: io-hdfs
 title: Hdfs Connector
 sidebar_label: "Hdfs Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-hdfs2-sink.md b/site2/website-next/docs/io-hdfs2-sink.md
index db39286..07b89ab 100644
--- a/site2/website-next/docs/io-hdfs2-sink.md
+++ b/site2/website-next/docs/io-hdfs2-sink.md
@@ -4,10 +4,6 @@ title: HDFS2 sink connector
 sidebar_label: "HDFS2 sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The HDFS2 sink connector pulls the messages from Pulsar topics 
 and persists the messages to HDFS files.
 
@@ -41,12 +37,14 @@ Before using the HDFS2 sink connector, you need to create a configuration file t
   ```json
   
   {
-      "hdfsConfigResources": "core-site.xml",
-      "directory": "/foo/bar",
-      "filenamePrefix": "prefix",
-      "fileExtension": ".log",
-      "compression": "SNAPPY",
-      "subdirectoryPattern": "yyyy-MM-dd"
+     "configs": {
+        "hdfsConfigResources": "core-site.xml",
+        "directory": "/foo/bar",
+        "filenamePrefix": "prefix",
+        "fileExtension": ".log",
+        "compression": "SNAPPY",
+        "subdirectoryPattern": "yyyy-MM-dd"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-hdfs3-sink.md b/site2/website-next/docs/io-hdfs3-sink.md
index fbbb3ee..5c62790 100644
--- a/site2/website-next/docs/io-hdfs3-sink.md
+++ b/site2/website-next/docs/io-hdfs3-sink.md
@@ -4,10 +4,6 @@ title: HDFS3 sink connector
 sidebar_label: "HDFS3 sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The HDFS3 sink connector pulls the messages from Pulsar topics 
 and persists the messages to HDFS files.
 
@@ -40,10 +36,12 @@ Before using the HDFS3 sink connector, you need to create a configuration file t
   ```json
   
   {
-      "hdfsConfigResources": "core-site.xml",
-      "directory": "/foo/bar",
-      "filenamePrefix": "prefix",
-      "compression": "SNAPPY"
+     "configs": {
+        "hdfsConfigResources": "core-site.xml",
+        "directory": "/foo/bar",
+        "filenamePrefix": "prefix",
+        "compression": "SNAPPY"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-influxdb-sink.md b/site2/website-next/docs/io-influxdb-sink.md
index 647ee5d..5348511 100644
--- a/site2/website-next/docs/io-influxdb-sink.md
+++ b/site2/website-next/docs/io-influxdb-sink.md
@@ -4,10 +4,6 @@ title: InfluxDB sink connector
 sidebar_label: "InfluxDB sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The InfluxDB sink connector pulls messages from Pulsar topics 
 and persists the messages to InfluxDB.
 
@@ -48,25 +44,27 @@ The configuration of the InfluxDB sink connector has the following properties.
 ### Example
 Before using the InfluxDB sink connector, you need to create a configuration file through one of the following methods.
 #### InfluxDBv2
+
 * JSON
 
   ```json
   
   {
-      "influxdbUrl": "http://localhost:9999",
-      "organization": "example-org",
-      "bucket": "example-bucket",
-      "token": "xxxx",
-      "precision": "ns",
-      "logLevel": "NONE",
-      "gzipEnable": false,
-      "batchTimeMs": 1000,
-      "batchSize": 100
+     "configs": {
+        "influxdbUrl": "http://localhost:9999",
+        "organization": "example-org",
+        "bucket": "example-bucket",
+        "token": "xxxx",
+        "precision": "ns",
+        "logLevel": "NONE",
+        "gzipEnable": false,
+        "batchTimeMs": 1000,
+        "batchSize": 100
+     }
   }
   
   ```
 
-  
 * YAML
 
   ```yaml
@@ -84,7 +82,6 @@ Before using the InfluxDB sink connector, you need to create a configuration fil
   
   ```
 
-  
 #### InfluxDBv1
 
 * JSON 
@@ -92,14 +89,16 @@ Before using the InfluxDB sink connector, you need to create a configuration fil
   ```json
   
   {
-      "influxdbUrl": "http://localhost:8086",
-      "database": "test_db",
-      "consistencyLevel": "ONE",
-      "logLevel": "NONE",
-      "retentionPolicy": "autogen",
-      "gzipEnable": false,
-      "batchTimeMs": 1000,
-      "batchSize": 100
+     "configs": {
+        "influxdbUrl": "http://localhost:8086",
+        "database": "test_db",
+        "consistencyLevel": "ONE",
+        "logLevel": "NONE",
+        "retentionPolicy": "autogen",
+        "gzipEnable": false,
+        "batchTimeMs": 1000,
+        "batchSize": 100
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-influxdb.md b/site2/website-next/docs/io-influxdb.md
index 5a5f3d60..e0106a5 100644
--- a/site2/website-next/docs/io-influxdb.md
+++ b/site2/website-next/docs/io-influxdb.md
@@ -3,7 +3,3 @@ id: io-influxdb
 title: InfluxDB Connector
 sidebar_label: "InfluxDB Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-jdbc-sink.md b/site2/website-next/docs/io-jdbc-sink.md
index 6b0672f..bc5e528 100644
--- a/site2/website-next/docs/io-jdbc-sink.md
+++ b/site2/website-next/docs/io-jdbc-sink.md
@@ -4,10 +4,6 @@ title: JDBC sink connector
 sidebar_label: "JDBC sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The JDBC sink connectors allow pulling messages from Pulsar topics 
 and persists the messages to ClickHouse, MariaDB, PostgreSQL, and SQLite.
 
@@ -37,10 +33,12 @@ The configuration of all JDBC sink connectors has the following properties.
   ```json
   
   {
-      "userName": "clickhouse",
-      "password": "password",
-      "jdbcUrl": "jdbc:clickhouse://localhost:8123/pulsar_clickhouse_jdbc_sink",
-      "tableName": "pulsar_clickhouse_jdbc_sink"
+     "configs" {
+        "userName": "clickhouse",
+        "password": "password",
+        "jdbcUrl": "jdbc:clickhouse://localhost:8123/pulsar_clickhouse_jdbc_sink",
+        "tableName": "pulsar_clickhouse_jdbc_sink"
+     }
   }
   
   ```
@@ -69,10 +67,12 @@ The configuration of all JDBC sink connectors has the following properties.
   ```json
   
   {
-      "userName": "mariadb",
-      "password": "password",
-      "jdbcUrl": "jdbc:mariadb://localhost:3306/pulsar_mariadb_jdbc_sink",
-      "tableName": "pulsar_mariadb_jdbc_sink"
+     "configs": {
+        "userName": "mariadb",
+        "password": "password",
+        "jdbcUrl": "jdbc:mariadb://localhost:3306/pulsar_mariadb_jdbc_sink",
+        "tableName": "pulsar_mariadb_jdbc_sink"
+     }
   }
   
   ```
@@ -103,10 +103,12 @@ Before using the JDBC PostgreSQL sink connector, you need to create a configurat
   ```json
   
   {
-      "userName": "postgres",
-      "password": "password",
-      "jdbcUrl": "jdbc:postgresql://localhost:5432/pulsar_postgres_jdbc_sink",
-      "tableName": "pulsar_postgres_jdbc_sink"
+     "configs": {
+        "userName": "postgres",
+        "password": "password",
+        "jdbcUrl": "jdbc:postgresql://localhost:5432/pulsar_postgres_jdbc_sink",
+        "tableName": "pulsar_postgres_jdbc_sink"
+     }
   }
   
   ```
@@ -137,8 +139,10 @@ For more information on **how to use this JDBC sink connector**, see [connect Pu
   ```json
   
   {
-      "jdbcUrl": "jdbc:sqlite:db.sqlite",
-      "tableName": "pulsar_sqlite_jdbc_sink"
+     "configs": {
+        "jdbcUrl": "jdbc:sqlite:db.sqlite",
+        "tableName": "pulsar_sqlite_jdbc_sink"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-jdbc.md b/site2/website-next/docs/io-jdbc.md
index ef09bcf..9b17623 100644
--- a/site2/website-next/docs/io-jdbc.md
+++ b/site2/website-next/docs/io-jdbc.md
@@ -3,7 +3,3 @@ id: io-jdbc
 title: JDBC Connector
 sidebar_label: "JDBC Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-kafka-sink.md b/site2/website-next/docs/io-kafka-sink.md
index 2ca038d..4ff82bd 100644
--- a/site2/website-next/docs/io-kafka-sink.md
+++ b/site2/website-next/docs/io-kafka-sink.md
@@ -4,10 +4,6 @@ title: Kafka sink connector
 sidebar_label: "Kafka sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kafka sink connector pulls messages from Pulsar topics and persists the messages
 to Kafka topics.
 
@@ -40,19 +36,20 @@ Before using the Kafka sink connector, you need to create a configuration file t
   ```json
   
   {
-      "bootstrapServers": "localhost:6667",
-      "topic": "test",
-      "acks": "1",
-      "batchSize": "16384",
-      "maxRequestSize": "1048576",
-      "producerConfigProperties":
-       {
-          "client.id": "test-pulsar-producer",
-          "security.protocol": "SASL_PLAINTEXT",
-          "sasl.mechanism": "GSSAPI",
-          "sasl.kerberos.service.name": "kafka",
-          "acks": "all" 
-       }
+     "configs": {
+        "bootstrapServers": "localhost:6667",
+        "topic": "test",
+        "acks": "1",
+        "batchSize": "16384",
+        "maxRequestSize": "1048576",
+        "producerConfigProperties": {
+           "client.id": "test-pulsar-producer",
+           "security.protocol": "SASL_PLAINTEXT",
+           "sasl.mechanism": "GSSAPI",
+           "sasl.kerberos.service.name": "kafka",
+           "acks": "all" 
+        }
+     }
   }
 
 * YAML
diff --git a/site2/website-next/docs/io-kafka-source.md b/site2/website-next/docs/io-kafka-source.md
index ce54394..befd0d8 100644
--- a/site2/website-next/docs/io-kafka-source.md
+++ b/site2/website-next/docs/io-kafka-source.md
@@ -4,10 +4,6 @@ title: Kafka source connector
 sidebar_label: "Kafka source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kafka source connector pulls messages from Kafka topics and persists the messages
 to Pulsar topics.
 
@@ -73,11 +69,13 @@ Before using the Kafka source connector, you need to create a configuration file
   ```json
   
   {
-      "bootstrapServers": "pulsar-kafka:9092",
-      "groupId": "test-pulsar-io",
-      "topic": "my-topic",
-      "sessionTimeoutMs": "10000",
-      "autoCommitEnabled": false
+     "configs": {
+        "bootstrapServers": "pulsar-kafka:9092",
+        "groupId": "test-pulsar-io",
+        "topic": "my-topic",
+        "sessionTimeoutMs": "10000",
+        "autoCommitEnabled": false
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-kafka.md b/site2/website-next/docs/io-kafka.md
index 6a21299..8a7face 100644
--- a/site2/website-next/docs/io-kafka.md
+++ b/site2/website-next/docs/io-kafka.md
@@ -3,7 +3,3 @@ id: io-kafka
 title: Kafka Connector
 sidebar_label: "Kafka Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-kinesis-sink.md b/site2/website-next/docs/io-kinesis-sink.md
index 13523ef..a84685d 100644
--- a/site2/website-next/docs/io-kinesis-sink.md
+++ b/site2/website-next/docs/io-kinesis-sink.md
@@ -4,10 +4,6 @@ title: Kinesis sink connector
 sidebar_label: "Kinesis sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kinesis sink connector pulls data from Pulsar and persists data into Amazon Kinesis.
 
 ## Configuration
@@ -57,12 +53,14 @@ Before using the Kinesis sink connector, you need to create a configuration file
   ```json
   
   {
-      "awsEndpoint": "some.endpoint.aws",
-      "awsRegion": "us-east-1",
-      "awsKinesisStreamName": "my-stream",
-      "awsCredentialPluginParam": "{\"accessKey\":\"myKey\",\"secretKey\":\"my-Secret\"}",
-      "messageFormat": "ONLY_RAW_PAYLOAD",
-      "retainOrdering": "true"
+     "configs": {
+        "awsEndpoint": "some.endpoint.aws",
+        "awsRegion": "us-east-1",
+        "awsKinesisStreamName": "my-stream",
+        "awsCredentialPluginParam": "{\"accessKey\":\"myKey\",\"secretKey\":\"my-Secret\"}",
+        "messageFormat": "ONLY_RAW_PAYLOAD",
+        "retainOrdering": "true"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-kinesis-source.md b/site2/website-next/docs/io-kinesis-source.md
index 1402839..f0f0ad7 100644
--- a/site2/website-next/docs/io-kinesis-source.md
+++ b/site2/website-next/docs/io-kinesis-source.md
@@ -4,10 +4,6 @@ title: Kinesis source connector
 sidebar_label: "Kinesis source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Kinesis source connector pulls data from Amazon Kinesis and persists data into Pulsar.
 
 This connector uses the [Kinesis Consumer Library](https://github.com/awslabs/amazon-kinesis-client) (KCL) to do the actual consuming of messages. The KCL uses DynamoDB to track state for consumers.
@@ -48,17 +44,19 @@ Before using the Kinesis source connector, you need to create a configuration fi
   ```json
   
   {
-      "awsEndpoint": "https://some.endpoint.aws",
-      "awsRegion": "us-east-1",
-      "awsKinesisStreamName": "my-stream",
-      "awsCredentialPluginParam": "{\"accessKey\":\"myKey\",\"secretKey\":\"my-Secret\"}",
-      "applicationName": "My test application",
-      "checkpointInterval": "30000",
-      "backoffTime": "4000",
-      "numRetries": "3",
-      "receiveQueueSize": 2000,
-      "initialPositionInStream": "TRIM_HORIZON",
-      "startAtTime": "2019-03-05T19:28:58.000Z"
+     "configs": {
+        "awsEndpoint": "https://some.endpoint.aws",
+        "awsRegion": "us-east-1",
+        "awsKinesisStreamName": "my-stream",
+        "awsCredentialPluginParam": "{\"accessKey\":\"myKey\",\"secretKey\":\"my-Secret\"}",
+        "applicationName": "My test application",
+        "checkpointInterval": "30000",
+        "backoffTime": "4000",
+        "numRetries": "3",
+        "receiveQueueSize": 2000,
+        "initialPositionInStream": "TRIM_HORIZON",
+        "startAtTime": "2019-03-05T19:28:58.000Z"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-kinesis.md b/site2/website-next/docs/io-kinesis.md
index 1b18b65..ab5e5da 100644
--- a/site2/website-next/docs/io-kinesis.md
+++ b/site2/website-next/docs/io-kinesis.md
@@ -3,7 +3,3 @@ id: io-kinesis
 title: AWS Kinesis Connector
 sidebar_label: "AWS Kinesis Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-mongo-sink.md b/site2/website-next/docs/io-mongo-sink.md
index aea2ad0..b3fe1a2 100644
--- a/site2/website-next/docs/io-mongo-sink.md
+++ b/site2/website-next/docs/io-mongo-sink.md
@@ -4,10 +4,6 @@ title: MongoDB sink connector
 sidebar_label: "MongoDB sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The MongoDB sink connector pulls messages from Pulsar topics 
 and persists the messages to collections.
 
@@ -35,11 +31,13 @@ Before using the Mongo sink connector, you need to create a configuration file t
   ```json
   
   {
-      "mongoUri": "mongodb://localhost:27017",
-      "database": "pulsar",
-      "collection": "messages",
-      "batchSize": "2",
-      "batchTimeMs": "500"
+     "configs": {
+        "mongoUri": "mongodb://localhost:27017",
+        "database": "pulsar",
+        "collection": "messages",
+        "batchSize": "2",
+        "batchTimeMs": "500"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-mongo.md b/site2/website-next/docs/io-mongo.md
index f0b5f0b..d1e6192 100644
--- a/site2/website-next/docs/io-mongo.md
+++ b/site2/website-next/docs/io-mongo.md
@@ -3,7 +3,3 @@ id: io-mongo
 title: MongoDB Connector
 sidebar_label: "MongoDB Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-netty-source.md b/site2/website-next/docs/io-netty-source.md
index 5f04565..db11d47 100644
--- a/site2/website-next/docs/io-netty-source.md
+++ b/site2/website-next/docs/io-netty-source.md
@@ -4,10 +4,6 @@ title: Netty source connector
 sidebar_label: "Netty source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Netty source connector opens a port that accepts incoming data via the configured network protocol 
 and publish it to user-defined Pulsar topics.
 
@@ -36,10 +32,12 @@ Before using the Netty source connector, you need to create a configuration file
   ```json
   
   {
-      "type": "tcp",
-      "host": "127.0.0.1",
-      "port": "10911",
-      "numberOfThreads": "1"
+     "configs": {
+        "type": "tcp",
+        "host": "127.0.0.1",
+        "port": "10911",
+        "numberOfThreads": "1"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-netty.md b/site2/website-next/docs/io-netty.md
index 928a480..029a40b 100644
--- a/site2/website-next/docs/io-netty.md
+++ b/site2/website-next/docs/io-netty.md
@@ -3,7 +3,3 @@ id: io-netty
 title: Netty Tcp or Udp Connector
 sidebar_label: "Netty Tcp or Udp Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-nsq-source.md b/site2/website-next/docs/io-nsq-source.md
index 7c39ea9..88c88c5 100644
--- a/site2/website-next/docs/io-nsq-source.md
+++ b/site2/website-next/docs/io-nsq-source.md
@@ -4,10 +4,6 @@ title: NSQ source connector
 sidebar_label: "NSQ source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The NSQ source connector receives messages from NSQ topics 
 and writes messages to Pulsar topics.
 
diff --git a/site2/website-next/docs/io-nsq.md b/site2/website-next/docs/io-nsq.md
index 8bb98af..af40f80 100644
--- a/site2/website-next/docs/io-nsq.md
+++ b/site2/website-next/docs/io-nsq.md
@@ -2,7 +2,4 @@
 id: io-nsq
 title: NSQ Connector
 sidebar_label: "NSQ Connector"
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
+---
\ No newline at end of file
diff --git a/site2/website-next/docs/io-overview.md b/site2/website-next/docs/io-overview.md
index 640a84f..810de78 100644
--- a/site2/website-next/docs/io-overview.md
+++ b/site2/website-next/docs/io-overview.md
@@ -72,16 +72,7 @@ Here takes **Admin CLI** as an example. For more information about **REST API**
 
 <Tabs 
   defaultValue="Source"
-  values={[
-  {
-    "label": "Source",
-    "value": "Source"
-  },
-  {
-    "label": "Sink",
-    "value": "Sink"
-  }
-]}>
+  values={[{"label":"Source","value":"Source"},{"label":"Sink","value":"Sink"}]}>
 
 <TabItem value="Source">
 
@@ -126,16 +117,7 @@ Here takes **Admin CLI** as an example. For more information about **REST API**
 
 <Tabs 
   defaultValue="Source"
-  values={[
-  {
-    "label": "Source",
-    "value": "Source"
-  },
-  {
-    "label": "Sink",
-    "value": "Sink"
-  }
-]}>
+  values={[{"label":"Source","value":"Source"},{"label":"Sink","value":"Sink"}]}>
 
 <TabItem value="Source">
 
diff --git a/site2/website-next/docs/io-quickstart.md b/site2/website-next/docs/io-quickstart.md
index 5215afc..568fcc5 100644
--- a/site2/website-next/docs/io-quickstart.md
+++ b/site2/website-next/docs/io-quickstart.md
@@ -4,10 +4,6 @@ title: How to connect Pulsar to database
 sidebar_label: "Get started"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This tutorial provides a hands-on look at how you can move data out of Pulsar without writing a single line of code.  
 
 It is helpful to review the [concepts](io-overview) for Pulsar I/O with running the steps in this guide to gain a deeper understanding.   
diff --git a/site2/website-next/docs/io-rabbitmq-sink.md b/site2/website-next/docs/io-rabbitmq-sink.md
index 131d015..6e4dedc 100644
--- a/site2/website-next/docs/io-rabbitmq-sink.md
+++ b/site2/website-next/docs/io-rabbitmq-sink.md
@@ -4,10 +4,6 @@ title: RabbitMQ sink connector
 sidebar_label: "RabbitMQ sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The RabbitMQ sink connector pulls messages from Pulsar topics 
 and persist the messages to RabbitMQ queues.
 
@@ -46,20 +42,22 @@ Before using the RabbitMQ sink connector, you need to create a configuration fil
   ```json
   
   {
-      "host": "localhost",
-      "port": "5672",
-      "virtualHost": "/",
-      "username": "guest",
-      "password": "guest",
-      "queueName": "test-queue",
-      "connectionName": "test-connection",
-      "requestedChannelMax": "0",
-      "requestedFrameMax": "0",
-      "connectionTimeout": "60000",
-      "handshakeTimeout": "10000",
-      "requestedHeartbeat": "60",
-      "exchangeName": "test-exchange",
-      "routingKey": "test-key"
+     "configs": {
+        "host": "localhost",
+        "port": "5672",
+        "virtualHost": "/",
+        "username": "guest",
+        "password": "guest",
+        "queueName": "test-queue",
+        "connectionName": "test-connection",
+        "requestedChannelMax": "0",
+        "requestedFrameMax": "0",
+        "connectionTimeout": "60000",
+        "handshakeTimeout": "10000",
+        "requestedHeartbeat": "60",
+        "exchangeName": "test-exchange",
+        "routingKey": "test-key"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-rabbitmq-source.md b/site2/website-next/docs/io-rabbitmq-source.md
index 9fcf2c0..42a35ae 100644
--- a/site2/website-next/docs/io-rabbitmq-source.md
+++ b/site2/website-next/docs/io-rabbitmq-source.md
@@ -4,10 +4,6 @@ title: RabbitMQ source connector
 sidebar_label: "RabbitMQ source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The RabbitMQ source connector receives messages from RabbitMQ clusters 
 and writes messages to Pulsar topics.
 
@@ -44,21 +40,23 @@ Before using the RabbitMQ source connector, you need to create a configuration f
   ```json
   
   {
-      "host": "localhost",
-      "port": "5672",
-      "virtualHost": "/",
-      "username": "guest",
-      "password": "guest",
-      "queueName": "test-queue",
-      "connectionName": "test-connection",
-      "requestedChannelMax": "0",
-      "requestedFrameMax": "0",
-      "connectionTimeout": "60000",
-      "handshakeTimeout": "10000",
-      "requestedHeartbeat": "60",
-      "prefetchCount": "0",
-      "prefetchGlobal": "false",
-      "passive": "false"
+     "configs": {
+        "host": "localhost",
+        "port": "5672",
+        "virtualHost": "/",
+        "username": "guest",
+        "password": "guest",
+        "queueName": "test-queue",
+        "connectionName": "test-connection",
+        "requestedChannelMax": "0",
+        "requestedFrameMax": "0",
+        "connectionTimeout": "60000",
+        "handshakeTimeout": "10000",
+        "requestedHeartbeat": "60",
+        "prefetchCount": "0",
+        "prefetchGlobal": "false",
+        "passive": "false"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-rabbitmq.md b/site2/website-next/docs/io-rabbitmq.md
index 96345cc..fa70fee 100644
--- a/site2/website-next/docs/io-rabbitmq.md
+++ b/site2/website-next/docs/io-rabbitmq.md
@@ -3,7 +3,3 @@ id: io-rabbitmq
 title: RabbitMQ Connector
 sidebar_label: "RabbitMQ Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-redis-sink.md b/site2/website-next/docs/io-redis-sink.md
index e2638c4..c07f98e 100644
--- a/site2/website-next/docs/io-redis-sink.md
+++ b/site2/website-next/docs/io-redis-sink.md
@@ -4,10 +4,6 @@ title: Redis sink connector
 sidebar_label: "Redis sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The  Redis sink connector pulls messages from Pulsar topics 
 and persists the messages to a Redis database.
 
@@ -46,14 +42,16 @@ Before using the Redis sink connector, you need to create a configuration file i
   ```json
   
   {
-      "redisHosts": "localhost:6379",
-      "redisPassword": "mypassword",
-      "redisDatabase": "0",
-      "clientMode": "Standalone",
-      "operationTimeout": "2000",
-      "batchSize": "1",
-      "batchTimeMs": "1000",
-      "connectTimeout": "3000"
+     "configs": {
+        "redisHosts": "localhost:6379",
+        "redisPassword": "mypassword",
+        "redisDatabase": "0",
+        "clientMode": "Standalone",
+        "operationTimeout": "2000",
+        "batchSize": "1",
+        "batchTimeMs": "1000",
+        "connectTimeout": "3000"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-redis.md b/site2/website-next/docs/io-redis.md
index ff6fafd..d5af670 100644
--- a/site2/website-next/docs/io-redis.md
+++ b/site2/website-next/docs/io-redis.md
@@ -3,7 +3,3 @@ id: io-redis
 title: redis Connector
 sidebar_label: "redis Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-solr-sink.md b/site2/website-next/docs/io-solr-sink.md
index 89e1289..ab0e40a 100644
--- a/site2/website-next/docs/io-solr-sink.md
+++ b/site2/website-next/docs/io-solr-sink.md
@@ -4,10 +4,6 @@ title: Solr sink connector
 sidebar_label: "Solr sink connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Solr sink connector pulls messages from Pulsar topics 
 and persists the messages to Solr collections.
 
@@ -41,12 +37,14 @@ Before using the Solr sink connector, you need to create a configuration file th
   ```json
   
   {
-      "solrUrl": "localhost:2181,localhost:2182/chroot",
-      "solrMode": "SolrCloud",
-      "solrCollection": "techproducts",
-      "solrCommitWithinMs": 100,
-      "username": "fakeuser",
-      "password": "fake@123"
+     "configs": {
+        "solrUrl": "localhost:2181,localhost:2182/chroot",
+        "solrMode": "SolrCloud",
+        "solrCollection": "techproducts",
+        "solrCommitWithinMs": 100,
+        "username": "fakeuser",
+        "password": "fake@123"
+     }
   }
   
   ```
diff --git a/site2/website-next/docs/io-solr.md b/site2/website-next/docs/io-solr.md
index 1405e69..a64131b 100644
--- a/site2/website-next/docs/io-solr.md
+++ b/site2/website-next/docs/io-solr.md
@@ -3,7 +3,3 @@ id: io-solr
 title: solr Connector
 sidebar_label: "solr Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-tcp.md b/site2/website-next/docs/io-tcp.md
index 8cd3207..bbb80d5 100644
--- a/site2/website-next/docs/io-tcp.md
+++ b/site2/website-next/docs/io-tcp.md
@@ -3,7 +3,3 @@ id: io-tcp
 title: Netty Tcp Connector
 sidebar_label: "Netty Tcp Connector"
 ---
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
diff --git a/site2/website-next/docs/io-twitter-source.md b/site2/website-next/docs/io-twitter-source.md
index 3fa0db4..6cb0a09 100644
--- a/site2/website-next/docs/io-twitter-source.md
+++ b/site2/website-next/docs/io-twitter-source.md
@@ -4,10 +4,6 @@ title: Twitter Firehose source connector
 sidebar_label: "Twitter Firehose source connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Twitter Firehose source connector receives tweets from Twitter Firehose and 
 writes the tweets to Pulsar topics.
 
diff --git a/site2/website-next/docs/io-twitter.md b/site2/website-next/docs/io-twitter.md
index 57b8b3df..5fd3f16 100644
--- a/site2/website-next/docs/io-twitter.md
+++ b/site2/website-next/docs/io-twitter.md
@@ -4,7 +4,3 @@ title: Twitter Firehose Connector
 sidebar_label: "Twitter Firehose Connector"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
diff --git a/site2/website-next/docs/io-use.md b/site2/website-next/docs/io-use.md
index 4957184..65daceb 100644
--- a/site2/website-next/docs/io-use.md
+++ b/site2/website-next/docs/io-use.md
@@ -192,20 +192,7 @@ Create a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -294,20 +281,7 @@ Create a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -400,16 +374,7 @@ Start a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -444,16 +409,7 @@ Start a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -492,12 +448,7 @@ Run a source connector locally.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -521,12 +472,7 @@ Run a sink connector locally.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -564,20 +510,7 @@ Get the information of a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -688,20 +621,7 @@ Get the information of a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -809,20 +729,7 @@ Get the list of all running source connectors.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -879,20 +786,7 @@ Get the list of all running sink connectors.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -953,20 +847,7 @@ Get the current status of a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -990,7 +871,7 @@ For more information, see [here](io-cli.md#status).
 * Gets the current status of a **specified** source connector.
 
   Send a `GET` request to this endpoint: {@inject: endpoint|GET|/admin/v3/sources/:tenant/:namespace/:sourceName/:instanceId/status|operation/getSourceStatus?version=@pulsar:version_number@}
-  
+
 </TabItem>
 <TabItem value="Java Admin API">
 
@@ -1060,20 +941,7 @@ Get the current status of a Pulsar sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1173,20 +1041,7 @@ Update a running Pulsar source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1204,7 +1059,7 @@ For more information, see [here](io-cli.md#update).
 <TabItem value="REST API">
 
 Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v3/sources/:tenant/:namespace/:sourceName|operation/updateSource?version=@pulsar:version_number@}
-  
+
 </TabItem>
 <TabItem value="Java Admin API">
 
@@ -1279,20 +1134,7 @@ Update a running Pulsar sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1310,7 +1152,7 @@ For more information, see [here](io-cli.md#update-1).
 <TabItem value="REST API">
 
 Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v3/sinks/:tenant/:namespace/:sinkName|operation/updateSink?version=@pulsar:version_number@}
-  
+
 </TabItem>
 <TabItem value="Java Admin API">
 
@@ -1391,20 +1233,7 @@ Stop a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1498,20 +1327,7 @@ Stop a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1611,20 +1427,7 @@ Restart a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1718,20 +1521,7 @@ Restart a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1831,20 +1621,7 @@ Delete a source connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -1908,20 +1685,7 @@ Delete a sink connector.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
diff --git a/site2/website-next/docs/performance-pulsar-perf.md b/site2/website-next/docs/performance-pulsar-perf.md
index 1d9c0f9..5bf8dd2 100644
--- a/site2/website-next/docs/performance-pulsar-perf.md
+++ b/site2/website-next/docs/performance-pulsar-perf.md
@@ -4,10 +4,6 @@ title: Pulsar Perf
 sidebar_label: "Pulsar Perf"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 The Pulsar Perf is a built-in performance test tool for Apache Pulsar. You can use the Pulsar Perf to test message writing or reading performance. For detailed information about performance tuning, see [here](https://streamnative.io/en/blog/tech/2021-01-14-pulsar-architecture-performance-tuning).
 
 ## Produce messages
@@ -40,7 +36,7 @@ After the command is executed, the test data is continuously output on the Conso
 
 ```
 
-From the above test data, you can get the throughput statistics and the write latency statistics. The aggregated statistics is printed when the Pulsar Perf is stopped. You can press **Ctrl**+**C** to stop the Pulsar Perf. After the Pulsar Perf is stopped, the [HdrHistogram](http://hdrhistogram.github.io/HdrHistogram/) formatted test result appears under your directory. The document looks like `perf-producer-1589370810837.hgrm`. You can also check the test result through [HdrHistogram Plo [...]
+From the above test data, you can get the throughput statistics and the write latency statistics. The aggregated statistics is printed when the Pulsar Perf is stopped. You can press **Ctrl**+**C** to stop the Pulsar Perf. If you specify a filename with the `--histogram-file` parameter, a file with the [HdrHistogram](http://hdrhistogram.github.io/HdrHistogram/) formatted test result appears under your directory after Pulsar Perf is stopped. You can also check the test result through [HdrH [...]
 
 ### Configuration options for `pulsar-perf produce`
 
@@ -69,6 +65,7 @@ The following table lists configuration options available for the `pulsar-perf p
 | format-class | Set the custom formatter class name. | org.apache.pulsar.testclient.DefaultMessageFormatter |
 | format-payload | Configure whether to format %i as a message index in the stream from producer and/or %t as the timestamp nanoseconds. | false |
 | help | Configure the help message. | false |
+| histogram-file | HdrHistogram output file | N/A |
 | max-connections | Set the maximum number of TCP connections to a single broker. | 100 |
 | max-outstanding | Set the maximum number of outstanding messages. | 1000 |
 | max-outstanding-across-partitions | Set the maximum number of outstanding messages across partitions. | 50000 |
@@ -143,6 +140,7 @@ The following table lists configuration options available for the `pulsar-perf c
 | encryption-key-name | Set the name of the public key used to encrypt the payload. | N/A |
 | encryption-key-value-file | Set the file which contains the public key used to encrypt the payload. | N/A |
 | help | Configure the help message. | false |
+| histogram-file | HdrHistogram output file | N/A |
 | expire_time_incomplete_chunked_messages | Set the expiration time for incomplete chunk messages (in milliseconds). | 0 |
 | max-connections | Set the maximum number of TCP connections to a single broker. | 100 |
 | max_chunked_msg | Set the max pending chunk messages. | 0 |
diff --git a/site2/website-next/docs/reference-cli-tools.md b/site2/website-next/docs/reference-cli-tools.md
index f07558b..3bafe1b 100644
--- a/site2/website-next/docs/reference-cli-tools.md
+++ b/site2/website-next/docs/reference-cli-tools.md
@@ -4,10 +4,6 @@ title: Pulsar command-line tools
 sidebar_label: "Pulsar CLI tools"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar offers several command-line tools that you can use for managing Pulsar installations, performance testing, using command-line producers and consumers, and more.
 
 All Pulsar command-line tools can be run from the `bin` directory of your [installed Pulsar package](getting-started-standalone). The following tools are currently documented:
@@ -29,6 +25,7 @@ All Pulsar command-line tools can be run from the `bin` directory of your [insta
 > 
 > ```
 
+
 ## `pulsar`
 
 The pulsar tool is used to start Pulsar components, such as bookies and ZooKeeper, in the foreground.
@@ -387,6 +384,7 @@ Options
 |`-m`, `--messages`|Comma-separated string of messages to send; either -m or -f must be specified|[]|
 |`-n`, `--num-produce`|The number of times to send the message(s); the count of messages/files * num-produce should be below 1000|1|
 |`-r`, `--rate`|Rate (in messages per second) at which to produce; a value 0 means to produce messages as fast as possible|0.0|
+|`-db`, `--disable-batching`|Disable batch sending of messages|false|
 |`-c`, `--chunking`|Split the message and publish in chunks if the message size is larger than the allowed max size|false|
 |`-s`, `--separator`|Character to split messages string with.|","|
 |`-k`, `--key`|Message key to add|key=value string, like k1=v1,k2=v2.|
@@ -417,7 +415,7 @@ Options
 |`-s`, `--subscription-name`|Subscription name||
 |`-t`, `--subscription-type`|The type of the subscription. Possible values: Exclusive, Shared, Failover, Key_Shared.|Exclusive|
 |`-p`, `--subscription-position`|The position of the subscription. Possible values: Latest, Earliest.|Latest|
-|`-m`, `--subscription-mode`|Subscription mode.|Durable|
+|`-m`, `--subscription-mode`|Subscription mode. Possible values: Durable, NonDurable.|Durable|
 |`-q`, `--queue-size`|The size of consumer's receiver queue.|0|
 |`-mc`, `--max_chunked_msg`|Max pending chunk messages.|0|
 |`-ac`, `--auto_ack_chunk_q_full`|Auto ack for the oldest message in consumer's receiver queue if the queue full.|false|
diff --git a/site2/website-next/docs/reference-configuration.md b/site2/website-next/docs/reference-configuration.md
index a064609..1908149 100644
--- a/site2/website-next/docs/reference-configuration.md
+++ b/site2/website-next/docs/reference-configuration.md
@@ -4,10 +4,6 @@ title: Pulsar configuration
 sidebar_label: "Pulsar configuration"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 
 
@@ -204,8 +200,7 @@ brokerServiceCompactionThresholdInBytes|If the estimated backlog size is greater
 |tlsTrustCertsFilePath| Path for the trusted TLS certificate file. This cert is used to verify that any certs presented by connecting clients are signed by a certificate authority. If this verification fails, then the certs are untrusted and the connections are dropped. ||
 |tlsAllowInsecureConnection| Accept untrusted TLS certificate from client. If it is set to `true`, a client with a cert which cannot be verified with the 'tlsTrustCertsFilePath' cert will be allowed to connect to the server, though the cert will not be used for client authentication. |false|
 |tlsProtocols|Specify the tls protocols the broker will use to negotiate during TLS Handshake. Multiple values can be specified, separated by commas. Example:- ```TLSv1.3```, ```TLSv1.2``` ||
-|tlsCiphers|Specify the tls cipher the broker will use to negotiate during TLS Handshake. Multiple values can be specified, separated by commas. Example:- ```
-
+|tlsCiphers|Specify the tls cipher the broker will use to negotiate during TLS Handshake. Multiple values can be specified, separated by commas. Example:- ```TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256```||
 |tlsEnabledWithKeyStore| Enable TLS with KeyStore type configuration in broker |false|
 |tlsProvider| TLS Provider for KeyStore type ||
 |tlsKeyStoreType| LS KeyStore type configuration in broker: JKS, PKCS12 |JKS|
@@ -219,6 +214,7 @@ brokerServiceCompactionThresholdInBytes|If the estimated backlog size is greater
 |brokerClientTlsCiphers| Specify the tls cipher the internal client will use to negotiate during TLS Handshake. (a comma-separated list of ciphers) e.g.  [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]||
 |brokerClientTlsProtocols|Specify the tls protocols the broker will use to negotiate during TLS handshake. (a comma-separated list of protocol names). e.g.  `TLSv1.3`, `TLSv1.2` ||
 |ttlDurationDefaultInSeconds|The default Time to Live (TTL) for namespaces if the TTL is not configured at namespace policies. When the value is set to `0`, TTL is disabled. By default, TTL is disabled. |0|
+|tokenSettingPrefix| Configure the prefix of the token-related settings, such as `tokenSecretKey`, `tokenPublicKey`, `tokenAuthClaim`, `tokenPublicAlg`, `tokenAudienceClaim`, and `tokenAudience`. ||
 |tokenSecretKey| Configure the secret key to be used to validate auth tokens. The key can be specified like: `tokenSecretKey=data:;base64,xxxxxxxxx` or `tokenSecretKey=file:///my/secret.key`.  Note: key file must be DER-encoded.||
 |tokenPublicKey| Configure the public key to be used to validate auth tokens. The key can be specified like: `tokenPublicKey=data:;base64,xxxxxxxxx` or `tokenPublicKey=file:///my/secret.key`.  Note: key file must be DER-encoded.||
 |tokenPublicAlg| Configure the algorithm to be used to validate auth tokens. This can be any of the asymettric algorithms supported by Java JWT (https://github.com/jwtk/jjwt#signature-algorithms-keys) |RS256|
@@ -457,8 +453,8 @@ You can set the log level and configuration in the  [log4j2.yaml](https://github
 | subscriptionExpirationTimeMinutes | How long to delete inactive subscriptions from last consumption. When it is set to 0, inactive subscriptions are not deleted automatically | 0 |
 | subscriptionRedeliveryTrackerEnabled | Enable subscription message redelivery tracker to send redelivery count to consumer. | true |
 |subscriptionKeySharedEnable|Whether to enable the Key_Shared subscription.|true|
-| subscriptionKeySharedUseConsistentHashing | In the Key_Shared subscription mode, with default AUTO_SPLIT mode, use splitting ranges or consistent hashing to reassign keys to new consumers. | false |
-| subscriptionKeySharedConsistentHashingReplicaPoints | In the Key_Shared subscription mode, the number of points in the consistent-hashing ring. The greater the number, the more equal the assignment of keys to consumers. | 100 |
+| subscriptionKeySharedUseConsistentHashing | In Key_Shared subscription type, with default AUTO_SPLIT mode, use splitting ranges or consistent hashing to reassign keys to new consumers. | false |
+| subscriptionKeySharedConsistentHashingReplicaPoints | In Key_Shared subscription type, the number of points in the consistent-hashing ring. The greater the number, the more equal the assignment of keys to consumers. | 100 |
 | subscriptionExpiryCheckIntervalInMinutes | How frequently to proactively check and purge expired subscription |5 |
 | brokerDeduplicationEnabled | Set the default behavior for message deduplication in the broker. This can be overridden per-namespace. If it is enabled, the broker rejects messages that are already stored in the topic. | false |
 | brokerDeduplicationMaxNumberOfProducers | Maximum number of producer information that it's going to be persisted for deduplication purposes | 10000 |
@@ -542,6 +538,7 @@ You can set the log level and configuration in the  [log4j2.yaml](https://github
 |brokerClientAuthenticationParameters|  The parameters that go along with the plugin specified using brokerClientAuthenticationPlugin.  | |
 |athenzDomainNames| Supported Athenz authentication provider domain names as a comma-separated list.  | |
 | anonymousUserRole | When this parameter is not empty, unauthenticated users perform as anonymousUserRole. | |
+|tokenSettingPrefix| Configure the prefix of the token related setting like `tokenSecretKey`, `tokenPublicKey`, `tokenAuthClaim`, `tokenPublicAlg`, `tokenAudienceClaim`, and `tokenAudience`. ||
 |tokenSecretKey| Configure the secret key to be used to validate auth tokens. The key can be specified like: `tokenSecretKey=data:;base64,xxxxxxxxx` or `tokenSecretKey=file:///my/secret.key`.  Note: key file must be DER-encoded.||
 |tokenPublicKey| Configure the public key to be used to validate auth tokens. The key can be specified like: `tokenPublicKey=data:;base64,xxxxxxxxx` or `tokenPublicKey=file:///my/secret.key`.  Note: key file must be DER-encoded.||
 |tokenAuthClaim| Specify the token claim that will be used as the authentication "principal" or "role". The "subject" field will be used if this is left blank ||
@@ -725,11 +722,11 @@ The [Pulsar proxy](concepts-architecture-overview.md#pulsar-proxy) can be config
 |tlsHostnameVerificationEnabled|  Whether the hostname is validated when the proxy creates a TLS connection with brokers  |false|
 |tlsRequireTrustedClientCertOnConnect|  Whether client certificates are required for TLS. Connections are rejected if the client certificate isn’t trusted. |false|
 |tlsProtocols|Specify the tls protocols the broker will use to negotiate during TLS Handshake. Multiple values can be specified, separated by commas. Example:- ```TLSv1.3```, ```TLSv1.2``` ||
-|tlsCiphers|Specify the tls cipher the broker will use to negotiate during TLS Handshake. Multiple values can be specified, separated by commas. Example:- ```
-
+|tlsCiphers|Specify the tls cipher the broker will use to negotiate during TLS Handshake. Multiple values can be specified, separated by commas. Example:- ```TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256```||
 | httpReverseProxyConfigs | HTTP directs to redirect to non-pulsar services | |
 | httpOutputBufferSize | HTTP output buffer size. The amount of data that will be buffered for HTTP requests before it is flushed to the channel. A larger buffer size may result in higher HTTP throughput though it may take longer for the client to see data. If using HTTP streaming via the reverse proxy, this should be set to the minimum value (1) so that clients see the data as soon as possible. | 32768 |
 | httpNumThreads | Number of threads to use for HTTP requests processing|  2 * Runtime.getRuntime().availableProcessors() |
+|tokenSettingPrefix| Configure the prefix of the token related setting like `tokenSecretKey`, `tokenPublicKey`, `tokenAuthClaim`, `tokenPublicAlg`, `tokenAudienceClaim`, and `tokenAudience`. ||
 |tokenSecretKey| Configure the secret key to be used to validate auth tokens. The key can be specified like: `tokenSecretKey=data:;base64,xxxxxxxxx` or `tokenSecretKey=file:///my/secret.key`.  Note: key file must be DER-encoded.||
 |tokenPublicKey| Configure the public key to be used to validate auth tokens. The key can be specified like: `tokenPublicKey=data:;base64,xxxxxxxxx` or `tokenPublicKey=file:///my/secret.key`. Note: key file must be DER-encoded.||
 |tokenAuthClaim| Specify the token claim that will be used as the authentication "principal" or "role". The "subject" field will be used if this is left blank ||
diff --git a/site2/website-next/docs/reference-connector-admin.md b/site2/website-next/docs/reference-connector-admin.md
index c4fe71c..0ead096 100644
--- a/site2/website-next/docs/reference-connector-admin.md
+++ b/site2/website-next/docs/reference-connector-admin.md
@@ -4,10 +4,6 @@ title: Connector Admin CLI
 sidebar_label: "Connector Admin CLI"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > **Important**
 >
 > For the latest and complete information about `Pulsar admin`, including commands, flags, descriptions, and more, see [Pulsar admin doc](https://pulsar.apache.org/tools/pulsar-admin/).
diff --git a/site2/website-next/docs/reference-metrics.md b/site2/website-next/docs/reference-metrics.md
index 854b515..59e5a9a 100644
--- a/site2/website-next/docs/reference-metrics.md
+++ b/site2/website-next/docs/reference-metrics.md
@@ -4,10 +4,6 @@ title: Pulsar Metrics
 sidebar_label: "Pulsar Metrics"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 
 Pulsar exposes the following metrics in Prometheus format. You can monitor your clusters with those metrics.
diff --git a/site2/website-next/docs/reference-pulsar-admin.md b/site2/website-next/docs/reference-pulsar-admin.md
index c73c3ed..d52e33e 100644
--- a/site2/website-next/docs/reference-pulsar-admin.md
+++ b/site2/website-next/docs/reference-pulsar-admin.md
@@ -4,10 +4,6 @@ title: Pulsar admin CLI
 sidebar_label: "Pulsar Admin CLI"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 > **Important**
 >
 > This page is deprecated and not updated anymore. For the latest and complete information about `Pulsar admin`, including commands, flags, descriptions, and more, see [Pulsar admin doc](https://pulsar.apache.org/tools/pulsar-admin/)
@@ -2912,7 +2908,7 @@ Options
 |---|---|---|
 |`-s`, `--subscription`|Subscription to reset position on||
 |`-t`, `--time`|The time in minutes to reset back to (or minutes, hours, days, weeks, etc.). Examples: `100m`, `3h`, `2d`, `5w`.||
-|`-m`, `--messageId`| The messageId to reset back to (ledgerId:entryId). ||
+|`-m`, `--messageId`| The message ID to reset back to (`ledgerId:entryId` or earliest or latest). ||
 
 ### `get-message-by-id`
 Get message by ledger id and entry id
diff --git a/site2/website-next/docs/reference-terminology.md b/site2/website-next/docs/reference-terminology.md
index 5bdcc27..ebc114d 100644
--- a/site2/website-next/docs/reference-terminology.md
+++ b/site2/website-next/docs/reference-terminology.md
@@ -4,10 +4,6 @@ title: Pulsar Terminology
 sidebar_label: "Terminology"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Here is a glossary of terms related to Apache Pulsar:
 
 ### Concepts
diff --git a/site2/website-next/docs/schema-evolution-compatibility.md b/site2/website-next/docs/schema-evolution-compatibility.md
index 531435e..c886b1f 100644
--- a/site2/website-next/docs/schema-evolution-compatibility.md
+++ b/site2/website-next/docs/schema-evolution-compatibility.md
@@ -4,10 +4,6 @@ title: Schema evolution and compatibility
 sidebar_label: "Schema evolution and compatibility"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Normally, schemas do not stay the same over a long period of time. Instead, they undergo evolutions to satisfy new needs. 
 
 This chapter examines how Pulsar schema evolves and what Pulsar schema compatibility check strategies are.
@@ -157,6 +153,12 @@ Suppose that you have a topic containing three schemas (V1, V2, and V3), V1 is t
 
 In some data formats, for example, Avro, you can define fields with default values. Consequently, adding or removing a field with a default value is a fully compatible change.
 
+:::tip
+
+You can set schema compatibility check strategy at namespace or broker level. For how to set the strategy, see [here](schema-manage.md/#set-schema-compatibility-check-strategy).
+
+:::
+
 ## Schema verification
 
 When a producer or a consumer tries to connect to a topic, a broker performs some checks to verify a schema.
diff --git a/site2/website-next/docs/schema-get-started.md b/site2/website-next/docs/schema-get-started.md
index ec77bf1..6736b44 100644
--- a/site2/website-next/docs/schema-get-started.md
+++ b/site2/website-next/docs/schema-get-started.md
@@ -4,10 +4,6 @@ title: Get started
 sidebar_label: "Get started"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter introduces Pulsar schemas and explains why they are important. 
 
 ## Schema Registry
diff --git a/site2/website-next/docs/schema-manage.md b/site2/website-next/docs/schema-manage.md
index c614a96..e457044 100644
--- a/site2/website-next/docs/schema-manage.md
+++ b/site2/website-next/docs/schema-manage.md
@@ -167,20 +167,7 @@ To upload (register) a new schema for a topic, you can use one of the following
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -263,7 +250,7 @@ The post payload includes the following fields:
 | --- | --- |
 |  `type`  |   The schema type. | 
 |  `schema`  |   The schema definition data, which is encoded in UTF 8 charset. <li>If the schema is a </li>**primitive**<li>schema, this field should be blank. </li><li>If the schema is a </li>**struct**<li>schema, this field should be a JSON string of the Avro schema definition. </li> | 
-|  `properties`  |  The additional properties associated with the schema. | 
+|  `properties`  |  The additional properties associated with the schema. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -306,20 +293,7 @@ To get the latest schema for a topic, you can use one of the following methods.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -369,7 +343,7 @@ The response includes the following fields:
 |  `type`  |   The schema type. | 
 |  `timestamp`  |   The timestamp of creating this version of schema. | 
 |  `data`  |   The schema definition data, which is encoded in UTF 8 charset. <li>If the schema is a </li>**primitive**<li>schema, this field should be blank. </li><li>If the schema is a </li>**struct**<li>schema, this field should be a JSON string of the Avro schema definition. </li> | 
-|  `properties`  |  The additional properties associated with the schema. | 
+|  `properties`  |  The additional properties associated with the schema. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -409,20 +383,7 @@ To get a specific version of a schema, you can use one of the following methods.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -461,7 +422,7 @@ The response includes the following fields:
 |  `type`  |   The schema type. | 
 |  `timestamp`  |   The timestamp of creating this version of schema. | 
 |  `data`  |   The schema definition data, which is encoded in UTF 8 charset. <li>If the schema is a </li>**primitive**<li>schema, this field should be blank. </li><li>If the schema is a </li>**struct**<li>schema, this field should be a JSON string of the Avro schema definition. </li> | 
-|  `properties`  |  The additional properties associated with the schema. | 
+|  `properties`  |  The additional properties associated with the schema. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -501,12 +462,7 @@ To provide a schema via a topic, you can use the following method.
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -534,20 +490,7 @@ In any case, the **delete** action deletes **all versions** of a schema register
 
 <Tabs 
   defaultValue="Admin CLI"
-  values={[
-  {
-    "label": "Admin CLI",
-    "value": "Admin CLI"
-  },
-  {
-    "label": "REST API",
-    "value": "REST API"
-  },
-  {
-    "label": "Java Admin API",
-    "value": "Java Admin API"
-  }
-]}>
+  values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
 
 <TabItem value="Admin CLI">
 
@@ -578,7 +521,7 @@ The response includes the following field:
 
 Field | Description |
 ---|---|
-`version` | The schema version, which is a long number. | 
+`version` | The schema version, which is a long number. |
 
 </TabItem>
 <TabItem value="Java Admin API">
@@ -681,3 +624,66 @@ To use your custom schema storage implementation, perform the following steps.
 3. Change the `schemaRegistryStorageClassName` configuration in `broker.conf` to your custom factory class.
       
 4. Start Pulsar.
+
+## Set schema compatibility check strategy 
+
+You can set [schema compatibility check strategy](schema-evolution-compatibility.md#schema-compatibility-check-strategy) at namespace or broker level. 
+
+- If you set schema compatibility check strategy at both namespace or broker level, it uses the strategy set for the namespace level.
+
+- If you do not set schema compatibility check strategy at both namespace or broker level, it uses the `FULL` strategy.
+
+- If you set schema compatibility check strategy at broker level rather than namespace level, it uses the strategy set for the broker level.
+
+- If you set schema compatibility check strategy at namespace level rather than broker level, it uses the strategy set for the namespace level.
+
+### Namespace 
+
+You can set schema compatibility check strategy at namespace level using one of the following methods.
+
+<Tabs 
+  defaultValue="pulsar-admin"
+  values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+
+<TabItem value="pulsar-admin">
+
+Use the [`pulsar-admin namespaces set-schema-compatibility-strategy`](https://pulsar.apache.org/tools/pulsar-admin/) command. 
+
+```shell
+
+pulsar-admin namespaces set-schema-compatibility-strategy options
+
+```
+
+</TabItem>
+<TabItem value="REST API">
+
+Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v2/namespaces/:tenant/:namespace|operation/schemaCompatibilityStrategy?version=@pulsar:version_number@}
+
+</TabItem>
+<TabItem value="Java">
+
+Use the [`setSchemaCompatibilityStrategy`](https://pulsar.apache.org/api/admin/)method.
+
+```java
+
+admin.namespaces().setSchemaCompatibilityStrategy("test", SchemaCompatibilityStrategy.FULL);
+
+```
+
+</TabItem>
+
+</Tabs>
+
+### Broker 
+
+You can set schema compatibility check strategy at broker level by setting `schemaCompatibilityStrategy` in [`broker.conf`](https://github.com/apache/pulsar/blob/f24b4890c278f72a67fe30e7bf22dc36d71aac6a/conf/broker.conf#L1240) or [`standalone.conf`](https://github.com/apache/pulsar/blob/master/conf/standalone.conf) file.
+
+**Example**
+
+```
+
+schemaCompatibilityStrategy=ALWAYS_INCOMPATIBLE
+
+```
+
diff --git a/site2/website-next/docs/schema-understand.md b/site2/website-next/docs/schema-understand.md
index 9d134cd..829dc5e 100644
--- a/site2/website-next/docs/schema-understand.md
+++ b/site2/website-next/docs/schema-understand.md
@@ -141,16 +141,7 @@ You can choose the encoding type when constructing the key/value schema.
 
 <Tabs 
   defaultValue="INLINE"
-  values={[
-  {
-    "label": "INLINE",
-    "value": "INLINE"
-  },
-  {
-    "label": "SEPARATED",
-    "value": "SEPARATED"
-  }
-]}>
+  values={[{"label":"INLINE","value":"INLINE"},{"label":"SEPARATED","value":"SEPARATED"}]}>
 
 <TabItem value="INLINE">
 
@@ -263,20 +254,7 @@ Pulsar provides the following methods to use the `struct` schema:
 
 <Tabs 
   defaultValue="static"
-  values={[
-  {
-    "label": "static",
-    "value": "static"
-  },
-  {
-    "label": "generic",
-    "value": "generic"
-  },
-  {
-    "label": "SchemaDefinition",
-    "value": "SchemaDefinition"
-  }
-]}>
+  values={[{"label":"static","value":"static"},{"label":"generic","value":"generic"},{"label":"SchemaDefinition","value":"SchemaDefinition"}]}>
 
 <TabItem value="static">
 
diff --git a/site2/website-next/docs/security-athenz.md b/site2/website-next/docs/security-athenz.md
index d7d26fd..ba27ba4 100644
--- a/site2/website-next/docs/security-athenz.md
+++ b/site2/website-next/docs/security-athenz.md
@@ -4,10 +4,6 @@ title: Authentication using Athenz
 sidebar_label: "Authentication using Athenz"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 [Athenz](https://github.com/AthenZ/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify of the client.
 
 ## Athenz authentication settings
diff --git a/site2/website-next/docs/security-authorization.md b/site2/website-next/docs/security-authorization.md
index cdeb99a..b1003d2 100644
--- a/site2/website-next/docs/security-authorization.md
+++ b/site2/website-next/docs/security-authorization.md
@@ -4,10 +4,6 @@ title: Authentication and authorization in Pulsar
 sidebar_label: "Authorization and ACLs"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 
 In Pulsar, the [authentication provider](security-overview.md#authentication-providers) is responsible for properly identifying clients and associating the clients with [role tokens](security-overview.md#role-tokens). If you only enable authentication, an authenticated role token has the ability to access all resources in the cluster. *Authorization* is the process that determines *what* clients are able to do.
 
@@ -49,7 +45,7 @@ Another approach is to make the proxy role a superuser. This allows the proxy to
 
 You can specify the roles as proxy roles in [`conf/broker.conf`](reference-configuration.md#broker).
 
-```
+```properties
 
 proxyRoles=my-proxy-role
 
@@ -68,7 +64,7 @@ You can manage tenants using the [`pulsar-admin`](reference-pulsar-admin) tool.
 
 The following is an example tenant creation command:
 
-```
+```shell
 
 $ bin/pulsar-admin tenants create my-tenant \
   --admin-roles my-admin-role \
@@ -82,7 +78,7 @@ A client that successfully identifies itself as having the role `my-admin-role`
 
 The structure of topic names in Pulsar reflects the hierarchy between tenants, clusters, and namespaces:
 
-```
+```shell
 
 persistent://tenant/namespace/topic
 
@@ -94,7 +90,7 @@ You can use [Pulsar Admin Tools](admin-api-permissions) for managing permission
 
 ### Pulsar admin authentication
 
-```
+```java
 
 PulsarAdmin admin = PulsarAdmin.builder()
                     .serviceHttpUrl("http://broker:8080")
@@ -105,7 +101,7 @@ PulsarAdmin admin = PulsarAdmin.builder()
 
 To use TLS:
 
-```
+```java
 
 PulsarAdmin admin = PulsarAdmin.builder()
                     .serviceHttpUrl("https://broker:8080")
diff --git a/site2/website-next/docs/security-bouncy-castle.md b/site2/website-next/docs/security-bouncy-castle.md
index b5d9f18..0c6eb42 100644
--- a/site2/website-next/docs/security-bouncy-castle.md
+++ b/site2/website-next/docs/security-bouncy-castle.md
@@ -4,10 +4,6 @@ title: Bouncy Castle Providers
 sidebar_label: "Bouncy Castle Providers"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## BouncyCastle Introduce
 
 `Bouncy Castle` is a Java library that complements the default Java Cryptographic Extension (JCE), 
diff --git a/site2/website-next/docs/security-encryption.md b/site2/website-next/docs/security-encryption.md
index 419e6d7..90d0dbe 100644
--- a/site2/website-next/docs/security-encryption.md
+++ b/site2/website-next/docs/security-encryption.md
@@ -49,24 +49,7 @@ openssl ec -in test_ecdsa_privkey.pem -pubout -outform pem -out test_ecdsa_pubke
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "C++",
-    "value": "C++"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Node.JS",
-    "value": "Node.JS"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"C++","value":"C++"},{"label":"Python","value":"Python"},{"label":"Node.JS","value":"Node.JS"}]}>
 <TabItem value="Java">
 
 ```java
@@ -222,24 +205,7 @@ await client.close();
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "C++",
-    "value": "C++"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Node.JS",
-    "value": "Node.JS"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"C++","value":"C++"},{"label":"Python","value":"Python"},{"label":"Node.JS","value":"Node.JS"}]}>
 <TabItem value="Java">
 
 ```java
diff --git a/site2/website-next/docs/security-extending.md b/site2/website-next/docs/security-extending.md
index 4bfcd65..dd0030e 100644
--- a/site2/website-next/docs/security-extending.md
+++ b/site2/website-next/docs/security-extending.md
@@ -4,10 +4,6 @@ title: Extending Authentication and Authorization in Pulsar
 sidebar_label: "Extending"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar provides a way to use custom authentication and authorization mechanisms.
 
 ## Authentication
diff --git a/site2/website-next/docs/security-jwt.md b/site2/website-next/docs/security-jwt.md
index 3fcca5b..8dd8d80 100644
--- a/site2/website-next/docs/security-jwt.md
+++ b/site2/website-next/docs/security-jwt.md
@@ -60,28 +60,7 @@ You can use tokens to authenticate the following Pulsar clients.
 
 <Tabs 
   defaultValue="Java"
-  values={[
-  {
-    "label": "Java",
-    "value": "Java"
-  },
-  {
-    "label": "Python",
-    "value": "Python"
-  },
-  {
-    "label": "Go",
-    "value": "Go"
-  },
-  {
-    "label": "C++",
-    "value": "C++"
-  },
-  {
-    "label": "C#",
-    "value": "C#"
-  }
-]}>
+  values={[{"label":"Java","value":"Java"},{"label":"Python","value":"Python"},{"label":"Go","value":"Go"},{"label":"C++","value":"C++"},{"label":"C#","value":"C#"}]}>
 <TabItem value="Java">
 
 ```java
diff --git a/site2/website-next/docs/security-kerberos.md b/site2/website-next/docs/security-kerberos.md
index ad61e38..d765e3d 100644
--- a/site2/website-next/docs/security-kerberos.md
+++ b/site2/website-next/docs/security-kerberos.md
@@ -4,10 +4,6 @@ title: Authentication using Kerberos
 sidebar_label: "Authentication using Kerberos"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 [Kerberos](https://web.mit.edu/kerberos/) is a network authentication protocol. By using secret-key cryptography, [Kerberos](https://web.mit.edu/kerberos/) is designed to provide strong authentication for client applications and server applications. 
 
 In Pulsar, you can use Kerberos with [SASL](https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer) as a choice for authentication. And Pulsar uses the [Java Authentication and Authorization Service (JAAS)](https://en.wikipedia.org/wiki/Java_Authentication_and_Authorization_Service) for SASL configuration. You need to provide JAAS configurations for Kerberos authentication. 
diff --git a/site2/website-next/docs/security-oauth2.md b/site2/website-next/docs/security-oauth2.md
index 8588064..f3cad38 100644
--- a/site2/website-next/docs/security-oauth2.md
+++ b/site2/website-next/docs/security-oauth2.md
@@ -4,10 +4,6 @@ title: Client authentication using OAuth 2.0 access tokens
 sidebar_label: "Authentication using OAuth 2.0 access tokens"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Pulsar supports authenticating clients using OAuth 2.0 access tokens. You can use OAuth 2.0 access tokens to identify a Pulsar client and associate the Pulsar client with some "principal" (or "role"), which is permitted to do some actions, such as publishing messages to a topic or consume messages from a topic.
 
 This module is used to support the Pulsar client authentication plugin for OAuth 2.0. After communicating with the Oauth 2.0 server, the Pulsar client gets an `access token` from the Oauth 2.0 server, and passes this `access token` to the Pulsar broker to do the authentication. The broker can use the `org.apache.pulsar.broker.authentication.AuthenticationProviderToken`. Or, you can add your own `AuthenticationProvider` to make it with this module.
diff --git a/site2/website-next/docs/security-overview.md b/site2/website-next/docs/security-overview.md
index cf59a9f..91f4ba8 100644
--- a/site2/website-next/docs/security-overview.md
+++ b/site2/website-next/docs/security-overview.md
@@ -4,10 +4,6 @@ title: Pulsar security overview
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 As the central message bus for a business, Apache Pulsar is frequently used for storing mission-critical data. Therefore, enabling security features in Pulsar is crucial.
 
 By default, Pulsar configures no encryption, authentication, or authorization. Any client can communicate to Apache Pulsar via plain text service URLs. So we must ensure that Pulsar accessing via these plain text service URLs is restricted to trusted clients only. In such cases, you can use Network segmentation and/or authorization ACLs to restrict access to trusted IPs. If you use neither, the state of cluster is wide open and anyone can access the cluster.
diff --git a/site2/website-next/docs/security-tls-authentication.md b/site2/website-next/docs/security-tls-authentication.md
index 1b23394..889901a 100644
--- a/site2/website-next/docs/security-tls-authentication.md
+++ b/site2/website-next/docs/security-tls-authentication.md
@@ -4,10 +4,6 @@ title: Authentication using TLS
 sidebar_label: "Authentication using TLS"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## TLS authentication overview
 
 TLS authentication is an extension of [TLS transport encryption](security-tls-transport). Not only servers have keys and certs that the client uses to verify the identity of servers, clients also have keys and certs that the server uses to verify the identity of clients. You must have TLS transport encryption configured on your cluster before you can use TLS authentication. This guide assumes you already have TLS transport encryption configured.
@@ -130,7 +126,7 @@ When you use TLS authentication, client connects via TLS transport. You need to
 
 You need to add the following parameters to that file to use TLS authentication with the CLI tools of Pulsar:
 
-```
+```properties
 
 webServiceUrl=https://broker.example.com:8443/
 brokerServiceUrl=pulsar+ssl://broker.example.com:6651/
@@ -144,7 +140,7 @@ authParams=tlsCertFile:/path/to/my-role.cert.pem,tlsKeyFile:/path/to/my-role.key
 
 ### Java client
 
-```
+```java
 
 import org.apache.pulsar.client.api.PulsarClient;
 
@@ -160,7 +156,7 @@ PulsarClient client = PulsarClient.builder()
 
 ### Python client
 
-```
+```python
 
 from pulsar import Client, AuthenticationTLS
 
@@ -174,7 +170,7 @@ client = Client("pulsar+ssl://broker.example.com:6651/",
 
 ### C++ client
 
-```
+```c++
 
 #include <pulsar/Client.h>
 
@@ -193,7 +189,7 @@ pulsar::Client client("pulsar+ssl://broker.example.com:6651/", config);
 
 ### Node.js client
 
-```
+```JavaScript
 
 const Pulsar = require('pulsar-client');
 
@@ -214,7 +210,7 @@ const Pulsar = require('pulsar-client');
 
 ### C# client
 
-```
+```c#
 
 var clientCertificate = new X509Certificate2("admin.pfx");
 var client = PulsarClient.Builder()
diff --git a/site2/website-next/docs/security-tls-keystore.md b/site2/website-next/docs/security-tls-keystore.md
index 8187608..b45a469 100644
--- a/site2/website-next/docs/security-tls-keystore.md
+++ b/site2/website-next/docs/security-tls-keystore.md
@@ -4,10 +4,6 @@ title: Using TLS with KeyStore configure
 sidebar_label: "Using TLS with KeyStore configure"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Overview
 
 Apache Pulsar supports [TLS encryption](security-tls-transport.md) and [TLS authentication](security-tls-authentication) between clients and Apache Pulsar service. 
diff --git a/site2/website-next/docs/security-tls-transport.md b/site2/website-next/docs/security-tls-transport.md
index 9ee7fa0..b0ffdc4 100644
--- a/site2/website-next/docs/security-tls-transport.md
+++ b/site2/website-next/docs/security-tls-transport.md
@@ -4,10 +4,6 @@ title: Transport Encryption using TLS
 sidebar_label: "Transport Encryption using TLS"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## TLS overview
 
 By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.
@@ -83,13 +79,15 @@ Once you have created a CA certificate, you can create certificate requests and
 
 The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, `*.broker.usw.example.com`. This ensures that multiple machines can reuse the same certificate.
 
-> #### Tips
-> 
-> Sometimes matching the hostname is not possible or makes no sense,
-> such as when you create the brokers with random hostnames, or you
-> plan to connect to the hosts via their IP. In these cases, you 
-> should configure the client to disable TLS hostname verification. For more
-> details, you can see [the host verification section in client configuration](#hostname-verification).
+:::tip
+
+Sometimes matching the hostname is not possible or makes no sense,
+such as when you create the brokers with random hostnames, or you
+plan to connect to the hosts via their IP. In these cases, you 
+should configure the client to disable TLS hostname verification. For more
+details, you can see [the host verification section in client configuration](#hostname-verification).
+
+:::
 
 1. Enter the command below to generate the key.
 
@@ -171,7 +169,7 @@ For JDK 11, you can obtain a list of supported values from the documentation:
 
 Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.
 
-```
+```properties
 
 # For clients connecting to the proxy
 tlsEnabledInProxy=true
@@ -187,7 +185,7 @@ brokerClientTrustCertsFilePath=/path/to/ca.cert.pem
 
 ## Client configuration
 
-When you enable the TLS transport encryption, you need to configure the client to use ```
+When you enable the TLS transport encryption, you need to configure the client to use ```https://``` and port 8443 for the web service URL, and ```pulsar+ssl://``` and port 6651 for the broker service URL.
 
 As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the **trust cert** (recommended), or tell the client to allow untrusted server certs.
 
diff --git a/site2/website-next/docs/security-token-admin.md b/site2/website-next/docs/security-token-admin.md
index 9c7bdb4..9424e83 100644
--- a/site2/website-next/docs/security-token-admin.md
+++ b/site2/website-next/docs/security-token-admin.md
@@ -4,10 +4,6 @@ title: Token authentication admin
 sidebar_label: "Token authentication admin"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 ## Token Authentication Overview
 
 Pulsar supports authenticating clients using security tokens that are based on [JSON Web Tokens](https://jwt.io/introduction/) ([RFC-7519](https://tools.ietf.org/html/rfc7519)).
diff --git a/site2/website-next/docs/sql-deployment-configurations.md b/site2/website-next/docs/sql-deployment-configurations.md
index 5803c55..9e7ff5a 100644
--- a/site2/website-next/docs/sql-deployment-configurations.md
+++ b/site2/website-next/docs/sql-deployment-configurations.md
@@ -4,10 +4,6 @@ title: Pulsar SQL configuration and deployment
 sidebar_label: "Configuration and deployment"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 You can configure Presto Pulsar connector and deploy a cluster with the following instruction.
 
 ## Configure Presto Pulsar Connector
@@ -107,7 +103,9 @@ pulsar.managed-ledger-num-scheduler-threads=Runtime.getRuntime().availableProces
 
 # directory used to store extraction NAR file
 pulsar.nar-extraction-directory=System.getProperty("java.io.tmpdir")
+
 ```
+
 You can connect Presto to a Pulsar cluster with multiple hosts. To configure multiple hosts for brokers, add multiple URLs to `pulsar.web-service-url`. To configure multiple hosts for ZooKeeper, add multiple URIs to `pulsar.zookeeper-uri`. The following is an example.
 
 ```
diff --git a/site2/website-next/docs/sql-getting-started.md b/site2/website-next/docs/sql-getting-started.md
index ada474a..6a2d87363 100644
--- a/site2/website-next/docs/sql-getting-started.md
+++ b/site2/website-next/docs/sql-getting-started.md
@@ -4,10 +4,6 @@ title: Query data with Pulsar SQL
 sidebar_label: "Query data"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Before querying data in Pulsar, you need to install Pulsar and built-in connectors. 
 
 ## Requirements
diff --git a/site2/website-next/docs/sql-overview.md b/site2/website-next/docs/sql-overview.md
index 9597e2c..2f827f4 100644
--- a/site2/website-next/docs/sql-overview.md
+++ b/site2/website-next/docs/sql-overview.md
@@ -4,10 +4,6 @@ title: Pulsar SQL Overview
 sidebar_label: "Overview"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 Apache Pulsar is used to store streams of event data, and the event data is structured with predefined fields. With the implementation of the [Schema Registry](schema-get-started), you can store structured data in Pulsar and query the data by using [Trino (formerly Presto SQL)](https://trino.io/).
 
 As the core of Pulsar SQL, Presto Pulsar connector enables Presto workers within a Presto cluster to query data from Pulsar.
diff --git a/site2/website-next/docs/sql-rest-api.md b/site2/website-next/docs/sql-rest-api.md
index cf3cad8..4f9ffdc 100644
--- a/site2/website-next/docs/sql-rest-api.md
+++ b/site2/website-next/docs/sql-rest-api.md
@@ -4,10 +4,6 @@ title: Pulsar SQL REST APIs
 sidebar_label: "REST APIs"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This section lists resources that make up the Presto REST API v1. 
 
 ## Request for Presto services
diff --git a/site2/website-next/docs/tiered-storage-aliyun.md b/site2/website-next/docs/tiered-storage-aliyun.md
index 8729575..bcebe39 100644
--- a/site2/website-next/docs/tiered-storage-aliyun.md
+++ b/site2/website-next/docs/tiered-storage-aliyun.md
@@ -4,10 +4,6 @@ title: Use Aliyun OSS offloader with Pulsar
 sidebar_label: "Aliyun OSS offloader"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the Aliyun Object Storage Service (OSS) offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/docs/tiered-storage-aws.md b/site2/website-next/docs/tiered-storage-aws.md
index ee9eeef..d48023e 100644
--- a/site2/website-next/docs/tiered-storage-aws.md
+++ b/site2/website-next/docs/tiered-storage-aws.md
@@ -4,10 +4,6 @@ title: Use AWS S3 offloader with Pulsar
 sidebar_label: "AWS S3 offloader"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the AWS S3 offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/docs/tiered-storage-azure.md b/site2/website-next/docs/tiered-storage-azure.md
index f7b1128..654ae2b 100644
--- a/site2/website-next/docs/tiered-storage-azure.md
+++ b/site2/website-next/docs/tiered-storage-azure.md
@@ -4,10 +4,6 @@ title: Use Azure BlobStore offloader with Pulsar
 sidebar_label: "Azure BlobStore offloader"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the Azure BlobStore offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/docs/tiered-storage-filesystem.md b/site2/website-next/docs/tiered-storage-filesystem.md
index fbc1ad1..2d002ac 100644
--- a/site2/website-next/docs/tiered-storage-filesystem.md
+++ b/site2/website-next/docs/tiered-storage-filesystem.md
@@ -30,52 +30,60 @@ This example uses Pulsar 2.5.1.
 
    * Use the [wget](https://www.gnu.org/software/wget) command to dowload the Pulsar tarball.
 
-     ```shell
-     wget https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz
-     ```
+    ```shell
+    
+    wget https://archive.apache.org/dist/pulsar/pulsar-2.5.1/apache-pulsar-2.5.1-bin.tar.gz
+    
+    ```
 
 2. Download and untar the Pulsar offloaders package. 
 
-    ```bash
-    wget https://downloads.apache.org/pulsar/pulsar-2.5.1/apache-pulsar-offloaders-2.5.1-bin.tar.gz
+   ```bash
+   
+   wget https://downloads.apache.org/pulsar/pulsar-2.5.1/apache-pulsar-offloaders-2.5.1-bin.tar.gz
 
-    tar xvfz apache-pulsar-offloaders-2.5.1-bin.tar.gz
-    ```
+   tar xvfz apache-pulsar-offloaders-2.5.1-bin.tar.gz
+   
+   ```
 
-    :::note
-    
-    * If you run Pulsar in a bare metal cluster, ensure that the `offloaders` tarball is unzipped in every broker's Pulsar directory.
-    * If you run Pulsar in Docker or deploying Pulsar using a Docker image (such as K8S and DCOS), you can use the `apachepulsar/pulsar-all` image. The `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
+   :::note
+
+   * If you run Pulsar in a bare metal cluster, ensure that the `offloaders` tarball is unzipped in every broker's Pulsar directory.
+   * If you run Pulsar in Docker or deploying Pulsar using a Docker image (such as K8S and DCOS), you can use the `apachepulsar/pulsar-all` image. The `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
 
-    :::
+   :::
 
 3. Copy the Pulsar offloaders as `offloaders` in the Pulsar directory.
 
-    ```
-    mv apache-pulsar-offloaders-2.5.1/offloaders apache-pulsar-2.5.1/offloaders
+   ```
+   
+   mv apache-pulsar-offloaders-2.5.1/offloaders apache-pulsar-2.5.1/offloaders
 
-    ls offloaders
-    ```
+   ls offloaders
+   
+   ```
 
-    **Output**
+   **Output**
 
-    ```
-    tiered-storage-file-system-2.5.1.nar
-    tiered-storage-jcloud-2.5.1.nar
-    ```
+   ```
+   
+   tiered-storage-file-system-2.5.1.nar
+   tiered-storage-jcloud-2.5.1.nar
+   
+   ```
 
-    :::note
-    
-    * If you run Pulsar in a bare metal cluster, ensure that `offloaders` tarball is unzipped in every broker's Pulsar directory.
-    
-    * If you run Pulsar in Docker or deploying Pulsar using a Docker image (such as K8s and DCOS), you can use the `apachepulsar/pulsar-all` image. The `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
+   :::note
+
+   * If you run Pulsar in a bare metal cluster, ensure that `offloaders` tarball is unzipped in every broker's Pulsar directory.
+   * If you run Pulsar in Docker or deploying Pulsar using a Docker image (such as K8s and DCOS), you can use the `apachepulsar/pulsar-all` image. The `apachepulsar/pulsar-all` image has already bundled tiered storage offloaders.
+
+   :::
 
-    :::
 ## Configuration
 
 :::note
 
-Before offloading data from BookKeeper to filesystem, you need to configure some properties of the filesystem offloader driver.
+Before offloading data from BookKeeper to filesystem, you need to configure some properties of the filesystem offloader driver. 
 
 :::
 
@@ -87,33 +95,36 @@ You can configure the filesystem offloader driver in the `broker.conf` or `stand
 
 - **Required** configurations are as below.
 
-    <Tabs
-    defaultValue="hdfs"
-    values={[
-        {label: 'HDFS', value: 'hdfs'},
-        {label: 'NFS', value: 'nfs'},
-    ]}>
-    <TabItem value="hdfs">
-    | Parameter | Description | Example value |
-    |---|---|--- |
-    `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
-    `fileSystemURI` | Connection address, which is the URI to access the default Hadoop distributed file system. | hdfs://127.0.0.1:9000
-    `offloadersDirectory` | Hadoop profile path. The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning. | ../conf/filesystem_offload_core_site.xml
-    </TabItem>
-    <TabItem value="nfs">
-    | Parameter | Description | Example value |
-    |---|---|--- |
-    `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
-    `offloadersDirectory` | Offloader directory. The configuration file is stored in the offloader directory. It contains various settings for performance tuning. | ../conf/filesystem_offload_core_site.xml
-    </TabItem>
-    </Tabs>;
+  <Tabs 
+    defaultValue="HDFS"
+    values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>    
+
+  <TabItem value="HDFS">
+
+  Parameter | Description | Example value
+  |---|---|---
+  `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
+  `fileSystemURI` | Connection address, which is the URI to access the default Hadoop distributed file system. | hdfs://127.0.0.1:9000
+  `offloadersDirectory` | Hadoop profile path. The configuration file is stored in the Hadoop profile path. It contains various settings for Hadoop performance tuning. | ../conf/filesystem_offload_core_site.xml
+
+  </TabItem>
+  <TabItem value="NFS">
+
+  Parameter | Description | Example value
+  |---|---|---
+  `managedLedgerOffloadDriver` | Offloader driver name, which is case-insensitive. | filesystem
+  `offloadersDirectory` | Offloader directory. The configuration file is stored in the offloader directory. It contains various settings for performance tuning. | ../conf/filesystem_offload_core_site.xml
+
+  </TabItem>
+
+  </Tabs>
 
 - **Optional** configurations are as below.
 
-    Parameter| Description | Example value
-    |---|---|---
-    `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br><br>**Note**: it is not recommended to set this parameter in the production environment.|2
-    `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br><br>**Note**: it is not recommended to set this parameter in the production environment.|5000
+  Parameter| Description | Example value
+  |---|---|---
+  `managedLedgerMinLedgerRolloverTimeMinutes`|Minimum time between ledger rollover for a topic. <br /><br />**Note**: it is not recommended to set this parameter in the production environment.|2
+  `managedLedgerMaxEntriesPerLedger`|Maximum number of entries to append to a ledger before triggering a rollover.<br /><br />**Note**: it is not recommended to set this parameter in the production environment.|5000
 
 ### Run filesystem offloader automatically
 
@@ -134,7 +145,9 @@ You can configure the threshold using CLI tools, such as pulsar-admin.
 This example sets the filesystem offloader threshold to 10 MB using pulsar-admin.
 
 ```bash
+
 pulsar-admin namespaces set-offload-threshold --size 10M my-tenant/my-namespace
+
 ```
 
 :::tip
@@ -157,66 +170,82 @@ To manually trigger the filesystem offloader via CLI tools, you need to specify
 
 - This example manually run the filesystem offloader using pulsar-admin.
 
-    ```bash
-    pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
-    ``` 
+  ```bash
+  
+  pulsar-admin topics offload --size-threshold 10M persistent://my-tenant/my-namespace/topic1
+  
+  ```
 
-    **Output**
+  **Output**
 
-    ```bash
-    Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
-    ```
+  ```bash
+  
+  Offload triggered for persistent://my-tenant/my-namespace/topic1 for messages before 2:0:-1
+  
+  ```
 
-    :::tip
+  :::tip
 
-    For more information about the `pulsar-admin topics offload options` command, including flags, descriptions, default values, and shorthands, see [here](reference-pulsar-admin.md#offload).
+  For more information about the `pulsar-admin topics offload options` command, including flags, descriptions, default values, and shorthands, see [here](reference-pulsar-admin.md#offload). 
 
-    :::
+  :::
 
 - This example checks filesystem offloader status using pulsar-admin.
 
-    ```bash
-    pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
-    ```
+  ```bash
+  
+  pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
+  
+  ```
 
-    **Output**
+  **Output**
 
-    ```bash
-    Offload is currently running
-    ```
+  ```bash
+  
+  Offload is currently running
+  
+  ```
 
-    To wait for the filesystem to complete the job, add the `-w` flag.
+  To wait for the filesystem to complete the job, add the `-w` flag.
 
-    ```bash
-    pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1
-    ```
+  ```bash
+  
+  pulsar-admin topics offload-status -w persistent://my-tenant/my-namespace/topic1
+  
+  ```
 
-    **Output**
-    
-    ```
-    Offload was a success
-    ```
+  **Output**
 
-    If there is an error in the offloading operation, the error is propagated to the `pulsar-admin topics offload-status` command.
+  ```
+  
+  Offload was a success
+  
+  ```
 
-    ```bash
-    pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
-    ```
+  If there is an error in the offloading operation, the error is propagated to the `pulsar-admin topics offload-status` command.
 
-    **Output**
+  ```bash
+  
+  pulsar-admin topics offload-status persistent://my-tenant/my-namespace/topic1
+  
+  ```
 
-    ```
-    Error in offload
-    null
+  **Output**
 
-    Reason: Error offloading: org.apache.bookkeeper.mledger.ManagedLedgerException: java.util.concurrent.CompletionException: com.amazonaws.services.s3.model.AmazonS3Exception: Anonymous users cannot initiate multipart uploads.  Please authenticate. (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 798758DE3F1776DF; S3 Extended Request ID: dhBFz/lZm1oiG/oBEepeNlhrtsDlzoOhocuYMpKihQGXe6EG8puRGOkK6UwqzVrMXTWBxxHcS+g=), S3 Extended Request ID: dhBFz/lZm1oiG/oBEepe [...]
-    ```
+  ```
+  
+  Error in offload
+  null
 
-    :::tip
+  Reason: Error offloading: org.apache.bookkeeper.mledger.ManagedLedgerException: java.util.concurrent.CompletionException: com.amazonaws.services.s3.model.AmazonS3Exception: Anonymous users cannot initiate multipart uploads.  Please authenticate. (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 798758DE3F1776DF; S3 Extended Request ID: dhBFz/lZm1oiG/oBEepeNlhrtsDlzoOhocuYMpKihQGXe6EG8puRGOkK6UwqzVrMXTWBxxHcS+g=), S3 Extended Request ID: dhBFz/lZm1oiG/oBEepeNl [...]
+  
+  ```
 
-    For more information about the `pulsar-admin topics offload-status options` command, including flags, descriptions, default values, and shorthands, see [here](reference-pulsar-admin.md#offload-status).
+  :::tip
 
-    :::
+  For more information about the `pulsar-admin topics offload-status options` command, including flags, descriptions, default values, and shorthands, see [here](reference-pulsar-admin.md#offload-status). 
+
+  :::
 
 ## Tutorial
 
@@ -224,16 +253,8 @@ This section provides step-by-step instructions on how to use the filesystem off
 
 <Tabs 
   defaultValue="HDFS"
-  values={[
-  {
-    "label": "HDFS",
-    "value": "HDFS"
-  },
-  {
-    "label": "NFS",
-    "value": "NFS"
-  },
-]}>
+  values={[{"label":"HDFS","value":"HDFS"},{"label":"NFS","value":"NFS"}]}>
+
 <TabItem value="HDFS">
 
 To move data from Pulsar to HDFS, follow these steps.
@@ -250,67 +271,75 @@ For details about how to set up a Hadoop single node cluster, see [here](https:/
 
 1. Download and uncompress Hadoop 3.2.1. 
 
-    ```
-    wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz  
+   ```
+   
+   wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz  
 
-    tar -zxvf hadoop-3.2.1.tar.gz -C $HADOOP_HOME
-    ```
+   tar -zxvf hadoop-3.2.1.tar.gz -C $HADOOP_HOME
+   
+   ```
 
 2. Configure Hadoop.
 
-    ```
-    # $HADOOP_HOME/etc/hadoop/core-site.xml
-    <configuration>
-        <property>
-            <name>fs.defaultFS</name>
-            <value>hdfs://localhost:9000</value>
-        </property>
-    </configuration>
-
-    # $HADOOP_HOME/etc/hadoop/hdfs-site.xml
-    <configuration>
-        <property>
-            <name>dfs.replication</name>
-            <value>1</value>
-        </property>
-    </configuration>
-    ```
+   ```
+   
+   # $HADOOP_HOME/etc/hadoop/core-site.xml
+   <configuration>
+       <property>
+           <name>fs.defaultFS</name>
+           <value>hdfs://localhost:9000</value>
+       </property>
+   </configuration>
+
+   # $HADOOP_HOME/etc/hadoop/hdfs-site.xml
+   <configuration>
+       <property>
+           <name>dfs.replication</name>
+           <value>1</value>
+       </property>
+   </configuration>
+   
+   ```
 
 3. Set passphraseless ssh.
 
-    ```
-    # Now check that you can ssh to the localhost without a passphrase:
-    $ ssh localhost
-    # If you cannot ssh to localhost without a passphrase, execute the following commands
-    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
-    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-    $ chmod 0600 ~/.ssh/authorized_keys
-    ```
+   ```
+   
+   # Now check that you can ssh to the localhost without a passphrase:
+   $ ssh localhost
+   # If you cannot ssh to localhost without a passphrase, execute the following commands
+   $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
+   $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
+   $ chmod 0600 ~/.ssh/authorized_keys
+   
+   ```
 
 4. Start HDFS.
 
-    ```
-    # don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode
-    $HADOOP_HOME/bin/hadoop namenode -format
-    $HADOOP_HOME/sbin/start-dfs.sh
-    ```
+   ```
+   
+   # don't execute this command repeatedly, repeat execute will cauld the clusterId of the datanode is not consistent with namenode
+   $HADOOP_HOME/bin/hadoop namenode -format
+   $HADOOP_HOME/sbin/start-dfs.sh
+   
+   ```
 
 5. Navigate to the [HDFS website](http://localhost:9870/).
 
-    You can see the **Overview** page.
+   You can see the **Overview** page.
 
-    ![](assets/FileSystem-1.png)
+   ![](/assets/FileSystem-1.png)
 
 
-    1. At the top navigation bar, click **Datanodes** to check DataNode information.
+   1. At the top navigation bar, click **Datanodes** to check DataNode information.
 
-        ![](assets/FileSystem-2.png)
+       ![](/assets/FileSystem-2.png)
 
-    2. Click **HTTP Address** to get more detailed information about localhost:9866.
+   2. Click **HTTP Address** to get more detailed information about localhost:9866.
 
-        As can be seen below, the size of **Capacity Used** is 4 KB, which is the initial value.
+       As can be seen below, the size of **Capacity Used** is 4 KB, which is the initial value.
 
-        ![](assets/FileSystem-3.png)
+       ![](/assets/FileSystem-3.png)
 
 ### Step 2: Install the filesystem offloader
 
@@ -323,9 +352,11 @@ As indicated in the [configuration](#configuration) section, you need to configu
 Set the following configurations in the `conf/standalone.conf` file.
 
 ```conf
+
 managedLedgerOffloadDriver=filesystem
 fileSystemURI=hdfs://127.0.0.1:9000
 fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
+
 ```
 
 :::note
@@ -335,8 +366,10 @@ For testing purposes, you can set the following two configurations to speed up l
 :::
 
 ```
+
 managedLedgerMinLedgerRolloverTimeMinutes=1
 managedLedgerMaxEntriesPerLedger=100
+
 ```
 
 </TabItem>
@@ -359,7 +392,9 @@ For details, see [installation](#installation).
 This example mounts mounts */Users/pulsar_nfs* to */Users/test*.
 
 ```
+
 mount -e 192.168.0.103:/Users/test/Users/pulsar_nfs
+
 ```
 
 ### Step 3: Configure the filesystem offloader driver
@@ -368,46 +403,51 @@ As indicated in the [configuration](#configuration) section, you need to configu
 
 1. Set the following configurations in the `conf/standalone.conf` file.
 
-    ```conf
-    managedLedgerOffloadDriver=filesystem
-    fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
-    ```
+   ```conf
+   
+   managedLedgerOffloadDriver=filesystem
+   fileSystemProfilePath=../conf/filesystem_offload_core_site.xml
+   
+   ```
 
 2. Modify the *filesystem_offload_core_site.xml* as follows.
 
-    ```
-    <property>
-        <name>fs.defaultFS</name>
-        <value>file:///</value>
-    </property>
-
-    <property>
-        <name>hadoop.tmp.dir</name>
-        <value>file:///Users/pulsar_nfs</value>
-    </property>
-
-    <property>
-        <name>io.file.buffer.size</name>
-        <value>4096</value>
-    </property>
-
-    <property>
-        <name>io.seqfile.compress.blocksize</name>
-        <value>1000000</value>
-    </property>
-    <property>
-
-        <name>io.seqfile.compression.type</name>
-        <value>BLOCK</value>
-    </property>
-
-    <property>
-        <name>io.map.index.interval</name>
-        <value>128</value>
-    </property>
-    ```
+   ```
+   
+   <property>
+       <name>fs.defaultFS</name>
+       <value>file:///</value>
+   </property>
+
+   <property>
+       <name>hadoop.tmp.dir</name>
+       <value>file:///Users/pulsar_nfs</value>
+   </property>
+
+   <property>
+       <name>io.file.buffer.size</name>
+       <value>4096</value>
+   </property>
+
+   <property>
+       <name>io.seqfile.compress.blocksize</name>
+       <value>1000000</value>
+   </property>
+   <property>
+
+       <name>io.seqfile.compression.type</name>
+       <value>BLOCK</value>
+   </property>
+
+   <property>
+       <name>io.map.index.interval</name>
+       <value>128</value>
+   </property>
+   
+   ```
 
 </TabItem>
+
 </Tabs>
 
 ### Step 4: Offload data from BookKeeper to filesystem
@@ -416,136 +456,160 @@ Execute the following commands in the repository where you download Pulsar tarba
 
 1. Start Pulsar standalone.
 
-    ```
-    ./bin/pulsar standalone -a 127.0.0.1
-    ```
+   ```
+   
+   ./bin/pulsar standalone -a 127.0.0.1
+   
+   ```
 
 2. To ensure the data generated is not deleted immediately, it is recommended to set the [retention policy](https://pulsar.apache.org/docs/en/next/cookbooks-retention-expiry/#retention-policies), which can be either a **size** limit or a **time** limit. The larger value you set for the retention policy, the longer the data can be retained.
 
-    ```
-    ./bin/pulsarctl namespaces set-retention public/default --size 100M --time 2d
-    ```
+   ```
+   
+   ./bin/pulsarctl namespaces set-retention public/default --size 100M --time 2d
+   
+   ```
 
-    :::tip
-    
-    For more information about the `pulsarctl namespaces set-retention options` command, including flags, descriptions, default values, and shorthands, see [here](https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-).
+   :::tip
+
+   For more information about the `pulsarctl namespaces set-retention options` command, including flags, descriptions, default values, and shorthands, see [here](https://docs.streamnative.io/pulsarctl/v2.7.0.6/#-em-set-retention-em-). 
 
-    :::
+   :::
 
 3. Produce data using pulsar-client.
 
-    ```
-    ./bin/pulsar-client produce -m "Hello FileSystem Offloader" -n 1000 public/default/fs-test
-    ```
+   ```
+   
+   ./bin/pulsar-client produce -m "Hello FileSystem Offloader" -n 1000 public/default/fs-test
+   
+   ```
 
 4. The offloading operation starts after a ledger rollover is triggered. To ensure offload data successfully, it is recommended that you wait until several ledger rollovers are triggered. In this case, you might need to wait for a second. You can check the ledger status using pulsarctl.
 
-    ```
-    ./bin/pulsarctl topics internal-stats public/default/fs-test
-    ```
-
-    **Output**
-
-    The data of the ledger 696 is not offloaded.
-
-    ```
-    {
-    "version": 1,
-    "creationDate": "2020-06-16T21:46:25.807+08:00",
-    "modificationDate": "2020-06-16T21:46:25.821+08:00",
-    "ledgers": [
-    {
-        "ledgerId": 696,
-        "isOffloaded": false
-    }
-    ],
-    "cursors": {}
-    }
-    ```
+   ```
+   
+   ./bin/pulsarctl topics internal-stats public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   The data of the ledger 696 is not offloaded.
+
+   ```
+   
+   {
+   "version": 1,
+   "creationDate": "2020-06-16T21:46:25.807+08:00",
+   "modificationDate": "2020-06-16T21:46:25.821+08:00",
+   "ledgers": [
+   {
+       "ledgerId": 696,
+       "isOffloaded": false
+   }
+   ],
+   "cursors": {}
+   }
+   
+   ```
 
 5. Wait a second and send more messages to the topic.
 
-    ```
-    ./bin/pulsar-client produce -m "Hello FileSystem Offloader" -n 1000 public/default/fs-test
-    ```
+   ```
+   
+   ./bin/pulsar-client produce -m "Hello FileSystem Offloader" -n 1000 public/default/fs-test
+   
+   ```
 
 6. Check the ledger status using pulsarctl.
 
-    ```
-    ./bin/pulsarctl topics internal-stats public/default/fs-test
-    ```
-
-    **Output**
-
-    The ledger 696 is rollovered.
-
-    ```
-    {
-    "version": 2,
-    "creationDate": "2020-06-16T21:46:25.807+08:00",
-    "modificationDate": "2020-06-16T21:48:52.288+08:00",
-    "ledgers": [
-    {
-        "ledgerId": 696,
-        "entries": 1001,
-        "size": 81695,
-        "isOffloaded": false
-    },
-    {
-        "ledgerId": 697,
-        "isOffloaded": false
-    }
-    ],
-    "cursors": {}
-    }
-    ```
+   ```
+   
+   ./bin/pulsarctl topics internal-stats public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   The ledger 696 is rollovered.
+
+   ```
+   
+   {
+   "version": 2,
+   "creationDate": "2020-06-16T21:46:25.807+08:00",
+   "modificationDate": "2020-06-16T21:48:52.288+08:00",
+   "ledgers": [
+   {
+       "ledgerId": 696,
+       "entries": 1001,
+       "size": 81695,
+       "isOffloaded": false
+   },
+   {
+       "ledgerId": 697,
+       "isOffloaded": false
+   }
+   ],
+   "cursors": {}
+   }
+   
+   ```
 
 7. Trigger the offloading operation manually using pulsarctl.
 
-    ```
-    ./bin/pulsarctl topic offload -s 0 public/default/fs-test
-    ```
+   ```
+   
+   ./bin/pulsarctl topic offload -s 0 public/default/fs-test
+   
+   ```
 
-    **Output**
+   **Output**
 
-    Data in ledgers before the ledge 697 is offloaded.
+   Data in ledgers before the ledge 697 is offloaded.
 
-    ```
-    # offload info, the ledgers before 697 will be offloaded
-    Offload triggered for persistent://public/default/fs-test3 for messages before 697:0:-1
-    ```
+   ```
+   
+   # offload info, the ledgers before 697 will be offloaded
+   Offload triggered for persistent://public/default/fs-test3 for messages before 697:0:-1
+   
+   ```
 
 8.  Check the ledger status using pulsarctl.
 
-    ```
-    ./bin/pulsarctl topic internal-info public/default/fs-test
-    ```
-
-    **Output**
-
-    The data of the ledger 696 is offloaded.
-
-    ```
-    {
-    "version": 4,
-    "creationDate": "2020-06-16T21:46:25.807+08:00",
-    "modificationDate": "2020-06-16T21:52:13.25+08:00",
-    "ledgers": [
-    {
-        "ledgerId": 696,
-        "entries": 1001,
-        "size": 81695,
-        "isOffloaded": true
-    },
-    {
-        "ledgerId": 697,
-        "isOffloaded": false
-    }
-    ],
-    "cursors": {}
-    }
-    ```
-
-    And the **Capacity Used** is changed from 4 KB to 116.46 KB.
-
-    ![](assets/FileSystem-8.png)
\ No newline at end of file
+   ```
+   
+   ./bin/pulsarctl topic internal-info public/default/fs-test
+   
+   ```
+
+   **Output**
+
+   The data of the ledger 696 is offloaded.
+
+   ```
+   
+   {
+   "version": 4,
+   "creationDate": "2020-06-16T21:46:25.807+08:00",
+   "modificationDate": "2020-06-16T21:52:13.25+08:00",
+   "ledgers": [
+   {
+       "ledgerId": 696,
+       "entries": 1001,
+       "size": 81695,
+       "isOffloaded": true
+   },
+   {
+       "ledgerId": 697,
+       "isOffloaded": false
+   }
+   ],
+   "cursors": {}
+   }
+   
+   ```
+
+   And the **Capacity Used** is changed from 4 KB to 116.46 KB.
+
+   ![](/assets/FileSystem-8.png)
\ No newline at end of file
diff --git a/site2/website-next/docs/tiered-storage-gcs.md b/site2/website-next/docs/tiered-storage-gcs.md
index 17dd758..a344ae0 100644
--- a/site2/website-next/docs/tiered-storage-gcs.md
+++ b/site2/website-next/docs/tiered-storage-gcs.md
@@ -4,10 +4,6 @@ title: Use GCS offloader with Pulsar
 sidebar_label: "GCS offloader"
 ---
 
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-
 This chapter guides you through every step of installing and configuring the GCS offloader and using it with Pulsar.
 
 ## Installation
diff --git a/site2/website-next/docs/tiered-storage-overview.md b/site2/website-next/docs/tiered-storage-overview.md
index e39d8a7..1b595d5 100644
... 30512 lines suppressed ...