You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ti...@apache.org on 2022/12/03 03:02:21 UTC

[pulsar-site] branch main updated: Migrate docs sync logic to pytools (#314)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 52382c1ecc2 Migrate docs sync logic to pytools (#314)
52382c1ecc2 is described below

commit 52382c1ecc2aa44fcdaad9024f6f0bbb5cab6da3
Author: tison <wa...@gmail.com>
AuthorDate: Sat Dec 3 11:02:15 2022 +0800

    Migrate docs sync logic to pytools (#314)
    
    Signed-off-by: tison <wa...@gmail.com>
---
 .github/workflows/ci-pulsar-website-docs-sync.yaml |  48 +-
 .../scripts/split-swagger-by-version.js            |   8 +-
 .../static/swagger/2.10.0/v2/swagger.json          |   2 +-
 .../static/swagger/2.10.0/v3/swaggerfunctions.json |   2 +-
 .../static/swagger/2.10.0/v3/swaggerpackages.json  |   2 +-
 .../static/swagger/2.10.0/v3/swaggersink.json      |   2 +-
 .../static/swagger/2.10.0/v3/swaggersource.json    |   2 +-
 .../static/swagger/2.10.1/v2/swagger.json          |   2 +-
 .../static/swagger/2.10.1/v3/swaggerfunctions.json |   2 +-
 .../static/swagger/2.10.1/v3/swaggerpackages.json  |   2 +-
 .../static/swagger/2.10.1/v3/swaggersink.json      |   2 +-
 .../static/swagger/2.10.1/v3/swaggersource.json    |   2 +-
 .../static/swagger/2.10.2/v2/swagger.json          |   2 +-
 .../static/swagger/2.10.2/v3/swaggerfunctions.json |   2 +-
 .../static/swagger/2.10.2/v3/swaggerpackages.json  |   2 +-
 .../static/swagger/2.10.2/v3/swaggersink.json      |   2 +-
 .../static/swagger/2.10.2/v3/swaggersource.json    |   2 +-
 .../static/swagger/2.3.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.3.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.3.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.3.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.3.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.3.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.3.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.3.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.3.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.3.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.3.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.3.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.4.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.4.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.4.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.4.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.4.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.4.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.4.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.4.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.4.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.4.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.4.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.4.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.5.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.5.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.5.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.5.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.5.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.5.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.5.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.5.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.5.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.5.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.5.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.5.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.6.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.6.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.6.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.6.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.6.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.6.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.6.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.6.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.6.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.6.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.6.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.6.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.7.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.7.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.7.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.7.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.7.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.7.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.7.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.7.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.7.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.7.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.7.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.7.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.7.3/v2/swagger.json           |   2 +-
 .../static/swagger/2.7.3/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.7.3/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.7.3/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.7.4/v2/swagger.json           |   2 +-
 .../static/swagger/2.7.4/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.7.4/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.7.4/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.7.5/v2/swagger.json           |   2 +-
 .../static/swagger/2.7.5/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.7.5/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.7.5/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.8.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.8.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.8.0/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.8.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.8.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.8.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.8.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.8.1/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.8.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.8.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.8.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.8.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.8.2/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.8.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.8.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.8.3/v2/swagger.json           |   2 +-
 .../static/swagger/2.8.3/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.8.3/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.8.3/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.8.3/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.8.4/v2/swagger.json           |   2 +-
 .../static/swagger/2.8.4/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.8.4/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.8.4/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.8.4/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.9.0/v2/swagger.json           |   2 +-
 .../static/swagger/2.9.0/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.9.0/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.9.0/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.9.0/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.9.1/v2/swagger.json           |   2 +-
 .../static/swagger/2.9.1/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.9.1/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.9.1/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.9.1/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.9.2/v2/swagger.json           |   2 +-
 .../static/swagger/2.9.2/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.9.2/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.9.2/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.9.2/v3/swaggersource.json     |   2 +-
 .../static/swagger/2.9.3/v2/swagger.json           |   2 +-
 .../static/swagger/2.9.3/v3/swaggerfunctions.json  |   2 +-
 .../static/swagger/2.9.3/v3/swaggerpackages.json   |   2 +-
 .../static/swagger/2.9.3/v3/swaggersink.json       |   2 +-
 .../static/swagger/2.9.3/v3/swaggersource.json     |   2 +-
 .../static/swagger/restApiVersions.json            | 506 ++++++++++-----------
 tools/pytools/README.md                            |   2 +-
 tools/pytools/bin/site-updater.py                  |  80 ++++
 tools/pytools/lib/execute/site_syncer.py           |  51 +++
 tools/pytools/lib/execute/swagger_sorter.py        |  51 +++
 tools/pytools/poetry.lock                          |  72 +--
 tools/pytools/pyproject.toml                       |   2 +-
 141 files changed, 587 insertions(+), 497 deletions(-)

diff --git a/.github/workflows/ci-pulsar-website-docs-sync.yaml b/.github/workflows/ci-pulsar-website-docs-sync.yaml
index 1f2ef0aac12..3f1127b596d 100644
--- a/.github/workflows/ci-pulsar-website-docs-sync.yaml
+++ b/.github/workflows/ci-pulsar-website-docs-sync.yaml
@@ -19,6 +19,7 @@
 
 name: CI - Pulsar Website Docs Sync from apache/pulsar
 on:
+  pull_request:
   schedule:
     - cron: "0 */6 * * *"
   workflow_dispatch:
@@ -30,40 +31,15 @@ jobs:
     runs-on: ubuntu-latest
     timeout-minutes: 180
     steps:
-      - name: Docs sync from repo apache/pulsar
-        env:
-          GH_TOKEN: ${{ secrets.PULSARBOT_TOKEN }}
-          CROWDIN_DOCUSAURUS_API_KEY: ${{ secrets.PULSAR_CROWDIN_DOCUSAURUS_API_KEY }}
+      - uses: actions/checkout@v3
+      - name: Install poetry
+        run: pipx install poetry
+      - uses: actions/setup-python@v4
+        with:
+          python-version: '3.10'
+          cache: 'poetry'
+      - name: Update site sources
+        working-directory: tools/pytools
         run: |
-          git clone -b main --depth 1 "https://$GH_TOKEN@github.com/apache/pulsar-site.git" pulsar-site
-          echo "pulsar-site clone done."
-          git clone -b master --depth 1 https://github.com/apache/pulsar.git pulsar
-          echo "pulsar clone done."
-
-          DIR=$(pwd)
-
-          cd pulsar-site/site2/website-next
-
-          sh scripts/sync-docs.sh
-
-          echo "docs override done."
-
-          cd $DIR/pulsar
-
-          PULSAR_COMMIT_ID=$(git rev-parse --short HEAD)
-
-          cd $DIR/pulsar-site
-
-          git add -A .
-          git status
-
-          git config user.name "Pulsar Site Updater"
-          git config user.email "dev@pulsar.apache.org"
-
-          git remote -v
-
-          # git diff-index --quiet HEAD || (git commit -m "Docs sync done from apache/pulsar(#$PULSAR_COMMIT_ID)" && git push -q origin main)
-          git commit --allow-empty -m "Docs sync done from apache/pulsar(#$PULSAR_COMMIT_ID)"
-          git push -q origin main
-
-          echo "Docs sync done from apache/pulsar(#$PULSAR_COMMIT_ID)"
+          poetry install
+          poetry run bin/site-updater.py
diff --git a/site2/website-next/scripts/split-swagger-by-version.js b/site2/website-next/scripts/split-swagger-by-version.js
index a0a4fdbeef3..d010b47c579 100644
--- a/site2/website-next/scripts/split-swagger-by-version.js
+++ b/site2/website-next/scripts/split-swagger-by-version.js
@@ -8,7 +8,7 @@ const patterns = [`${CWD}/static/swagger/*/**.json`];
 (async () => {
     const jsonFiles = await globby(patterns);
     let restApiVersions = {}
-    
+
     jsonFiles.map(async (filePath) => {
         let data = fs.readFileSync(filePath)
         let jsonData = JSON.parse(data)
@@ -18,12 +18,12 @@ const patterns = [`${CWD}/static/swagger/*/**.json`];
         let pulsarVersion = reverseList[1]
         let restApiVersion = jsonData.info.version
         let restApiDir = `${CWD}/static/swagger/${pulsarVersion}/${restApiVersion}`
-        
+
         if (!fs.existsSync(restApiDir)){
             fs.mkdirSync(restApiDir);
         }
         if (restApiVersions.hasOwnProperty(pulsarVersion)) {
-            
+
             let isHasFileFlag = false
             for (var i = 0; i < restApiVersions[pulsarVersion].length; i++) {
                 if (restApiVersion === restApiVersions[pulsarVersion][i]['version']) {
@@ -46,7 +46,7 @@ const patterns = [`${CWD}/static/swagger/*/**.json`];
             }]
 
         }
-        
+
         fs.writeFile(restApiDir + '/' + fileName, JSON.stringify(jsonData, null, 4),  function(err) {
             if (err) {
                 return console.error(err);
diff --git a/site2/website-next/static/swagger/2.10.0/v2/swagger.json b/site2/website-next/static/swagger/2.10.0/v2/swagger.json
index 44f13df315f..c6d5ae625e0 100644
--- a/site2/website-next/static/swagger/2.10.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.10.0/v2/swagger.json
@@ -30112,4 +30112,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.10.0/v3/swaggerfunctions.json
index d685804a4a7..891c449e25a 100644
--- a/site2/website-next/static/swagger/2.10.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.10.0/v3/swaggerfunctions.json
@@ -3292,4 +3292,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.0/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.10.0/v3/swaggerpackages.json
index a9c2fa0d568..f39f5cfdfa2 100644
--- a/site2/website-next/static/swagger/2.10.0/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.10.0/v3/swaggerpackages.json
@@ -1797,4 +1797,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.10.0/v3/swaggersink.json
index dc541bd0754..5641e1ba341 100644
--- a/site2/website-next/static/swagger/2.10.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.10.0/v3/swaggersink.json
@@ -2588,4 +2588,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.10.0/v3/swaggersource.json
index 61c748fe42e..76e98edea7a 100644
--- a/site2/website-next/static/swagger/2.10.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.10.0/v3/swaggersource.json
@@ -2539,4 +2539,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.1/v2/swagger.json b/site2/website-next/static/swagger/2.10.1/v2/swagger.json
index 690f1b73960..58d8fd1fb68 100644
--- a/site2/website-next/static/swagger/2.10.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.10.1/v2/swagger.json
@@ -30590,4 +30590,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.10.1/v3/swaggerfunctions.json
index 2bb73011ad7..7d381b41664 100644
--- a/site2/website-next/static/swagger/2.10.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.10.1/v3/swaggerfunctions.json
@@ -3407,4 +3407,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.1/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.10.1/v3/swaggerpackages.json
index d7e8f3dc9c9..a4623bcc290 100644
--- a/site2/website-next/static/swagger/2.10.1/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.10.1/v3/swaggerpackages.json
@@ -1912,4 +1912,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.10.1/v3/swaggersink.json
index cde93d3f0c0..b2d9eb4820b 100644
--- a/site2/website-next/static/swagger/2.10.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.10.1/v3/swaggersink.json
@@ -2703,4 +2703,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.10.1/v3/swaggersource.json
index 54c109cbd1b..7bc2c76b559 100644
--- a/site2/website-next/static/swagger/2.10.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.10.1/v3/swaggersource.json
@@ -2654,4 +2654,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.2/v2/swagger.json b/site2/website-next/static/swagger/2.10.2/v2/swagger.json
index 2d1991d3039..29db719ffbb 100644
--- a/site2/website-next/static/swagger/2.10.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.10.2/v2/swagger.json
@@ -30597,4 +30597,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.10.2/v3/swaggerfunctions.json
index 1daa9fefc64..6cc94e22ff1 100644
--- a/site2/website-next/static/swagger/2.10.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.10.2/v3/swaggerfunctions.json
@@ -3411,4 +3411,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.2/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.10.2/v3/swaggerpackages.json
index f17c982abba..51dd7afd218 100644
--- a/site2/website-next/static/swagger/2.10.2/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.10.2/v3/swaggerpackages.json
@@ -1912,4 +1912,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.10.2/v3/swaggersink.json
index 6c2f3efcd8c..7a1d7afbaaa 100644
--- a/site2/website-next/static/swagger/2.10.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.10.2/v3/swaggersink.json
@@ -2703,4 +2703,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.10.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.10.2/v3/swaggersource.json
index da463e5485d..5469eb1d2c6 100644
--- a/site2/website-next/static/swagger/2.10.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.10.2/v3/swaggersource.json
@@ -2654,4 +2654,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.0/v2/swagger.json b/site2/website-next/static/swagger/2.3.0/v2/swagger.json
index 3e1911854bd..31d491e119c 100644
--- a/site2/website-next/static/swagger/2.3.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.3.0/v2/swagger.json
@@ -9692,4 +9692,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json
index dacf82baef7..3264f6ccfbf 100644
--- a/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.3.0/v3/swaggerfunctions.json
@@ -3731,4 +3731,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.3.0/v3/swaggersink.json
index 613ebee55e7..83298c4161d 100644
--- a/site2/website-next/static/swagger/2.3.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.3.0/v3/swaggersink.json
@@ -3291,4 +3291,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.3.0/v3/swaggersource.json
index 105cd7e331c..0579c9ff5ec 100644
--- a/site2/website-next/static/swagger/2.3.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.3.0/v3/swaggersource.json
@@ -3291,4 +3291,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.1/v2/swagger.json b/site2/website-next/static/swagger/2.3.1/v2/swagger.json
index 3e1911854bd..31d491e119c 100644
--- a/site2/website-next/static/swagger/2.3.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.3.1/v2/swagger.json
@@ -9692,4 +9692,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.3.1/v3/swaggerfunctions.json
index dacf82baef7..3264f6ccfbf 100644
--- a/site2/website-next/static/swagger/2.3.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.3.1/v3/swaggerfunctions.json
@@ -3731,4 +3731,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.3.1/v3/swaggersink.json
index 613ebee55e7..83298c4161d 100644
--- a/site2/website-next/static/swagger/2.3.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.3.1/v3/swaggersink.json
@@ -3291,4 +3291,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.3.1/v3/swaggersource.json
index 105cd7e331c..0579c9ff5ec 100644
--- a/site2/website-next/static/swagger/2.3.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.3.1/v3/swaggersource.json
@@ -3291,4 +3291,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.2/v2/swagger.json b/site2/website-next/static/swagger/2.3.2/v2/swagger.json
index 3e1911854bd..31d491e119c 100644
--- a/site2/website-next/static/swagger/2.3.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.3.2/v2/swagger.json
@@ -9692,4 +9692,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.3.2/v3/swaggerfunctions.json
index dacf82baef7..3264f6ccfbf 100644
--- a/site2/website-next/static/swagger/2.3.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.3.2/v3/swaggerfunctions.json
@@ -3731,4 +3731,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.3.2/v3/swaggersink.json
index 613ebee55e7..83298c4161d 100644
--- a/site2/website-next/static/swagger/2.3.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.3.2/v3/swaggersink.json
@@ -3291,4 +3291,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.3.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.3.2/v3/swaggersource.json
index 105cd7e331c..0579c9ff5ec 100644
--- a/site2/website-next/static/swagger/2.3.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.3.2/v3/swaggersource.json
@@ -3291,4 +3291,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.0/v2/swagger.json b/site2/website-next/static/swagger/2.4.0/v2/swagger.json
index 207d756d778..81ab8f78f08 100644
--- a/site2/website-next/static/swagger/2.4.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.4.0/v2/swagger.json
@@ -11309,4 +11309,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.4.0/v3/swaggerfunctions.json
index 74607fb412a..cd4f3e87c26 100644
--- a/site2/website-next/static/swagger/2.4.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.4.0/v3/swaggerfunctions.json
@@ -1710,4 +1710,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.4.0/v3/swaggersink.json
index b6cf48e3913..385c9ceccb9 100644
--- a/site2/website-next/static/swagger/2.4.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.4.0/v3/swaggersink.json
@@ -1074,4 +1074,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.4.0/v3/swaggersource.json
index c1b9998cd66..5aa84cb90c0 100644
--- a/site2/website-next/static/swagger/2.4.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.4.0/v3/swaggersource.json
@@ -1007,4 +1007,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.1/v2/swagger.json b/site2/website-next/static/swagger/2.4.1/v2/swagger.json
index d8ac925fb23..8bbfa27c1c3 100644
--- a/site2/website-next/static/swagger/2.4.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.4.1/v2/swagger.json
@@ -11360,4 +11360,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.4.1/v3/swaggerfunctions.json
index 93367247866..27a642f89e9 100644
--- a/site2/website-next/static/swagger/2.4.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.4.1/v3/swaggerfunctions.json
@@ -1710,4 +1710,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.4.1/v3/swaggersink.json
index 2bc68343c56..9167dfb9f8f 100644
--- a/site2/website-next/static/swagger/2.4.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.4.1/v3/swaggersink.json
@@ -1084,4 +1084,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.4.1/v3/swaggersource.json
index 8ba5e421479..c9b2539ce70 100644
--- a/site2/website-next/static/swagger/2.4.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.4.1/v3/swaggersource.json
@@ -1035,4 +1035,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.2/v2/swagger.json b/site2/website-next/static/swagger/2.4.2/v2/swagger.json
index f46e10768b4..2ada11f65e2 100644
--- a/site2/website-next/static/swagger/2.4.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.4.2/v2/swagger.json
@@ -11667,4 +11667,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.4.2/v3/swaggerfunctions.json
index 37adaca4703..5660d2de6a2 100644
--- a/site2/website-next/static/swagger/2.4.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.4.2/v3/swaggerfunctions.json
@@ -1710,4 +1710,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.4.2/v3/swaggersink.json
index 895f31abc77..703d41a7b96 100644
--- a/site2/website-next/static/swagger/2.4.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.4.2/v3/swaggersink.json
@@ -1091,4 +1091,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.4.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.4.2/v3/swaggersource.json
index 8ba5e421479..c9b2539ce70 100644
--- a/site2/website-next/static/swagger/2.4.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.4.2/v3/swaggersource.json
@@ -1035,4 +1035,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.0/v2/swagger.json b/site2/website-next/static/swagger/2.5.0/v2/swagger.json
index 8c8a6ce6d9b..286c4216067 100644
--- a/site2/website-next/static/swagger/2.5.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.5.0/v2/swagger.json
@@ -11997,4 +11997,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.5.0/v3/swaggerfunctions.json
index 6c1d8b9ad65..b0b6f037944 100644
--- a/site2/website-next/static/swagger/2.5.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.5.0/v3/swaggerfunctions.json
@@ -1713,4 +1713,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.5.0/v3/swaggersink.json
index 41d60498bc8..ee2bba5c38c 100644
--- a/site2/website-next/static/swagger/2.5.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.5.0/v3/swaggersink.json
@@ -1112,4 +1112,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.5.0/v3/swaggersource.json
index 0edc50138c5..501bfc4e59d 100644
--- a/site2/website-next/static/swagger/2.5.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.5.0/v3/swaggersource.json
@@ -1056,4 +1056,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.1/v2/swagger.json b/site2/website-next/static/swagger/2.5.1/v2/swagger.json
index 91237477b6c..17b2716c0e2 100644
--- a/site2/website-next/static/swagger/2.5.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.5.1/v2/swagger.json
@@ -12426,4 +12426,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.5.1/v3/swaggerfunctions.json
index ed27e5179ac..2dc045f9ac5 100644
--- a/site2/website-next/static/swagger/2.5.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.5.1/v3/swaggerfunctions.json
@@ -1713,4 +1713,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.5.1/v3/swaggersink.json
index 41d60498bc8..ee2bba5c38c 100644
--- a/site2/website-next/static/swagger/2.5.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.5.1/v3/swaggersink.json
@@ -1112,4 +1112,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.5.1/v3/swaggersource.json
index 0edc50138c5..501bfc4e59d 100644
--- a/site2/website-next/static/swagger/2.5.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.5.1/v3/swaggersource.json
@@ -1056,4 +1056,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.2/v2/swagger.json b/site2/website-next/static/swagger/2.5.2/v2/swagger.json
index ee6c489656e..b33232690bf 100644
--- a/site2/website-next/static/swagger/2.5.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.5.2/v2/swagger.json
@@ -12581,4 +12581,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.5.2/v3/swaggerfunctions.json
index c3cb368652d..75eb9097898 100644
--- a/site2/website-next/static/swagger/2.5.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.5.2/v3/swaggerfunctions.json
@@ -1717,4 +1717,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.5.2/v3/swaggersink.json
index 41d60498bc8..ee2bba5c38c 100644
--- a/site2/website-next/static/swagger/2.5.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.5.2/v3/swaggersink.json
@@ -1112,4 +1112,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.5.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.5.2/v3/swaggersource.json
index 0edc50138c5..501bfc4e59d 100644
--- a/site2/website-next/static/swagger/2.5.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.5.2/v3/swaggersource.json
@@ -1056,4 +1056,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.0/v2/swagger.json b/site2/website-next/static/swagger/2.6.0/v2/swagger.json
index 2a896cc370f..ed3ce8534f7 100644
--- a/site2/website-next/static/swagger/2.6.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.6.0/v2/swagger.json
@@ -13844,4 +13844,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.6.0/v3/swaggerfunctions.json
index 7a79d454f99..d64dc7c4a4e 100644
--- a/site2/website-next/static/swagger/2.6.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.6.0/v3/swaggerfunctions.json
@@ -1747,4 +1747,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.6.0/v3/swaggersink.json
index af17e5cc139..c8ad55a1e5d 100644
--- a/site2/website-next/static/swagger/2.6.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.6.0/v3/swaggersink.json
@@ -1232,4 +1232,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.6.0/v3/swaggersource.json
index d69c4e0598c..484c26b88b7 100644
--- a/site2/website-next/static/swagger/2.6.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.6.0/v3/swaggersource.json
@@ -1170,4 +1170,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.1/v2/swagger.json b/site2/website-next/static/swagger/2.6.1/v2/swagger.json
index 2bfda773ce5..cf95ba58185 100644
--- a/site2/website-next/static/swagger/2.6.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.6.1/v2/swagger.json
@@ -14007,4 +14007,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.6.1/v3/swaggerfunctions.json
index 2e3790fa7af..ca3c3fcacfb 100644
--- a/site2/website-next/static/swagger/2.6.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.6.1/v3/swaggerfunctions.json
@@ -1747,4 +1747,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.6.1/v3/swaggersink.json
index af17e5cc139..c8ad55a1e5d 100644
--- a/site2/website-next/static/swagger/2.6.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.6.1/v3/swaggersink.json
@@ -1232,4 +1232,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.6.1/v3/swaggersource.json
index d69c4e0598c..484c26b88b7 100644
--- a/site2/website-next/static/swagger/2.6.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.6.1/v3/swaggersource.json
@@ -1170,4 +1170,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.2/v2/swagger.json b/site2/website-next/static/swagger/2.6.2/v2/swagger.json
index ef9656b6ecd..a851e1957b5 100644
--- a/site2/website-next/static/swagger/2.6.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.6.2/v2/swagger.json
@@ -14466,4 +14466,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.6.2/v3/swaggerfunctions.json
index 4ad2734e21f..b53b1a28dfd 100644
--- a/site2/website-next/static/swagger/2.6.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.6.2/v3/swaggerfunctions.json
@@ -1747,4 +1747,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.6.2/v3/swaggersink.json
index af17e5cc139..c8ad55a1e5d 100644
--- a/site2/website-next/static/swagger/2.6.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.6.2/v3/swaggersink.json
@@ -1232,4 +1232,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.6.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.6.2/v3/swaggersource.json
index d69c4e0598c..484c26b88b7 100644
--- a/site2/website-next/static/swagger/2.6.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.6.2/v3/swaggersource.json
@@ -1170,4 +1170,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.0/v2/swagger.json b/site2/website-next/static/swagger/2.7.0/v2/swagger.json
index 312fa203975..9f70e5bb9c0 100644
--- a/site2/website-next/static/swagger/2.7.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.7.0/v2/swagger.json
@@ -19991,4 +19991,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.7.0/v3/swaggerfunctions.json
index 81df4932c7c..87085595f94 100644
--- a/site2/website-next/static/swagger/2.7.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.7.0/v3/swaggerfunctions.json
@@ -1875,4 +1875,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.7.0/v3/swaggersink.json
index d8b647bdaf3..449744ad330 100644
--- a/site2/website-next/static/swagger/2.7.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.7.0/v3/swaggersink.json
@@ -1276,4 +1276,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.7.0/v3/swaggersource.json
index f7adb60db2a..bed691c9ac3 100644
--- a/site2/website-next/static/swagger/2.7.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.7.0/v3/swaggersource.json
@@ -1233,4 +1233,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.1/v2/swagger.json b/site2/website-next/static/swagger/2.7.1/v2/swagger.json
index 543d32b6c0b..3972b5a88bd 100644
--- a/site2/website-next/static/swagger/2.7.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.7.1/v2/swagger.json
@@ -21051,4 +21051,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.7.1/v3/swaggerfunctions.json
index f94c94fb416..b73e89c5f1b 100644
--- a/site2/website-next/static/swagger/2.7.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.7.1/v3/swaggerfunctions.json
@@ -1875,4 +1875,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.7.1/v3/swaggersink.json
index d8b647bdaf3..449744ad330 100644
--- a/site2/website-next/static/swagger/2.7.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.7.1/v3/swaggersink.json
@@ -1276,4 +1276,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.7.1/v3/swaggersource.json
index f7adb60db2a..bed691c9ac3 100644
--- a/site2/website-next/static/swagger/2.7.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.7.1/v3/swaggersource.json
@@ -1233,4 +1233,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.2/v2/swagger.json b/site2/website-next/static/swagger/2.7.2/v2/swagger.json
index d7e332294ea..7474d8933a8 100644
--- a/site2/website-next/static/swagger/2.7.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.7.2/v2/swagger.json
@@ -21078,4 +21078,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.7.2/v3/swaggerfunctions.json
index b4bfdc8e3d6..1849884cd58 100644
--- a/site2/website-next/static/swagger/2.7.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.7.2/v3/swaggerfunctions.json
@@ -1875,4 +1875,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.7.2/v3/swaggersink.json
index d8b647bdaf3..449744ad330 100644
--- a/site2/website-next/static/swagger/2.7.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.7.2/v3/swaggersink.json
@@ -1276,4 +1276,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.7.2/v3/swaggersource.json
index f7adb60db2a..bed691c9ac3 100644
--- a/site2/website-next/static/swagger/2.7.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.7.2/v3/swaggersource.json
@@ -1233,4 +1233,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.3/v2/swagger.json b/site2/website-next/static/swagger/2.7.3/v2/swagger.json
index 76e00e8ef9e..6c74267ffc2 100644
--- a/site2/website-next/static/swagger/2.7.3/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.7.3/v2/swagger.json
@@ -22068,4 +22068,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.3/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.7.3/v3/swaggerfunctions.json
index fdf89f8e37b..fd417646660 100644
--- a/site2/website-next/static/swagger/2.7.3/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.7.3/v3/swaggerfunctions.json
@@ -1875,4 +1875,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.3/v3/swaggersink.json b/site2/website-next/static/swagger/2.7.3/v3/swaggersink.json
index d8b647bdaf3..449744ad330 100644
--- a/site2/website-next/static/swagger/2.7.3/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.7.3/v3/swaggersink.json
@@ -1276,4 +1276,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.3/v3/swaggersource.json b/site2/website-next/static/swagger/2.7.3/v3/swaggersource.json
index f7adb60db2a..bed691c9ac3 100644
--- a/site2/website-next/static/swagger/2.7.3/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.7.3/v3/swaggersource.json
@@ -1233,4 +1233,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.4/v2/swagger.json b/site2/website-next/static/swagger/2.7.4/v2/swagger.json
index 48069fbcf57..311154f2b34 100644
--- a/site2/website-next/static/swagger/2.7.4/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.7.4/v2/swagger.json
@@ -22211,4 +22211,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.4/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.7.4/v3/swaggerfunctions.json
index addd6a852da..51737a5b219 100644
--- a/site2/website-next/static/swagger/2.7.4/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.7.4/v3/swaggerfunctions.json
@@ -1875,4 +1875,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.4/v3/swaggersink.json b/site2/website-next/static/swagger/2.7.4/v3/swaggersink.json
index d8b647bdaf3..449744ad330 100644
--- a/site2/website-next/static/swagger/2.7.4/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.7.4/v3/swaggersink.json
@@ -1276,4 +1276,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.4/v3/swaggersource.json b/site2/website-next/static/swagger/2.7.4/v3/swaggersource.json
index f7adb60db2a..bed691c9ac3 100644
--- a/site2/website-next/static/swagger/2.7.4/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.7.4/v3/swaggersource.json
@@ -1233,4 +1233,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.5/v2/swagger.json b/site2/website-next/static/swagger/2.7.5/v2/swagger.json
index fe0c6d35397..c846454cc12 100644
--- a/site2/website-next/static/swagger/2.7.5/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.7.5/v2/swagger.json
@@ -22211,4 +22211,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.5/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.7.5/v3/swaggerfunctions.json
index a6863039d96..fd2eea87ab3 100644
--- a/site2/website-next/static/swagger/2.7.5/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.7.5/v3/swaggerfunctions.json
@@ -1875,4 +1875,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.5/v3/swaggersink.json b/site2/website-next/static/swagger/2.7.5/v3/swaggersink.json
index d8b647bdaf3..449744ad330 100644
--- a/site2/website-next/static/swagger/2.7.5/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.7.5/v3/swaggersink.json
@@ -1276,4 +1276,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.7.5/v3/swaggersource.json b/site2/website-next/static/swagger/2.7.5/v3/swaggersource.json
index f7adb60db2a..bed691c9ac3 100644
--- a/site2/website-next/static/swagger/2.7.5/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.7.5/v3/swaggersource.json
@@ -1233,4 +1233,4 @@
             "description": "Options while updating the sink"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.0/v2/swagger.json b/site2/website-next/static/swagger/2.8.0/v2/swagger.json
index d388f828dd6..9d1849c8ddd 100644
--- a/site2/website-next/static/swagger/2.8.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.8.0/v2/swagger.json
@@ -25922,4 +25922,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.8.0/v3/swaggerfunctions.json
index 1f3e2690c80..cd9984cc22b 100644
--- a/site2/website-next/static/swagger/2.8.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.8.0/v3/swaggerfunctions.json
@@ -3378,4 +3378,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.0/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.8.0/v3/swaggerpackages.json
index 24162f1d886..fd6f55cd2a1 100644
--- a/site2/website-next/static/swagger/2.8.0/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.8.0/v3/swaggerpackages.json
@@ -1873,4 +1873,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.8.0/v3/swaggersink.json
index 3bb04ea9711..ae3fd5fd8c8 100644
--- a/site2/website-next/static/swagger/2.8.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.8.0/v3/swaggersink.json
@@ -2679,4 +2679,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.8.0/v3/swaggersource.json
index ac5fce30f9d..c7d6f4af049 100644
--- a/site2/website-next/static/swagger/2.8.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.8.0/v3/swaggersource.json
@@ -2636,4 +2636,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.1/v2/swagger.json b/site2/website-next/static/swagger/2.8.1/v2/swagger.json
index 6c83b0d5924..32f6b605184 100644
--- a/site2/website-next/static/swagger/2.8.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.8.1/v2/swagger.json
@@ -27386,4 +27386,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.8.1/v3/swaggerfunctions.json
index d3f81d505c2..8c000fbf1e6 100644
--- a/site2/website-next/static/swagger/2.8.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.8.1/v3/swaggerfunctions.json
@@ -3378,4 +3378,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.1/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.8.1/v3/swaggerpackages.json
index f38fd835280..9d1ae305f36 100644
--- a/site2/website-next/static/swagger/2.8.1/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.8.1/v3/swaggerpackages.json
@@ -1873,4 +1873,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.8.1/v3/swaggersink.json
index adaccf31012..5fcd7f0f903 100644
--- a/site2/website-next/static/swagger/2.8.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.8.1/v3/swaggersink.json
@@ -2679,4 +2679,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.8.1/v3/swaggersource.json
index 00d1e52186f..3b2324fb6fb 100644
--- a/site2/website-next/static/swagger/2.8.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.8.1/v3/swaggersource.json
@@ -2636,4 +2636,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.2/v2/swagger.json b/site2/website-next/static/swagger/2.8.2/v2/swagger.json
index 04197f04165..a1d2a7922d4 100644
--- a/site2/website-next/static/swagger/2.8.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.8.2/v2/swagger.json
@@ -27420,4 +27420,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.8.2/v3/swaggerfunctions.json
index 7a0f84fb5fb..a9841c83dff 100644
--- a/site2/website-next/static/swagger/2.8.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.8.2/v3/swaggerfunctions.json
@@ -3378,4 +3378,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.2/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.8.2/v3/swaggerpackages.json
index 62e37880122..588420dff6c 100644
--- a/site2/website-next/static/swagger/2.8.2/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.8.2/v3/swaggerpackages.json
@@ -1873,4 +1873,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.8.2/v3/swaggersink.json
index 122f6810491..61e908ba130 100644
--- a/site2/website-next/static/swagger/2.8.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.8.2/v3/swaggersink.json
@@ -2679,4 +2679,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.8.2/v3/swaggersource.json
index c39eb69af3d..bb3ab435fd8 100644
--- a/site2/website-next/static/swagger/2.8.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.8.2/v3/swaggersource.json
@@ -2636,4 +2636,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.3/v2/swagger.json b/site2/website-next/static/swagger/2.8.3/v2/swagger.json
index 7b8640b9f30..8821898f188 100644
--- a/site2/website-next/static/swagger/2.8.3/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.8.3/v2/swagger.json
@@ -27438,4 +27438,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.3/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.8.3/v3/swaggerfunctions.json
index 1de4f064912..d4f34e1b329 100644
--- a/site2/website-next/static/swagger/2.8.3/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.8.3/v3/swaggerfunctions.json
@@ -3396,4 +3396,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.3/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.8.3/v3/swaggerpackages.json
index e6bf94047e7..940d87ccf09 100644
--- a/site2/website-next/static/swagger/2.8.3/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.8.3/v3/swaggerpackages.json
@@ -1891,4 +1891,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.3/v3/swaggersink.json b/site2/website-next/static/swagger/2.8.3/v3/swaggersink.json
index 3ab01b3563c..fbccf6fe051 100644
--- a/site2/website-next/static/swagger/2.8.3/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.8.3/v3/swaggersink.json
@@ -2697,4 +2697,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.3/v3/swaggersource.json b/site2/website-next/static/swagger/2.8.3/v3/swaggersource.json
index 8648e046b5c..ee622fe6571 100644
--- a/site2/website-next/static/swagger/2.8.3/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.8.3/v3/swaggersource.json
@@ -2654,4 +2654,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.4/v2/swagger.json b/site2/website-next/static/swagger/2.8.4/v2/swagger.json
index 848c4e293b7..dae4983fb53 100644
--- a/site2/website-next/static/swagger/2.8.4/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.8.4/v2/swagger.json
@@ -27714,4 +27714,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.4/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.8.4/v3/swaggerfunctions.json
index 42bd63a525d..39b29622808 100644
--- a/site2/website-next/static/swagger/2.8.4/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.8.4/v3/swaggerfunctions.json
@@ -3396,4 +3396,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.4/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.8.4/v3/swaggerpackages.json
index ebcb852e9c3..1e7af6d7170 100644
--- a/site2/website-next/static/swagger/2.8.4/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.8.4/v3/swaggerpackages.json
@@ -1891,4 +1891,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.4/v3/swaggersink.json b/site2/website-next/static/swagger/2.8.4/v3/swaggersink.json
index db7bb23d1ae..55cbe00124d 100644
--- a/site2/website-next/static/swagger/2.8.4/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.8.4/v3/swaggersink.json
@@ -2697,4 +2697,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.8.4/v3/swaggersource.json b/site2/website-next/static/swagger/2.8.4/v3/swaggersource.json
index bddf587de7b..d029c4104af 100644
--- a/site2/website-next/static/swagger/2.8.4/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.8.4/v3/swaggersource.json
@@ -2654,4 +2654,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.0/v2/swagger.json b/site2/website-next/static/swagger/2.9.0/v2/swagger.json
index 394a6231d80..fad54b885c0 100644
--- a/site2/website-next/static/swagger/2.9.0/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.9.0/v2/swagger.json
@@ -27791,4 +27791,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.0/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.9.0/v3/swaggerfunctions.json
index 54ebd68a782..a123698fd10 100644
--- a/site2/website-next/static/swagger/2.9.0/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.9.0/v3/swaggerfunctions.json
@@ -3389,4 +3389,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.0/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.9.0/v3/swaggerpackages.json
index d851273d782..51a1a22d344 100644
--- a/site2/website-next/static/swagger/2.9.0/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.9.0/v3/swaggerpackages.json
@@ -1873,4 +1873,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.0/v3/swaggersink.json b/site2/website-next/static/swagger/2.9.0/v3/swaggersink.json
index 2189e2b9cb5..f36a4d46f62 100644
--- a/site2/website-next/static/swagger/2.9.0/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.9.0/v3/swaggersink.json
@@ -2682,4 +2682,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.0/v3/swaggersource.json b/site2/website-next/static/swagger/2.9.0/v3/swaggersource.json
index 29f6d8fad41..ad98c1a34d3 100644
--- a/site2/website-next/static/swagger/2.9.0/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.9.0/v3/swaggersource.json
@@ -2636,4 +2636,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.1/v2/swagger.json b/site2/website-next/static/swagger/2.9.1/v2/swagger.json
index 1bb01b3522a..2546f5ca7e4 100644
--- a/site2/website-next/static/swagger/2.9.1/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.9.1/v2/swagger.json
@@ -27795,4 +27795,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.1/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.9.1/v3/swaggerfunctions.json
index b842bf90370..d02ea6af7d3 100644
--- a/site2/website-next/static/swagger/2.9.1/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.9.1/v3/swaggerfunctions.json
@@ -3389,4 +3389,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.1/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.9.1/v3/swaggerpackages.json
index 574631bb380..bcd44d214a2 100644
--- a/site2/website-next/static/swagger/2.9.1/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.9.1/v3/swaggerpackages.json
@@ -1873,4 +1873,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.1/v3/swaggersink.json b/site2/website-next/static/swagger/2.9.1/v3/swaggersink.json
index 57bd5a3b6e2..be77764a503 100644
--- a/site2/website-next/static/swagger/2.9.1/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.9.1/v3/swaggersink.json
@@ -2682,4 +2682,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.1/v3/swaggersource.json b/site2/website-next/static/swagger/2.9.1/v3/swaggersource.json
index 6d90d5fb900..e9c9871846c 100644
--- a/site2/website-next/static/swagger/2.9.1/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.9.1/v3/swaggersource.json
@@ -2636,4 +2636,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.2/v2/swagger.json b/site2/website-next/static/swagger/2.9.2/v2/swagger.json
index 78573436c59..c5a2e39d27b 100644
--- a/site2/website-next/static/swagger/2.9.2/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.9.2/v2/swagger.json
@@ -28053,4 +28053,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.2/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.9.2/v3/swaggerfunctions.json
index 343eb5322cf..e7052c8ebb3 100644
--- a/site2/website-next/static/swagger/2.9.2/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.9.2/v3/swaggerfunctions.json
@@ -3407,4 +3407,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.2/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.9.2/v3/swaggerpackages.json
index 1b0efc2367e..f7262ae16aa 100644
--- a/site2/website-next/static/swagger/2.9.2/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.9.2/v3/swaggerpackages.json
@@ -1891,4 +1891,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.2/v3/swaggersink.json b/site2/website-next/static/swagger/2.9.2/v3/swaggersink.json
index 99263a863e4..3a754fe3447 100644
--- a/site2/website-next/static/swagger/2.9.2/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.9.2/v3/swaggersink.json
@@ -2700,4 +2700,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.2/v3/swaggersource.json b/site2/website-next/static/swagger/2.9.2/v3/swaggersource.json
index dcda7582e59..33821de0c56 100644
--- a/site2/website-next/static/swagger/2.9.2/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.9.2/v3/swaggersource.json
@@ -2654,4 +2654,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.3/v2/swagger.json b/site2/website-next/static/swagger/2.9.3/v2/swagger.json
index 2c10cacd341..248094db92e 100644
--- a/site2/website-next/static/swagger/2.9.3/v2/swagger.json
+++ b/site2/website-next/static/swagger/2.9.3/v2/swagger.json
@@ -28091,4 +28091,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.3/v3/swaggerfunctions.json b/site2/website-next/static/swagger/2.9.3/v3/swaggerfunctions.json
index 08b2ec27e07..ea3f030ac38 100644
--- a/site2/website-next/static/swagger/2.9.3/v3/swaggerfunctions.json
+++ b/site2/website-next/static/swagger/2.9.3/v3/swaggerfunctions.json
@@ -3407,4 +3407,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.3/v3/swaggerpackages.json b/site2/website-next/static/swagger/2.9.3/v3/swaggerpackages.json
index 3772fe5ecd7..0857e5947e9 100644
--- a/site2/website-next/static/swagger/2.9.3/v3/swaggerpackages.json
+++ b/site2/website-next/static/swagger/2.9.3/v3/swaggerpackages.json
@@ -1891,4 +1891,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.3/v3/swaggersink.json b/site2/website-next/static/swagger/2.9.3/v3/swaggersink.json
index 17fbdf6109a..a2eb4e949b2 100644
--- a/site2/website-next/static/swagger/2.9.3/v3/swaggersink.json
+++ b/site2/website-next/static/swagger/2.9.3/v3/swaggersink.json
@@ -2700,4 +2700,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/2.9.3/v3/swaggersource.json b/site2/website-next/static/swagger/2.9.3/v3/swaggersource.json
index 5b45a5f4ac5..21ac0798bba 100644
--- a/site2/website-next/static/swagger/2.9.3/v3/swaggersource.json
+++ b/site2/website-next/static/swagger/2.9.3/v3/swaggersource.json
@@ -2654,4 +2654,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/site2/website-next/static/swagger/restApiVersions.json b/site2/website-next/static/swagger/restApiVersions.json
index 6307447cac6..e61f0540054 100644
--- a/site2/website-next/static/swagger/restApiVersions.json
+++ b/site2/website-next/static/swagger/restApiVersions.json
@@ -1,494 +1,494 @@
 {
     "2.10.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.10.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.10.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.3.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.3.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.3.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.4.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.4.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.4.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.5.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.5.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.5.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.6.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.6.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.6.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.7.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.7.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.7.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.7.3": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.7.4": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.7.5": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.8.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.8.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.8.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.8.3": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.8.4": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.9.0": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.9.1": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.9.2": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ],
     "2.9.3": [
         {
-            "version": "v2",
             "fileName": [
-                "swagger"
-            ]
+                "swaggersource",
+                "swaggerfunctions",
+                "swaggersink",
+                "swaggerpackages"
+            ],
+            "version": "v3"
         },
         {
-            "version": "v3",
             "fileName": [
-                "swaggerfunctions",
-                "swaggerpackages",
-                "swaggersink",
-                "swaggersource"
-            ]
+                "swagger"
+            ],
+            "version": "v2"
         }
     ]
-}
\ No newline at end of file
+}
diff --git a/tools/pytools/README.md b/tools/pytools/README.md
index 691c3ff0859..d4cba192e62 100644
--- a/tools/pytools/README.md
+++ b/tools/pytools/README.md
@@ -23,7 +23,7 @@
 
 ## Prerequisite
 
-Pytools requires Python 3.8+.
+Pytools requires Python 3.10+.
 
 Pytools uses [poetry](https://python-poetry.org/) to manage dependencies and projects.
 
diff --git a/tools/pytools/bin/site-updater.py b/tools/pytools/bin/site-updater.py
new file mode 100755
index 00000000000..19a93e40dad
--- /dev/null
+++ b/tools/pytools/bin/site-updater.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python3
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import enum
+import os
+import tempfile
+from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
+from pathlib import Path
+
+from command import run, find_command, run_pipe
+from constant import root_path
+from execute import site_syncer
+
+
+class Mode(enum.Enum):
+    y = 'y'
+    n = 'n'
+    auto = 'auto'
+
+
+def _should_push(mode: Mode) -> bool:
+    match mode:
+        case Mode.y:
+            return True
+        case Mode.n:
+            return False
+        case Mode.auto:
+            repo = os.getenv('GITHUB_REPOSITORY')
+            event = os.getenv('GITHUB_EVENT_NAME')
+            print(f'repo={repo}, event={event}')
+
+            result = (repo is not None) and (repo == 'apache/pulsar')
+            result = result and (event is not None) and (event != 'pull_request')
+            return result
+
+
+def _do_push(main: Path, site: Path):
+    _git = find_command('git', msg="git is required")
+    commit = run_pipe(_git, 'rev-parse', '--short', 'HEAD', cwd=main).read().strip()
+    run(_git, 'add', '-A', '.', cwd=site)
+    run(_git, 'status', cwd=site)
+    run(_git, 'remote', '-v', cwd=site)
+    run(_git, 'commit', '--allow-empty', '-m', f'Docs sync done from apache/pulsar (#{commit})', cwd=site)
+    run(_git, 'push', 'origin', 'main', cwd=site)
+
+
+if __name__ == '__main__':
+    parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
+    parser.add_argument('--master-path', type=str, metavar='PATH', help='path to pulsar main repo')
+    parser.add_argument('--push', type=Mode, default=Mode.auto, choices=list(Mode), help='whether push to remote')
+
+    args = parser.parse_args()
+
+    with tempfile.TemporaryDirectory() as cwd:
+        if args.master_path is None:
+            git = find_command('git', msg="git is required")
+            run(git, 'clone', '-b', 'master', '--depth', '1', 'https://github.com/apache/pulsar', cwd=cwd)
+            master = Path(cwd) / 'pulsar'
+        else:
+            master = Path(args.master_path)
+
+        site_syncer.execute(master)
+        if _should_push(args.push):
+            _do_push(master, root_path())
diff --git a/tools/pytools/lib/execute/site_syncer.py b/tools/pytools/lib/execute/site_syncer.py
new file mode 100644
index 00000000000..89109c267f7
--- /dev/null
+++ b/tools/pytools/lib/execute/site_syncer.py
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import shutil
+from pathlib import Path
+
+from constant import site_path
+from execute import swagger_sorter
+
+
+def execute(master: Path):
+    main = master / 'site2'
+    site = site_path()
+
+    shutil.copytree(main / 'docs', site / 'docs', dirs_exist_ok=True)
+    shutil.copytree(site / 'docs' / 'assets', site / 'static' / 'assets', dirs_exist_ok=True)
+    shutil.rmtree(site / 'docs' / 'assets')
+
+    main = main / 'website'
+    shutil.copytree(main / 'versioned_docs', site / 'versioned_docs', dirs_exist_ok=True)
+    shutil.copytree(main / 'versioned_sidebars', site / 'versioned_sidebars', dirs_exist_ok=True)
+    shutil.copy2(main / 'sidebars.json', site / 'sidebars.json')
+    shutil.copy2(main / 'versions.json', site / 'versions.json')
+    shutil.copy2(main / 'releases.json', site / 'releases.json')
+
+    shutil.copy2(
+        main / 'pulsar-manager-release-notes.md',
+        site / 'pulsar-manager' / 'pulsar-manager-release-notes.md')
+    shutil.copy2(
+        main / 'pulsar-manager-release.json',
+        site / 'pulsar-manager' / 'pulsar-manager-release.json')
+    shutil.copy2(
+        main / 'pulsar-adapters-release.json',
+        site / 'pulsar-manager' / 'pulsar-adapters-release.json')
+
+    shutil.copytree(main / 'static' / 'swagger', site / 'static' / 'swagger', dirs_exist_ok=True)
+    swagger_sorter.execute(site / 'static' / 'swagger')
diff --git a/tools/pytools/lib/execute/swagger_sorter.py b/tools/pytools/lib/execute/swagger_sorter.py
new file mode 100644
index 00000000000..79de6fcd95d
--- /dev/null
+++ b/tools/pytools/lib/execute/swagger_sorter.py
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import json
+import os
+from pathlib import Path
+
+
+def execute(base: Path):
+    rest_api_versions = {}
+
+    for f in base.glob('*/*.json'):
+        filename = f.stem
+        pulsar_version = f.parent.name
+
+        data = json.loads(f.read_text())
+        rest_api_version = data['info']['version']
+        rest_api_dir = base / pulsar_version / rest_api_version
+        os.makedirs(rest_api_dir, exist_ok=True)
+
+        if pulsar_version in rest_api_versions:
+            for v in rest_api_versions[pulsar_version]:
+                if v['version'] == rest_api_version:
+                    v['fileName'].append(filename)
+                    break
+            else:
+                rest_api_versions[pulsar_version].append({'version': rest_api_version, 'fileName': [filename]})
+        else:
+            rest_api_versions[pulsar_version] = [{'version': rest_api_version, 'fileName': [filename]}]
+
+        with (rest_api_dir / f.name).open('w+') as m:
+            json.dump(data, m, indent=4)
+            m.write('\n')
+
+    with (base / 'restApiVersions.json').open('w+') as m:
+        json.dump(rest_api_versions, m, indent=4, sort_keys=True)
+        m.write('\n')
diff --git a/tools/pytools/poetry.lock b/tools/pytools/poetry.lock
index b76e417dc57..2e58a86949f 100644
--- a/tools/pytools/poetry.lock
+++ b/tools/pytools/poetry.lock
@@ -14,18 +14,6 @@ category = "main"
 optional = false
 python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
 
-[[package]]
-name = "astunparse"
-version = "1.6.3"
-description = "An AST unparser for Python"
-category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-six = ">=1.6.1,<2.0"
-wheel = ">=0.23.0,<1.0"
-
 [[package]]
 name = "attrs"
 version = "22.1.0"
@@ -156,21 +144,6 @@ category = "main"
 optional = false
 python-versions = ">=3.5"
 
-[[package]]
-name = "importlib-resources"
-version = "5.10.0"
-description = "Read resources from Python packages"
-category = "main"
-optional = false
-python-versions = ">=3.7"
-
-[package.dependencies]
-zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
-testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
-
 [[package]]
 name = "incremental"
 version = "22.10.0"
@@ -252,7 +225,6 @@ optional = false
 python-versions = ">=3.7"
 
 [package.dependencies]
-astunparse = {version = "*", markers = "python_version < \"3.9\""}
 Jinja2 = ">=2.11.0"
 MarkupSafe = "*"
 pygments = ">=2.12.0"
@@ -275,7 +247,6 @@ attrs = "*"
 CacheControl = {version = "*", extras = ["filecache"]}
 configargparse = "*"
 docutils = ">=0.17"
-importlib-resources = {version = "*", markers = "python_version < \"3.9\""}
 lunr = "0.6.2"
 requests = "*"
 toml = "*"
@@ -448,29 +419,6 @@ docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"]
 optional = ["python-socks", "wsaccel"]
 test = ["websockets"]
 
-[[package]]
-name = "wheel"
-version = "0.38.4"
-description = "A built-package format for Python"
-category = "main"
-optional = false
-python-versions = ">=3.7"
-
-[package.extras]
-test = ["pytest (>=3.0.0)"]
-
-[[package]]
-name = "zipp"
-version = "3.10.0"
-description = "Backport of pathlib-compatible object wrapper for zip files"
-category = "main"
-optional = false
-python-versions = ">=3.7"
-
-[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
-testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
-
 [[package]]
 name = "zope-interface"
 version = "5.5.2"
@@ -489,8 +437,8 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
 
 [metadata]
 lock-version = "1.1"
-python-versions = "^3.8"
-content-hash = "dd7c214eff7ba00375c428af33ecca62f766c6731c380836f2f4999c294c38b7"
+python-versions = "^3.10"
+content-hash = "bd2aa7a882095fb34fe2e4097f35a8a6974ae9d791b947b34673db8d95dfb315"
 
 [metadata.files]
 appdirs = [
@@ -501,10 +449,6 @@ astor = [
     {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"},
     {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"},
 ]
-astunparse = [
-    {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"},
-    {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"},
-]
 attrs = [
     {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
     {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
@@ -549,10 +493,6 @@ idna = [
     {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
     {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
 ]
-importlib-resources = [
-    {file = "importlib_resources-5.10.0-py3-none-any.whl", hash = "sha256:ee17ec648f85480d523596ce49eae8ead87d5631ae1551f913c0100b5edd3437"},
-    {file = "importlib_resources-5.10.0.tar.gz", hash = "sha256:c01b1b94210d9849f286b86bb51bcea7cd56dde0600d8db721d7b81330711668"},
-]
 incremental = [
     {file = "incremental-22.10.0-py2.py3-none-any.whl", hash = "sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51"},
     {file = "incremental-22.10.0.tar.gz", hash = "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0"},
@@ -751,14 +691,6 @@ websocket-client = [
     {file = "websocket-client-1.4.2.tar.gz", hash = "sha256:d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59"},
     {file = "websocket_client-1.4.2-py3-none-any.whl", hash = "sha256:d6b06432f184438d99ac1f456eaf22fe1ade524c3dd16e661142dc54e9cba574"},
 ]
-wheel = [
-    {file = "wheel-0.38.4-py3-none-any.whl", hash = "sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8"},
-    {file = "wheel-0.38.4.tar.gz", hash = "sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac"},
-]
-zipp = [
-    {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"},
-    {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"},
-]
 zope-interface = [
     {file = "zope.interface-5.5.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5"},
     {file = "zope.interface-5.5.2-cp27-cp27m-win_amd64.whl", hash = "sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9"},
diff --git a/tools/pytools/pyproject.toml b/tools/pytools/pyproject.toml
index 4d0163d16fa..ba00597d39c 100644
--- a/tools/pytools/pyproject.toml
+++ b/tools/pytools/pyproject.toml
@@ -27,7 +27,7 @@ packages = [
 ]
 
 [tool.poetry.dependencies]
-python = "^3.8"
+python = "^3.10"
 semver = "^2.13.0"
 requests = "^2.28.1"
 pydoctor = "^22.9.1"