Repository: opensearch-project/opensearch-py
Pull request #246 (2022-11-24 09:08:21)

Fix DeprecationWarning raised by urllib3 1.26.13
### Description
urllib3 has started to emit a DeprecationWarning whenever HTTPResponse.getheaders() is called since version 1.26.13.

This changes the one place where this is done to instead use HTTPResponse.headers instead, which is the recommend way of retrieving the headers going forwards.

### Issues Resolved

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check [here](https://github.com/opensearch-project/OpenSearch/blob/main/CONTRIBUTING.md#developer-certificate-of-origin).


Patch:
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
new file mode 100644
index 00000000..84c4d0d9
--- /dev/null
+++ b/.github/workflows/release-drafter.yml
@@ -0,0 +1,31 @@
+name: Release drafter
+
+on:
+  push:
+    tags:
+      - "*"
+
+jobs:
+  draft-a-release:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout Repository
+        uses: actions/checkout@v3
+      - name: Set up Python 3
+        uses: actions/setup-python@v3
+        with:
+          python-version: '3.x'
+      - name: Install build tools
+        run: |
+          python -m pip install --upgrade build
+      - name: Build project for distribution
+        run: |
+          python -m build
+          tar -zvcf artifacts.tar.gz dist
+      - name: Release
+        uses: softprops/action-gh-release@v1
+        with:
+          draft: true
+          generate_release_notes: true
+          files: |
+            artifacts.tar.gz
diff --git a/.github/workflows/unified-release.yml b/.github/workflows/unified-release.yml
index 85081416..de6fab39 100644
--- a/.github/workflows/unified-release.yml
+++ b/.github/workflows/unified-release.yml
@@ -9,7 +9,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        stack_version: ['2.0.0']
+        stack_version: ['2.0.1']
 
     steps:
       - name: Checkout
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b8bb731c..730a45e1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,18 +4,22 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ## [Unreleased]
 ### Added
 - Added Point in time API rest API([#191](https://github.com/opensearch-project/opensearch-py/pull/191))
+- Added pool_maxsize for RequestsHttpConnection ([#216](https://github.com/opensearch-project/opensearch-py/pull/216))
 - Github workflow for changelog verification ([#218](https://github.com/opensearch-project/opensearch-py/pull/218))
 - Added overload decorators to helpers-actions.pyi-"bulk" ([#239](https://github.com/opensearch-project/opensearch-py/pull/239))
+- Document Keberos authenticaion ([214](https://github.com/opensearch-project/opensearch-py/pull/214))
+- Add release workflows ([#240](https://github.com/opensearch-project/opensearch-py/pull/240))
 ### Changed
 - Updated getting started to user guide ([#233](https://github.com/opensearch-project/opensearch-py/pull/233))
 - Updated CA certificate handling to check OpenSSL environment variables before defaulting to certifi ([#196](https://github.com/opensearch-project/opensearch-py/pull/196))
+- Updates `master` to `cluster_manager` to be inclusive ([#242](https://github.com/opensearch-project/opensearch-py/pull/242))
 ### Deprecated
 
 ### Removed
 
 ### Fixed
-
+- Fixed DeprecationWarning emitted from urllib3 1.26.13+ ([#246](https://github.com/opensearch-project/opensearch-py/pull/246))
 ### Security
 
 
-[Unreleased]: https://github.com/opensearch-project/opensearch-py/compare/2.0...HEAD
\ No newline at end of file
+[Unreleased]: https://github.com/opensearch-project/opensearch-py/compare/2.0...HEAD
diff --git a/README.md b/README.md
index 316c0e54..6149d758 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@ See [Compatibility](https://github.com/opensearch-project/opensearch-py/blob/mai
 
 * [Project Website](https://opensearch.org/)
 * [Downloads](https://opensearch.org/downloads.html)
-* [Documentation](https://opensearch.org/docs/)
+* [Documentation](https://opensearch.org/docs/latest/clients/python/)
 * Need help? Try [Forums](https://discuss.opendistrocommunity.dev/)
 * [Project Principles](https://opensearch.org/#principles)
 * [Contributing to OpenSearch](https://github.com/opensearch-project/opensearch-py/blob/main/CONTRIBUTING.md)
diff --git a/RELEASING.md b/RELEASING.md
index 87d51e43..324c3d55 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -31,4 +31,10 @@ Repositories create consistent release labels, such as `v1.0.0`, `v1.1.0` and `v
 
 ## Releasing
 
-The release process is standard across repositories in this org and is run by a release manager volunteering from amongst [MAINTAINERS](MAINTAINERS.md).
\ No newline at end of file
+The release process is standard across repositories in this org and is run by a release manager volunteering from amongst [maintainers](MAINTAINERS.md).
+
+1. Create a tag, e.g. v2.1.0, and push it to the GitHub repo.
+1. The [release-drafter.yml](.github/workflows/release-drafter.yml) will be automatically kicked off and a draft release will be created.
+1. This draft release triggers the [jenkins release workflow](https://build.ci.opensearch.org/job/opensearch-py-release/) as a result of which opensearch-py client is released on [PyPi](https://pypi.org/project/opensearch-py/).
+1. Once the above release workflow is successful, the drafted release on GitHub is published automatically.
+1. Increment "version" in [_version.py](./opensearchpy/_version.py) to the next patch release, e.g. v2.1.1. See [example](https://github.com/opensearch-project/opensearch-py/pull/167).
\ No newline at end of file
diff --git a/USER_GUIDE.md b/USER_GUIDE.md
index 3d3a777f..902ed7f9 100644
--- a/USER_GUIDE.md
+++ b/USER_GUIDE.md
@@ -1,6 +1,6 @@
-- [Getting Started with the OpenSearch Python Client](#getting-started-with-the-opensearch-python-client)
+- [User guide of OpenSearch Python Client](#user-guide-of-opensearch-python-client)
   - [Setup](#setup)
-  - [Sample code](#sample-code)
+  - [Example](#example)
     - [Creating a client](#creating-a-client)
     - [Creating an index](#creating-an-index)
     - [Adding a document to an index](#adding-a-document-to-an-index)
@@ -10,7 +10,7 @@
     - [Deleting a document](#deleting-a-document)
     - [Deleting an index](#deleting-an-index)
   - [Making API Calls](#making-api-calls)
-    - [Point in Time API](#point-in-time-api-calls)
+    - [Point in Time API](#point-in-time-api)
   - [Using plugins](#using-plugins)
     - [Alerting plugin](#alerting-plugin)
       - [**Searching for monitors**](#searching-for-monitors)
@@ -19,10 +19,12 @@
       - [**Creating a destination**](#creating-a-destination)
       - [**Getting alerts**](#getting-alerts)
       - [**Acknowledge alerts**](#acknowledge-alerts)
-  - [Using IAM credentials for authentication](#using-iam-credentials-for-authentication)
+  - [Using different authentication methods](#using-different-authentication-methods)
+    - [Using IAM credentials](#using-iam-credentials)
       - [Pre-requisites to use `AWSV4SignerAuth`](#pre-requisites-to-use-awsv4signerauth)
+    - [Using Kerberos](#using-kerberos)
 
-# User guide of OpenSearch Python Client
+# User guide of OpenSearch Python client
 
 ## Setup
 
@@ -193,9 +195,9 @@ response = client.indices.delete(
 print('\nDeleting index:')
 print(response)
 ```
-## Making API Calls
+## Making API calls
 
-### Point in Time API
+### Point in time API
 
 ```python
 # create a point in time on a index
@@ -378,12 +380,18 @@ query = {
 response = client.plugins.alerting.acknowledge_alert(query)
 print(response)
 ```
-## Using IAM credentials for authentication
+## Using different authentication methods
+
+It is possible to use different methods for the authentication to OpenSearch. The parameters of `connection_class` and `http_auth` can be used for this. The following examples show how to authenticate using IAM credentials and using Kerberos.
+
+### Using IAM credentials
 
 Refer the AWS documentation regarding usage of IAM credentials to sign requests to OpenSearch APIs - [Signing HTTP requests to Amazon OpenSearch Service.](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/request-signing.html#request-signing-python)
 
 Opensearch-py client library also provides an in-house IAM based authentication feature, `AWSV4SignerAuth` that will help users to connect to their opensearch clusters by making use of IAM roles.
 
+`AWSV4SignerAuth` uses RequestHttpConnection as transport class for communication with opensearch clusters. Opensearch-py client library provides `pool_maxsize` option to modify default connection-pool size.
+
 #### Pre-requisites to use `AWSV4SignerAuth`
  - Python version 3.6 or above,
  - Install [botocore](https://pypi.org/project/botocore/) using pip
@@ -407,7 +415,8 @@ client = OpenSearch(
     http_auth = auth,
     use_ssl = True,
     verify_certs = True,
-    connection_class = RequestsHttpConnection
+    connection_class = RequestsHttpConnection,
+    pool_maxsize = 20
 )
 
 q = 'miller'
@@ -428,4 +437,24 @@ response = client.search(
 
 print('\nSearch results:')
 print(response)
-```
\ No newline at end of file
+```
+
+### Using Kerberos
+
+There are several python packages that provide Kerberos support over HTTP connections, such as [requests-kerberos](http://pypi.org/project/requests-kerberos) and [requests-gssapi](https://pypi.org/project/requests-gssapi). The following example shows how to setup the authentication. Note that some of the parameters, such as `mutual_authentication` might depend on the server settings.
+
+```python
+
+from opensearchpy import OpenSearch, RequestsHttpConnection
+from requests_kerberos import HTTPKerberosAuth, OPTIONAL
+
+client = OpenSearch(
+    ['htps://...'],
+    use_ssl=True,
+    verify_certs=True,
+    connection_class=RequestsHttpConnection,
+    http_auth=HTTPKerberosAuth(mutual_authentication=OPTIONAL)
+)
+
+health = client.cluster.health()
+```
diff --git a/jenkins/release.JenkinsFile b/jenkins/release.JenkinsFile
new file mode 100644
index 00000000..3c285719
--- /dev/null
+++ b/jenkins/release.JenkinsFile
@@ -0,0 +1,12 @@
+lib = library(identifier: 'jenkins@1.3.1', retriever: modernSCM([
+    $class: 'GitSCMSource',
+    remote: 'https://github.com/opensearch-project/opensearch-build-libraries.git',
+]))
+
+standardReleasePipelineWithGenericTrigger(
+    tokenIdCredential: 'jenkins-opensearch-py-generic-webhook-token',
+    causeString: 'A tag was cut on opensearch-project/opensearch-py repository causing this workflow to run',
+    downloadReleaseAsset: true,
+    publishRelease: true) {
+        publishToPyPi(credentialId: 'jenkins-opensearch-py-pypi-credentials')
+    }
diff --git a/opensearchpy/_async/client/__init__.py b/opensearchpy/_async/client/__init__.py
index a8b0db45..2334ba57 100644
--- a/opensearchpy/_async/client/__init__.py
+++ b/opensearchpy/_async/client/__init__.py
@@ -690,14 +690,15 @@ class AsyncOpenSearch(object):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_script(self, id, params=None, headers=None):
         """
         Deletes a script.
 
 
         :arg id: Script ID
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if id in SKIP_IN_PATH:
@@ -938,14 +939,15 @@ class AsyncOpenSearch(object):
             "GET", _make_path(index, doc_type, id), params=params, headers=headers
         )
 
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     async def get_script(self, id, params=None, headers=None):
         """
         Returns a script.
 
 
         :arg id: Script ID
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         if id in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'id'.")
@@ -1199,7 +1201,7 @@ class AsyncOpenSearch(object):
             "POST", path, params=params, headers=headers, body=body
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def put_script(self, id, body, context=None, params=None, headers=None):
         """
         Creates or updates a script.
@@ -1208,7 +1210,8 @@ class AsyncOpenSearch(object):
         :arg id: Script ID
         :arg body: The document
         :arg context: Context name to compile script against
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         for param in (id, body):
@@ -1578,7 +1581,7 @@ class AsyncOpenSearch(object):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         :arg preference: Specify the node or shard the operation should
             be performed on (default: random)
         :arg routing: Specific routing value
diff --git a/opensearchpy/_async/client/__init__.pyi b/opensearchpy/_async/client/__init__.pyi
index cc423451..0b7aec97 100644
--- a/opensearchpy/_async/client/__init__.pyi
+++ b/opensearchpy/_async/client/__init__.pyi
@@ -332,6 +332,7 @@ class AsyncOpenSearch(object):
         id: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -488,6 +489,7 @@ class AsyncOpenSearch(object):
         id: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -639,6 +641,7 @@ class AsyncOpenSearch(object):
         body: Any,
         context: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/cat.py b/opensearchpy/_async/client/cat.py
index 2499f3bf..f7268308 100644
--- a/opensearchpy/_async/client/cat.py
+++ b/opensearchpy/_async/client/cat.py
@@ -45,7 +45,7 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -54,7 +54,17 @@ class CatClient(NamespacedClient):
             "GET", _make_path("_cat", "aliases", name), params=params, headers=headers
         )
 
-    @query_params("bytes", "format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "bytes",
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     async def allocation(self, node_id=None, params=None, headers=None):
         """
         Provides a snapshot of how many shards are allocated to each data node and how
@@ -70,9 +80,13 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -150,6 +164,7 @@ class CatClient(NamespacedClient):
         "include_unloaded_segments",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "pri",
         "s",
         "time",
@@ -179,9 +194,11 @@ class CatClient(NamespacedClient):
             will include stats for segments that are not currently loaded into
             memory
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg pri: Set to true to return stats only for primary shards
         :arg s: Comma-separated list of column names or column aliases
             to sort by
@@ -193,7 +210,16 @@ class CatClient(NamespacedClient):
             "GET", _make_path("_cat", "indices", index), params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     async def master(self, params=None, headers=None):
         """
         Returns information about the master node.
@@ -204,17 +230,44 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
         """
+        from warnings import warn
+
+        warn("Deprecated: use `cluster_manager` instead")
         return await self.transport.perform_request(
             "GET", "/_cat/master", params=params, headers=headers
         )
 
+    @query_params("format", "h", "help", "local", "cluster_manager", "s", "v")
+    async def cluster_manager(self, params=None, headers=None):
+        """
+        Returns information about the cluster_manager node.
+
+
+        :arg format: a short version of the Accept header, e.g. json,
+            yaml
+        :arg h: Comma-separated list of column names to display
+        :arg help: Return help information
+        :arg local: Return local information, do not retrieve the state
+            from cluster_manager node (default: false)
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
+        :arg s: Comma-separated list of column names or column aliases
+            to sort by
+        :arg v: Verbose mode. Display column headers
+        """
+        return await self.transport.perform_request(
+            "GET", "/_cat/cluster_manager", params=params, headers=headers
+        )
+
     @query_params(
         "bytes",
         "format",
@@ -224,6 +277,7 @@ class CatClient(NamespacedClient):
         "include_unloaded_segments",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "s",
         "time",
         "v",
@@ -246,8 +300,10 @@ class CatClient(NamespacedClient):
             memory
         :arg local: Calculate the selected nodes using the local cluster
             state rather than the state from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -289,7 +345,16 @@ class CatClient(NamespacedClient):
         )
 
     @query_params(
-        "bytes", "format", "h", "help", "local", "master_timeout", "s", "time", "v"
+        "bytes",
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "time",
+        "v",
     )
     async def shards(self, index=None, params=None, headers=None):
         """
@@ -305,9 +370,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -340,7 +407,17 @@ class CatClient(NamespacedClient):
             "GET", _make_path("_cat", "segments", index), params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "time", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "time",
+        "v",
+    )
     async def pending_tasks(self, params=None, headers=None):
         """
         Returns a concise representation of the cluster pending tasks.
@@ -351,9 +428,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -364,7 +443,17 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/pending_tasks", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "size", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "size",
+        "v",
+    )
     async def thread_pool(self, thread_pool_patterns=None, params=None, headers=None):
         """
         Returns cluster-wide thread pool statistics per node. By default the active,
@@ -378,9 +467,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg size: The multiplier in which to display values  Valid
@@ -421,7 +512,15 @@ class CatClient(NamespacedClient):
         )
 
     @query_params(
-        "format", "h", "help", "include_bootstrap", "local", "master_timeout", "s", "v"
+        "format",
+        "h",
+        "help",
+        "include_bootstrap",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
     )
     async def plugins(self, params=None, headers=None):
         """
@@ -435,9 +534,11 @@ class CatClient(NamespacedClient):
         :arg include_bootstrap: Include bootstrap plugins in the
             response
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -446,7 +547,16 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/plugins", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     async def nodeattrs(self, params=None, headers=None):
         """
         Returns information about custom node attributes.
@@ -457,9 +567,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -468,7 +580,16 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/nodeattrs", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     async def repositories(self, params=None, headers=None):
         """
         Returns information about snapshot repositories registered in the cluster.
@@ -480,8 +601,10 @@ class CatClient(NamespacedClient):
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
             from master node
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -491,7 +614,15 @@ class CatClient(NamespacedClient):
         )
 
     @query_params(
-        "format", "h", "help", "ignore_unavailable", "master_timeout", "s", "time", "v"
+        "format",
+        "h",
+        "help",
+        "ignore_unavailable",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "time",
+        "v",
     )
     async def snapshots(self, repository=None, params=None, headers=None):
         """
@@ -506,8 +637,10 @@ class CatClient(NamespacedClient):
         :arg help: Return help information
         :arg ignore_unavailable: Set to true to ignore unavailable
             snapshots
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -561,7 +694,16 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/tasks", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     async def templates(self, name=None, params=None, headers=None):
         """
         Returns information about existing templates.
@@ -573,9 +715,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
diff --git a/opensearchpy/_async/client/cat.pyi b/opensearchpy/_async/client/cat.pyi
index 7fb946cb..c53d43bc 100644
--- a/opensearchpy/_async/client/cat.pyi
+++ b/opensearchpy/_async/client/cat.pyi
@@ -62,6 +62,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -150,6 +151,7 @@ class CatClient(NamespacedClient):
         include_unloaded_segments: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pri: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
@@ -174,6 +176,29 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
+        s: Optional[Any] = ...,
+        v: Optional[Any] = ...,
+        pretty: Optional[bool] = ...,
+        human: Optional[bool] = ...,
+        error_trace: Optional[bool] = ...,
+        filter_path: Optional[Union[str, Collection[str]]] = ...,
+        request_timeout: Optional[Union[int, float]] = ...,
+        ignore: Optional[Union[int, Collection[int]]] = ...,
+        opaque_id: Optional[str] = ...,
+        http_auth: Optional[Union[str, Tuple[str, str]]] = ...,
+        api_key: Optional[Union[str, Tuple[str, str]]] = ...,
+        params: Optional[MutableMapping[str, Any]] = ...,
+        headers: Optional[MutableMapping[str, str]] = ...,
+    ) -> Any: ...
+    async def cluster_manager(
+        self,
+        *,
+        format: Optional[Any] = ...,
+        h: Optional[Any] = ...,
+        help: Optional[Any] = ...,
+        local: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -199,6 +224,7 @@ class CatClient(NamespacedClient):
         include_unloaded_segments: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -249,6 +275,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -294,6 +321,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -318,6 +346,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         size: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -364,6 +393,7 @@ class CatClient(NamespacedClient):
         include_bootstrap: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -386,6 +416,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -408,6 +439,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -431,6 +463,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -480,6 +513,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/cluster.py b/opensearchpy/_async/client/cluster.py
index 084c8b75..174245cb 100644
--- a/opensearchpy/_async/client/cluster.py
+++ b/opensearchpy/_async/client/cluster.py
@@ -34,6 +34,7 @@ class ClusterClient(NamespacedClient):
         "level",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
         "wait_for_events",
@@ -54,9 +55,11 @@ class ClusterClient(NamespacedClient):
         :arg level: Specify the level of detail for returned information
             Valid choices: cluster, indices, shards  Default: cluster
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Wait until the specified number of
             shards is active
@@ -79,7 +82,7 @@ class ClusterClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     async def pending_tasks(self, params=None, headers=None):
         """
         Returns a list of any cluster-level changes (e.g. create index, update mapping,
@@ -87,8 +90,9 @@ class ClusterClient(NamespacedClient):
 
 
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return await self.transport.perform_request(
             "GET", "/_cluster/pending_tasks", params=params, headers=headers
@@ -101,6 +105,7 @@ class ClusterClient(NamespacedClient):
         "ignore_unavailable",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "wait_for_metadata_version",
         "wait_for_timeout",
     )
@@ -125,8 +130,9 @@ class ClusterClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg wait_for_metadata_version: Wait for the metadata version to
             be equal or greater than the specified metadata version
         :arg wait_for_timeout: The maximum time to wait for
@@ -166,7 +172,13 @@ class ClusterClient(NamespacedClient):
         )
 
     @query_params(
-        "dry_run", "explain", "master_timeout", "metric", "retry_failed", "timeout"
+        "dry_run",
+        "explain",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "metric",
+        "retry_failed",
+        "timeout",
     )
     async def reroute(self, body=None, params=None, headers=None):
         """
@@ -179,8 +191,10 @@ class ClusterClient(NamespacedClient):
             resulting state
         :arg explain: Return an explanation of why the commands can or
             cannot be executed
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg metric: Limit the information returned to the specified
             metrics. Defaults to all but metadata  Valid choices: _all, blocks,
             metadata, nodes, routing_table, master_node, version
@@ -192,7 +206,13 @@ class ClusterClient(NamespacedClient):
             "POST", "/_cluster/reroute", params=params, headers=headers, body=body
         )
 
-    @query_params("flat_settings", "include_defaults", "master_timeout", "timeout")
+    @query_params(
+        "flat_settings",
+        "include_defaults",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "timeout",
+    )
     async def get_settings(self, params=None, headers=None):
         """
         Returns cluster settings.
@@ -202,15 +222,19 @@ class ClusterClient(NamespacedClient):
             false)
         :arg include_defaults: Whether to return all default clusters
             setting.
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         return await self.transport.perform_request(
             "GET", "/_cluster/settings", params=params, headers=headers
         )
 
-    @query_params("flat_settings", "master_timeout", "timeout")
+    @query_params(
+        "flat_settings", "master_timeout", "cluster_manager_timeout", "timeout"
+    )
     async def put_settings(self, body, params=None, headers=None):
         """
         Updates the cluster settings.
@@ -220,8 +244,10 @@ class ClusterClient(NamespacedClient):
             or `persistent` (survives cluster restart).
         :arg flat_settings: Return settings in flat format (default:
             false)
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if body in SKIP_IN_PATH:
@@ -262,14 +288,15 @@ class ClusterClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_component_template(self, name, params=None, headers=None):
         """
         Deletes a component template
 
 
         :arg name: The name of the template
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if name in SKIP_IN_PATH:
@@ -282,7 +309,7 @@ class ClusterClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     async def get_component_template(self, name=None, params=None, headers=None):
         """
         Returns one or more component templates
@@ -290,9 +317,11 @@ class ClusterClient(NamespacedClient):
 
         :arg name: The comma separated names of the component templates
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return await self.transport.perform_request(
             "GET",
@@ -301,7 +330,7 @@ class ClusterClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("create", "master_timeout", "timeout")
+    @query_params("create", "master_timeout", "cluster_manager_timeout", "timeout")
     async def put_component_template(self, name, body, params=None, headers=None):
         """
         Creates or updates a component template
@@ -311,7 +340,8 @@ class ClusterClient(NamespacedClient):
         :arg body: The template definition
         :arg create: Whether the index template should only be added if
             new or can also replace an existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         for param in (name, body):
@@ -326,7 +356,7 @@ class ClusterClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     async def exists_component_template(self, name, params=None, headers=None):
         """
         Returns information about whether a particular component template exist
@@ -334,9 +364,11 @@ class ClusterClient(NamespacedClient):
 
         :arg name: The name of the template
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
diff --git a/opensearchpy/_async/client/cluster.pyi b/opensearchpy/_async/client/cluster.pyi
index ad1aee19..f2cd948c 100644
--- a/opensearchpy/_async/client/cluster.pyi
+++ b/opensearchpy/_async/client/cluster.pyi
@@ -37,6 +37,7 @@ class ClusterClient(NamespacedClient):
         level: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         wait_for_events: Optional[Any] = ...,
@@ -62,6 +63,7 @@ class ClusterClient(NamespacedClient):
         *,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -86,6 +88,7 @@ class ClusterClient(NamespacedClient):
         ignore_unavailable: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         wait_for_metadata_version: Optional[Any] = ...,
         wait_for_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -127,6 +130,7 @@ class ClusterClient(NamespacedClient):
         dry_run: Optional[Any] = ...,
         explain: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         metric: Optional[Any] = ...,
         retry_failed: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
@@ -149,6 +153,7 @@ class ClusterClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         include_defaults: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -169,6 +174,7 @@ class ClusterClient(NamespacedClient):
         body: Any,
         flat_settings: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -223,6 +229,7 @@ class ClusterClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -243,6 +250,7 @@ class ClusterClient(NamespacedClient):
         name: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -263,6 +271,7 @@ class ClusterClient(NamespacedClient):
         body: Any,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -283,6 +292,7 @@ class ClusterClient(NamespacedClient):
         *,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/dangling_indices.py b/opensearchpy/_async/client/dangling_indices.py
index b3df7cb4..ff9e533f 100644
--- a/opensearchpy/_async/client/dangling_indices.py
+++ b/opensearchpy/_async/client/dangling_indices.py
@@ -29,7 +29,9 @@ from .utils import SKIP_IN_PATH, NamespacedClient, _make_path, query_params
 
 
 class DanglingIndicesClient(NamespacedClient):
-    @query_params("accept_data_loss", "master_timeout", "timeout")
+    @query_params(
+        "accept_data_loss", "master_timeout", "cluster_manager_timeout", "timeout"
+    )
     async def delete_dangling_index(self, index_uuid, params=None, headers=None):
         """
         Deletes the specified dangling index
@@ -38,7 +40,8 @@ class DanglingIndicesClient(NamespacedClient):
         :arg index_uuid: The UUID of the dangling index
         :arg accept_data_loss: Must be set to true in order to delete
             the dangling index
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if index_uuid in SKIP_IN_PATH:
@@ -51,7 +54,9 @@ class DanglingIndicesClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("accept_data_loss", "master_timeout", "timeout")
+    @query_params(
+        "accept_data_loss", "master_timeout", "cluster_manager_timeout", "timeout"
+    )
     async def import_dangling_index(self, index_uuid, params=None, headers=None):
         """
         Imports the specified dangling index
@@ -60,7 +65,8 @@ class DanglingIndicesClient(NamespacedClient):
         :arg index_uuid: The UUID of the dangling index
         :arg accept_data_loss: Must be set to true in order to import
             the dangling index
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if index_uuid in SKIP_IN_PATH:
diff --git a/opensearchpy/_async/client/dangling_indices.pyi b/opensearchpy/_async/client/dangling_indices.pyi
index e8867f80..c9bb9ec1 100644
--- a/opensearchpy/_async/client/dangling_indices.pyi
+++ b/opensearchpy/_async/client/dangling_indices.pyi
@@ -35,6 +35,7 @@ class DanglingIndicesClient(NamespacedClient):
         *,
         accept_data_loss: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -55,6 +56,7 @@ class DanglingIndicesClient(NamespacedClient):
         *,
         accept_data_loss: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/features.py b/opensearchpy/_async/client/features.py
index 54eb38e6..7922f955 100644
--- a/opensearchpy/_async/client/features.py
+++ b/opensearchpy/_async/client/features.py
@@ -29,15 +29,17 @@ from .utils import NamespacedClient, query_params
 
 
 class FeaturesClient(NamespacedClient):
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     async def get_features(self, params=None, headers=None):
         """
         Gets a list of features which can be included in snapshots using the
         feature_states field when creating a snapshot
 
 
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return await self.transport.perform_request(
             "GET", "/_features", params=params, headers=headers
diff --git a/opensearchpy/_async/client/features.pyi b/opensearchpy/_async/client/features.pyi
index 642407f3..96acb588 100644
--- a/opensearchpy/_async/client/features.pyi
+++ b/opensearchpy/_async/client/features.pyi
@@ -33,6 +33,7 @@ class FeaturesClient(NamespacedClient):
         self,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/indices.py b/opensearchpy/_async/client/indices.py
index 7464b286..d58a3fb5 100644
--- a/opensearchpy/_async/client/indices.py
+++ b/opensearchpy/_async/client/indices.py
@@ -105,7 +105,9 @@ class IndicesClient(NamespacedClient):
             "POST", _make_path(index, "_flush"), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout", "wait_for_active_shards")
+    @query_params(
+        "master_timeout", "cluster_manager_timeout", "timeout", "wait_for_active_shards"
+    )
     async def create(self, index, body=None, params=None, headers=None):
         """
         Creates an index with optional settings and mappings.
@@ -114,7 +116,8 @@ class IndicesClient(NamespacedClient):
         :arg index: The name of the index
         :arg body: The configuration for the index (`settings` and
             `mappings`)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for before the operation returns.
@@ -126,7 +129,9 @@ class IndicesClient(NamespacedClient):
             "PUT", _make_path(index), params=params, headers=headers, body=body
         )
 
-    @query_params("master_timeout", "timeout", "wait_for_active_shards")
+    @query_params(
+        "master_timeout", "cluster_manager_timeout", "timeout", "wait_for_active_shards"
+    )
     async def clone(self, index, target, body=None, params=None, headers=None):
         """
         Clones an index
@@ -136,7 +141,8 @@ class IndicesClient(NamespacedClient):
         :arg target: The name of the target index to clone into
         :arg body: The configuration for the target index (`settings`
             and `aliases`)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the cloned index before the operation returns.
@@ -161,6 +167,7 @@ class IndicesClient(NamespacedClient):
         "include_defaults",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
     )
     async def get(self, index, params=None, headers=None):
         """
@@ -180,8 +187,9 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether to return all default setting for
             each of the indices.
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         if index in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'index'.")
@@ -195,6 +203,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -212,7 +221,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: closed
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns.
@@ -229,6 +239,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -246,7 +257,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns. Set to `index-setting` to wait
@@ -265,6 +277,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
     )
     async def delete(self, index, params=None, headers=None):
@@ -281,7 +294,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Ignore unavailable indexes (default:
             false)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if index in SKIP_IN_PATH:
@@ -317,7 +331,7 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether to return all default setting for
             each of the indices.
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         if index in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'index'.")
@@ -331,6 +345,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "write_index_only",
     )
@@ -351,7 +366,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg write_index_only: When true, applies mappings only to the
             write index of an alias or data stream
@@ -373,6 +389,7 @@ class IndicesClient(NamespacedClient):
         "ignore_unavailable",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
     )
     async def get_mapping(self, index=None, params=None, headers=None):
         """
@@ -389,8 +406,9 @@ class IndicesClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return await self.transport.perform_request(
             "GET",
@@ -424,7 +442,7 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether the default mapping values should
             be returned as well
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         if fields in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'fields'.")
@@ -436,7 +454,7 @@ class IndicesClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def put_alias(self, index, name, body=None, params=None, headers=None):
         """
         Creates or updates an alias.
@@ -448,7 +466,8 @@ class IndicesClient(NamespacedClient):
         :arg name: The name of the alias to be created or updated
         :arg body: The settings for the alias, such as `routing` or
             `filter`
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit timestamp for the document
         """
         for param in (index, name):
@@ -481,7 +500,7 @@ class IndicesClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -508,20 +527,21 @@ class IndicesClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         return await self.transport.perform_request(
             "GET", _make_path(index, "_alias", name), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def update_aliases(self, body, params=None, headers=None):
         """
         Updates index aliases.
 
 
         :arg body: The definition of `actions` to perform
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Request timeout
         """
         if body in SKIP_IN_PATH:
@@ -531,7 +551,7 @@ class IndicesClient(NamespacedClient):
             "POST", "/_aliases", params=params, headers=headers, body=body
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_alias(self, index, name, params=None, headers=None):
         """
         Deletes an alias.
@@ -541,7 +561,8 @@ class IndicesClient(NamespacedClient):
             wildcards); use `_all` for all indices
         :arg name: A comma-separated list of aliases to delete (supports
             wildcards); use `_all` to delete all aliases for the specified indices.
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit timestamp for the document
         """
         for param in (index, name):
@@ -552,7 +573,7 @@ class IndicesClient(NamespacedClient):
             "DELETE", _make_path(index, "_alias", name), params=params, headers=headers
         )
 
-    @query_params("create", "master_timeout", "order")
+    @query_params("create", "master_timeout", "cluster_manager_timeout", "order")
     async def put_template(self, name, body, params=None, headers=None):
         """
         Creates or updates an index template.
@@ -562,7 +583,8 @@ class IndicesClient(NamespacedClient):
         :arg body: The template definition
         :arg create: Whether the index template should only be added if
             new or can also replace an existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg order: The order for this template when merging multiple
             matching ones (higher numbers are merged later, overriding the lower
             numbers)
@@ -579,7 +601,7 @@ class IndicesClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     async def exists_template(self, name, params=None, headers=None):
         """
         Returns information about whether a particular index template exists.
@@ -589,9 +611,11 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -600,7 +624,7 @@ class IndicesClient(NamespacedClient):
             "HEAD", _make_path("_template", name), params=params, headers=headers
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     async def get_template(self, name=None, params=None, headers=None):
         """
         Returns an index template.
@@ -610,22 +634,25 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return await self.transport.perform_request(
             "GET", _make_path("_template", name), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_template(self, name, params=None, headers=None):
         """
         Deletes an index template.
 
 
         :arg name: The name of the template
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if name in SKIP_IN_PATH:
@@ -643,6 +670,7 @@ class IndicesClient(NamespacedClient):
         "include_defaults",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
     )
     async def get_settings(self, index=None, name=None, params=None, headers=None):
         """
@@ -665,8 +693,9 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether to return all default setting for
             each of the indices.
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return await self.transport.perform_request(
             "GET", _make_path(index, "_settings", name), params=params, headers=headers
@@ -678,6 +707,7 @@ class IndicesClient(NamespacedClient):
         "flat_settings",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "preserve_existing",
         "timeout",
     )
@@ -699,7 +729,8 @@ class IndicesClient(NamespacedClient):
             false)
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg preserve_existing: Whether to update existing settings. If
             set to `true` existing settings on an index remain unchanged, the
             default is `false`
@@ -1011,7 +1042,11 @@ class IndicesClient(NamespacedClient):
         )
 
     @query_params(
-        "copy_settings", "master_timeout", "timeout", "wait_for_active_shards"
+        "copy_settings",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "timeout",
+        "wait_for_active_shards",
     )
     async def shrink(self, index, target, body=None, params=None, headers=None):
         """
@@ -1024,7 +1059,8 @@ class IndicesClient(NamespacedClient):
             and `aliases`)
         :arg copy_settings: whether or not to copy settings from the
             source index (defaults to false)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the shrunken index before the operation returns.
@@ -1042,7 +1078,11 @@ class IndicesClient(NamespacedClient):
         )
 
     @query_params(
-        "copy_settings", "master_timeout", "timeout", "wait_for_active_shards"
+        "copy_settings",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "timeout",
+        "wait_for_active_shards",
     )
     async def split(self, index, target, body=None, params=None, headers=None):
         """
@@ -1056,7 +1096,8 @@ class IndicesClient(NamespacedClient):
             and `aliases`)
         :arg copy_settings: whether or not to copy settings from the
             source index (defaults to false)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the shrunken index before the operation returns.
@@ -1076,6 +1117,7 @@ class IndicesClient(NamespacedClient):
     @query_params(
         "dry_run",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -1094,7 +1136,8 @@ class IndicesClient(NamespacedClient):
         :arg dry_run: If set to true the rollover action will only be
             validated but not actually performed even if a condition matches. The
             default is false
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the newly created rollover index before the operation
@@ -1116,6 +1159,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -1134,7 +1178,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: closed
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns.
@@ -1151,6 +1196,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -1169,7 +1215,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: closed
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns.
@@ -1242,14 +1289,15 @@ class IndicesClient(NamespacedClient):
             "DELETE", _make_path("_data_stream", name), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_index_template(self, name, params=None, headers=None):
         """
         Deletes an index template.
 
 
         :arg name: The name of the template
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if name in SKIP_IN_PATH:
@@ -1262,7 +1310,7 @@ class IndicesClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     async def exists_index_template(self, name, params=None, headers=None):
         """
         Returns information about whether a particular index template exists.
@@ -1272,9 +1320,11 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -1283,7 +1333,7 @@ class IndicesClient(NamespacedClient):
             "HEAD", _make_path("_index_template", name), params=params, headers=headers
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     async def get_index_template(self, name=None, params=None, headers=None):
         """
         Returns an index template.
@@ -1293,15 +1343,17 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return await self.transport.perform_request(
             "GET", _make_path("_index_template", name), params=params, headers=headers
         )
 
-    @query_params("cause", "create", "master_timeout")
+    @query_params("cause", "create", "master_timeout", "cluster_manager_timeout")
     async def put_index_template(self, name, body, params=None, headers=None):
         """
         Creates or updates an index template.
@@ -1313,7 +1365,8 @@ class IndicesClient(NamespacedClient):
             template
         :arg create: Whether the index template should only be added if
             new or can also replace an existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         for param in (name, body):
             if param in SKIP_IN_PATH:
@@ -1327,7 +1380,7 @@ class IndicesClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("cause", "create", "master_timeout")
+    @query_params("cause", "create", "master_timeout", "cluster_manager_timeout")
     async def simulate_index_template(self, name, body=None, params=None, headers=None):
         """
         Simulate matching the given index name against the index templates in the
@@ -1343,7 +1396,8 @@ class IndicesClient(NamespacedClient):
         :arg create: Whether the index template we optionally defined in
             the body should only be dry-run added if new or can also replace an
             existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -1372,7 +1426,7 @@ class IndicesClient(NamespacedClient):
             "GET", _make_path("_data_stream", name), params=params, headers=headers
         )
 
-    @query_params("cause", "create", "master_timeout")
+    @query_params("cause", "create", "master_timeout", "cluster_manager_timeout")
     async def simulate_template(self, body=None, name=None, params=None, headers=None):
         """
         Simulate resolving the given template name or body
@@ -1386,7 +1440,8 @@ class IndicesClient(NamespacedClient):
         :arg create: Whether the index template we optionally defined in
             the body should only be dry-run added if new or can also replace an
             existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return await self.transport.perform_request(
             "POST",
@@ -1425,6 +1480,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
     )
     async def add_block(self, index, block, params=None, headers=None):
@@ -1443,7 +1499,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         for param in (index, block):
diff --git a/opensearchpy/_async/client/indices.pyi b/opensearchpy/_async/client/indices.pyi
index bfd0d7b9..53f6d87f 100644
--- a/opensearchpy/_async/client/indices.pyi
+++ b/opensearchpy/_async/client/indices.pyi
@@ -95,6 +95,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -117,6 +118,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -143,6 +145,7 @@ class IndicesClient(NamespacedClient):
         include_defaults: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -164,6 +167,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -187,6 +191,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -210,6 +215,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -256,6 +262,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         write_index_only: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -280,6 +287,7 @@ class IndicesClient(NamespacedClient):
         ignore_unavailable: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -323,6 +331,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -386,6 +395,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -406,6 +416,7 @@ class IndicesClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -427,6 +438,7 @@ class IndicesClient(NamespacedClient):
         body: Any,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         order: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -448,6 +460,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -468,6 +481,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -486,6 +500,7 @@ class IndicesClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -512,6 +527,7 @@ class IndicesClient(NamespacedClient):
         include_defaults: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -535,6 +551,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         preserve_existing: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -786,6 +803,7 @@ class IndicesClient(NamespacedClient):
         body: Optional[Any] = ...,
         copy_settings: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -809,6 +827,7 @@ class IndicesClient(NamespacedClient):
         body: Optional[Any] = ...,
         copy_settings: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -832,6 +851,7 @@ class IndicesClient(NamespacedClient):
         new_index: Optional[Any] = ...,
         dry_run: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -855,6 +875,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -878,6 +899,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -953,6 +975,7 @@ class IndicesClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -974,6 +997,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -994,6 +1018,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1015,6 +1040,7 @@ class IndicesClient(NamespacedClient):
         cause: Optional[Any] = ...,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1036,6 +1062,7 @@ class IndicesClient(NamespacedClient):
         cause: Optional[Any] = ...,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1075,6 +1102,7 @@ class IndicesClient(NamespacedClient):
         cause: Optional[Any] = ...,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1115,6 +1143,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/ingest.py b/opensearchpy/_async/client/ingest.py
index 2d35fc97..dfc8eb1c 100644
--- a/opensearchpy/_async/client/ingest.py
+++ b/opensearchpy/_async/client/ingest.py
@@ -29,7 +29,7 @@ from .utils import SKIP_IN_PATH, NamespacedClient, _make_path, query_params
 
 
 class IngestClient(NamespacedClient):
-    @query_params("master_timeout", "summary")
+    @query_params("master_timeout", "cluster_manager_timeout", "summary")
     async def get_pipeline(self, id=None, params=None, headers=None):
         """
         Returns a pipeline.
@@ -37,8 +37,10 @@ class IngestClient(NamespacedClient):
 
         :arg id: Comma separated list of pipeline ids. Wildcards
             supported
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg summary: Return pipelines without their definitions
             (default: false)
         """
@@ -46,7 +48,7 @@ class IngestClient(NamespacedClient):
             "GET", _make_path("_ingest", "pipeline", id), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def put_pipeline(self, id, body, params=None, headers=None):
         """
         Creates or updates a pipeline.
@@ -54,8 +56,10 @@ class IngestClient(NamespacedClient):
 
         :arg id: Pipeline ID
         :arg body: The ingest definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         for param in (id, body):
@@ -70,15 +74,17 @@ class IngestClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_pipeline(self, id, params=None, headers=None):
         """
         Deletes a pipeline.
 
 
         :arg id: Pipeline ID
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if id in SKIP_IN_PATH:
diff --git a/opensearchpy/_async/client/ingest.pyi b/opensearchpy/_async/client/ingest.pyi
index cc48e3bc..7e498b6c 100644
--- a/opensearchpy/_async/client/ingest.pyi
+++ b/opensearchpy/_async/client/ingest.pyi
@@ -34,6 +34,7 @@ class IngestClient(NamespacedClient):
         *,
         id: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         summary: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -54,6 +55,7 @@ class IngestClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -73,6 +75,7 @@ class IngestClient(NamespacedClient):
         id: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/_async/client/snapshot.py b/opensearchpy/_async/client/snapshot.py
index a8015e67..4f2acd6a 100644
--- a/opensearchpy/_async/client/snapshot.py
+++ b/opensearchpy/_async/client/snapshot.py
@@ -29,7 +29,7 @@ from .utils import SKIP_IN_PATH, NamespacedClient, _make_path, query_params
 
 
 class SnapshotClient(NamespacedClient):
-    @query_params("master_timeout", "wait_for_completion")
+    @query_params("master_timeout", "cluster_manager_timeout", "wait_for_completion")
     async def create(self, repository, snapshot, body=None, params=None, headers=None):
         """
         Creates a snapshot in a repository.
@@ -38,8 +38,10 @@ class SnapshotClient(NamespacedClient):
         :arg repository: A repository name
         :arg snapshot: A snapshot name
         :arg body: The snapshot definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg wait_for_completion: Should this request wait until the
             operation has completed before returning
         """
@@ -55,7 +57,7 @@ class SnapshotClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     async def delete(self, repository, snapshot, params=None, headers=None):
         """
         Deletes a snapshot.
@@ -63,8 +65,10 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: A repository name
         :arg snapshot: A snapshot name
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         for param in (repository, snapshot):
             if param in SKIP_IN_PATH:
@@ -82,6 +86,7 @@ class SnapshotClient(NamespacedClient):
         "include_repository",
         "index_details",
         "master_timeout",
+        "cluster_manager_timeout",
         "verbose",
     )
     async def get(self, repository, snapshot, params=None, headers=None):
@@ -98,8 +103,10 @@ class SnapshotClient(NamespacedClient):
             in the snapshot info. Defaults to true.
         :arg index_details: Whether to include details of each index in
             the snapshot, if those details are available. Defaults to false.
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg verbose: Whether to show verbose snapshot info or only show
             the basic info found in the repository index blob
         """
@@ -114,7 +121,7 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def delete_repository(self, repository, params=None, headers=None):
         """
         Deletes a repository.
@@ -122,8 +129,10 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: Name of the snapshot repository to unregister.
             Wildcard (`*`) patterns are supported.
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if repository in SKIP_IN_PATH:
@@ -136,7 +145,7 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     async def get_repository(self, repository=None, params=None, headers=None):
         """
         Returns information about a repository.
@@ -144,15 +153,17 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: A comma-separated list of repository names
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return await self.transport.perform_request(
             "GET", _make_path("_snapshot", repository), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout", "verify")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout", "verify")
     async def create_repository(self, repository, body, params=None, headers=None):
         """
         Creates a repository.
@@ -160,8 +171,10 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: A repository name
         :arg body: The repository definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         :arg verify: Whether to verify the repository after creation
         """
@@ -177,7 +190,7 @@ class SnapshotClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout", "wait_for_completion")
+    @query_params("master_timeout", "cluster_manager_timeout", "wait_for_completion")
     async def restore(self, repository, snapshot, body=None, params=None, headers=None):
         """
         Restores a snapshot.
@@ -186,8 +199,10 @@ class SnapshotClient(NamespacedClient):
         :arg repository: A repository name
         :arg snapshot: A snapshot name
         :arg body: Details of what to restore
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg wait_for_completion: Should this request wait until the
             operation has completed before returning
         """
@@ -203,7 +218,7 @@ class SnapshotClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("ignore_unavailable", "master_timeout")
+    @query_params("ignore_unavailable", "master_timeout", "cluster_manager_timeout")
     async def status(self, repository=None, snapshot=None, params=None, headers=None):
         """
         Returns information about the status of a snapshot.
@@ -214,8 +229,10 @@ class SnapshotClient(NamespacedClient):
         :arg ignore_unavailable: Whether to ignore unavailable
             snapshots, defaults to false which means a SnapshotMissingException is
             thrown
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return await self.transport.perform_request(
             "GET",
@@ -224,15 +241,17 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def verify_repository(self, repository, params=None, headers=None):
         """
         Verifies a repository.
 
 
         :arg repository: A repository name
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if repository in SKIP_IN_PATH:
@@ -245,15 +264,17 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     async def cleanup_repository(self, repository, params=None, headers=None):
         """
         Removes stale data from repository.
 
 
         :arg repository: A repository name
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if repository in SKIP_IN_PATH:
@@ -266,7 +287,7 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     async def clone(
         self, repository, snapshot, target_snapshot, body, params=None, headers=None
     ):
@@ -278,8 +299,10 @@ class SnapshotClient(NamespacedClient):
         :arg snapshot: The name of the snapshot to clone from
         :arg target_snapshot: The name of the cloned snapshot to create
         :arg body: The snapshot clone definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         for param in (repository, snapshot, target_snapshot, body):
             if param in SKIP_IN_PATH:
diff --git a/opensearchpy/_async/client/snapshot.pyi b/opensearchpy/_async/client/snapshot.pyi
index 0c2d7da4..2167c97f 100644
--- a/opensearchpy/_async/client/snapshot.pyi
+++ b/opensearchpy/_async/client/snapshot.pyi
@@ -36,6 +36,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         wait_for_completion: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -56,6 +57,7 @@ class SnapshotClient(NamespacedClient):
         snapshot: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -78,6 +80,7 @@ class SnapshotClient(NamespacedClient):
         include_repository: Optional[Any] = ...,
         index_details: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         verbose: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -97,6 +100,7 @@ class SnapshotClient(NamespacedClient):
         repository: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -117,6 +121,7 @@ class SnapshotClient(NamespacedClient):
         repository: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -136,6 +141,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         verify: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -158,6 +164,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         wait_for_completion: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -179,6 +186,7 @@ class SnapshotClient(NamespacedClient):
         snapshot: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -197,6 +205,7 @@ class SnapshotClient(NamespacedClient):
         repository: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -216,6 +225,7 @@ class SnapshotClient(NamespacedClient):
         repository: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -238,6 +248,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
diff --git a/opensearchpy/_version.py b/opensearchpy/_version.py
index 9573bb65..dbca2ec8 100644
--- a/opensearchpy/_version.py
+++ b/opensearchpy/_version.py
@@ -24,5 +24,4 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
-
-__versionstr__ = "2.0.0"
+__versionstr__ = "2.0.1"
diff --git a/opensearchpy/client/__init__.py b/opensearchpy/client/__init__.py
index 36e2bc63..b60a9cb7 100644
--- a/opensearchpy/client/__init__.py
+++ b/opensearchpy/client/__init__.py
@@ -312,7 +312,7 @@ class OpenSearch(object):
     )
     def index(self, index, body, id=None, params=None, headers=None):
         """
-        Creates or updates a document in an index.
+        Creates or overwrites a document in an index.
 
 
         :arg index: The name of the index
@@ -692,14 +692,15 @@ class OpenSearch(object):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_script(self, id, params=None, headers=None):
         """
         Deletes a script.
 
 
         :arg id: Script ID
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if id in SKIP_IN_PATH:
@@ -940,14 +941,15 @@ class OpenSearch(object):
             "GET", _make_path(index, doc_type, id), params=params, headers=headers
         )
 
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     def get_script(self, id, params=None, headers=None):
         """
         Returns a script.
 
 
         :arg id: Script ID
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         if id in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'id'.")
@@ -1201,7 +1203,7 @@ class OpenSearch(object):
             "POST", path, params=params, headers=headers, body=body
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def put_script(self, id, body, context=None, params=None, headers=None):
         """
         Creates or updates a script.
@@ -1210,7 +1212,8 @@ class OpenSearch(object):
         :arg id: Script ID
         :arg body: The document
         :arg context: Context name to compile script against
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         for param in (id, body):
@@ -1578,7 +1581,7 @@ class OpenSearch(object):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         :arg preference: Specify the node or shard the operation should
             be performed on (default: random)
         :arg routing: Specific routing value
diff --git a/opensearchpy/client/__init__.pyi b/opensearchpy/client/__init__.pyi
index 893738a2..4cf27eb9 100644
--- a/opensearchpy/client/__init__.pyi
+++ b/opensearchpy/client/__init__.pyi
@@ -329,6 +329,7 @@ class OpenSearch(object):
         id: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -485,6 +486,7 @@ class OpenSearch(object):
         id: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -636,6 +638,7 @@ class OpenSearch(object):
         body: Any,
         context: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/client/cat.py b/opensearchpy/client/cat.py
index b8c4ad5e..cc1106d5 100644
--- a/opensearchpy/client/cat.py
+++ b/opensearchpy/client/cat.py
@@ -45,7 +45,7 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -54,7 +54,17 @@ class CatClient(NamespacedClient):
             "GET", _make_path("_cat", "aliases", name), params=params, headers=headers
         )
 
-    @query_params("bytes", "format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "bytes",
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     def allocation(self, node_id=None, params=None, headers=None):
         """
         Provides a snapshot of how many shards are allocated to each data node and how
@@ -70,9 +80,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -150,6 +162,7 @@ class CatClient(NamespacedClient):
         "include_unloaded_segments",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "pri",
         "s",
         "time",
@@ -179,9 +192,11 @@ class CatClient(NamespacedClient):
             will include stats for segments that are not currently loaded into
             memory
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg pri: Set to true to return stats only for primary shards
         :arg s: Comma-separated list of column names or column aliases
             to sort by
@@ -193,7 +208,16 @@ class CatClient(NamespacedClient):
             "GET", _make_path("_cat", "indices", index), params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     def master(self, params=None, headers=None):
         """
         Returns information about the master node.
@@ -204,17 +228,44 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
         """
+        from warnings import warn
+
+        warn("Deprecated: use `cluster_manager` instead")
         return self.transport.perform_request(
             "GET", "/_cat/master", params=params, headers=headers
         )
 
+    @query_params("format", "h", "help", "local", "cluster_manager_timeout", "s", "v")
+    def cluster_manager(self, params=None, headers=None):
+        """
+        Returns information about the cluster_manager node.
+
+
+        :arg format: a short version of the Accept header, e.g. json,
+            yaml
+        :arg h: Comma-separated list of column names to display
+        :arg help: Return help information
+        :arg local: Return local information, do not retrieve the state
+            from cluster_manager node (default: false)
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
+        :arg s: Comma-separated list of column names or column aliases
+            to sort by
+        :arg v: Verbose mode. Display column headers
+        """
+        return self.transport.perform_request(
+            "GET", "/_cat/cluster_manager", params=params, headers=headers
+        )
+
     @query_params(
         "bytes",
         "format",
@@ -224,6 +275,7 @@ class CatClient(NamespacedClient):
         "include_unloaded_segments",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "s",
         "time",
         "v",
@@ -246,8 +298,10 @@ class CatClient(NamespacedClient):
             memory
         :arg local: Calculate the selected nodes using the local cluster
             state rather than the state from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -289,7 +343,16 @@ class CatClient(NamespacedClient):
         )
 
     @query_params(
-        "bytes", "format", "h", "help", "local", "master_timeout", "s", "time", "v"
+        "bytes",
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "time",
+        "v",
     )
     def shards(self, index=None, params=None, headers=None):
         """
@@ -305,9 +368,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -340,7 +405,17 @@ class CatClient(NamespacedClient):
             "GET", _make_path("_cat", "segments", index), params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "time", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "time",
+        "v",
+    )
     def pending_tasks(self, params=None, headers=None):
         """
         Returns a concise representation of the cluster pending tasks.
@@ -351,9 +426,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -364,7 +441,17 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/pending_tasks", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "size", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "size",
+        "v",
+    )
     def thread_pool(self, thread_pool_patterns=None, params=None, headers=None):
         """
         Returns cluster-wide thread pool statistics per node. By default the active,
@@ -378,9 +465,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg size: The multiplier in which to display values  Valid
@@ -421,7 +510,15 @@ class CatClient(NamespacedClient):
         )
 
     @query_params(
-        "format", "h", "help", "include_bootstrap", "local", "master_timeout", "s", "v"
+        "format",
+        "h",
+        "help",
+        "include_bootstrap",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
     )
     def plugins(self, params=None, headers=None):
         """
@@ -435,9 +532,11 @@ class CatClient(NamespacedClient):
         :arg include_bootstrap: Include bootstrap plugins in the
             response
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -446,7 +545,16 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/plugins", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     def nodeattrs(self, params=None, headers=None):
         """
         Returns information about custom node attributes.
@@ -457,9 +565,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -468,7 +578,16 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/nodeattrs", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     def repositories(self, params=None, headers=None):
         """
         Returns information about snapshot repositories registered in the cluster.
@@ -480,8 +599,10 @@ class CatClient(NamespacedClient):
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
             from master node
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
@@ -491,7 +612,15 @@ class CatClient(NamespacedClient):
         )
 
     @query_params(
-        "format", "h", "help", "ignore_unavailable", "master_timeout", "s", "time", "v"
+        "format",
+        "h",
+        "help",
+        "ignore_unavailable",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "time",
+        "v",
     )
     def snapshots(self, repository=None, params=None, headers=None):
         """
@@ -506,8 +635,10 @@ class CatClient(NamespacedClient):
         :arg help: Return help information
         :arg ignore_unavailable: Set to true to ignore unavailable
             snapshots
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg time: The unit in which to display time values  Valid
@@ -561,7 +692,16 @@ class CatClient(NamespacedClient):
             "GET", "/_cat/tasks", params=params, headers=headers
         )
 
-    @query_params("format", "h", "help", "local", "master_timeout", "s", "v")
+    @query_params(
+        "format",
+        "h",
+        "help",
+        "local",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "s",
+        "v",
+    )
     def templates(self, name=None, params=None, headers=None):
         """
         Returns information about existing templates.
@@ -573,9 +713,11 @@ class CatClient(NamespacedClient):
         :arg h: Comma-separated list of column names to display
         :arg help: Return help information
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg s: Comma-separated list of column names or column aliases
             to sort by
         :arg v: Verbose mode. Display column headers
diff --git a/opensearchpy/client/cat.pyi b/opensearchpy/client/cat.pyi
index 513174c7..e29e9253 100644
--- a/opensearchpy/client/cat.pyi
+++ b/opensearchpy/client/cat.pyi
@@ -62,6 +62,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -150,6 +151,7 @@ class CatClient(NamespacedClient):
         include_unloaded_segments: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pri: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
@@ -174,6 +176,29 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
+        s: Optional[Any] = ...,
+        v: Optional[Any] = ...,
+        pretty: Optional[bool] = ...,
+        human: Optional[bool] = ...,
+        error_trace: Optional[bool] = ...,
+        filter_path: Optional[Union[str, Collection[str]]] = ...,
+        request_timeout: Optional[Union[int, float]] = ...,
+        ignore: Optional[Union[int, Collection[int]]] = ...,
+        opaque_id: Optional[str] = ...,
+        http_auth: Optional[Union[str, Tuple[str, str]]] = ...,
+        api_key: Optional[Union[str, Tuple[str, str]]] = ...,
+        params: Optional[MutableMapping[str, Any]] = ...,
+        headers: Optional[MutableMapping[str, str]] = ...,
+    ) -> Any: ...
+    def cluster_manager(
+        self,
+        *,
+        format: Optional[Any] = ...,
+        h: Optional[Any] = ...,
+        help: Optional[Any] = ...,
+        local: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -199,6 +224,7 @@ class CatClient(NamespacedClient):
         include_unloaded_segments: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -249,6 +275,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -294,6 +321,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -318,6 +346,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         size: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -364,6 +393,7 @@ class CatClient(NamespacedClient):
         include_bootstrap: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -386,6 +416,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -408,6 +439,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -431,6 +463,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         time: Optional[Any] = ...,
         v: Optional[Any] = ...,
@@ -480,6 +513,7 @@ class CatClient(NamespacedClient):
         help: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         s: Optional[Any] = ...,
         v: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
diff --git a/opensearchpy/client/cluster.py b/opensearchpy/client/cluster.py
index 7200608f..fd749cbc 100644
--- a/opensearchpy/client/cluster.py
+++ b/opensearchpy/client/cluster.py
@@ -34,6 +34,7 @@ class ClusterClient(NamespacedClient):
         "level",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
         "wait_for_events",
@@ -54,9 +55,11 @@ class ClusterClient(NamespacedClient):
         :arg level: Specify the level of detail for returned information
             Valid choices: cluster, indices, shards  Default: cluster
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Wait until the specified number of
             shards is active
@@ -79,7 +82,7 @@ class ClusterClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     def pending_tasks(self, params=None, headers=None):
         """
         Returns a list of any cluster-level changes (e.g. create index, update mapping,
@@ -87,8 +90,9 @@ class ClusterClient(NamespacedClient):
 
 
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return self.transport.perform_request(
             "GET", "/_cluster/pending_tasks", params=params, headers=headers
@@ -101,6 +105,7 @@ class ClusterClient(NamespacedClient):
         "ignore_unavailable",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
         "wait_for_metadata_version",
         "wait_for_timeout",
     )
@@ -125,8 +130,9 @@ class ClusterClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg wait_for_metadata_version: Wait for the metadata version to
             be equal or greater than the specified metadata version
         :arg wait_for_timeout: The maximum time to wait for
@@ -166,7 +172,13 @@ class ClusterClient(NamespacedClient):
         )
 
     @query_params(
-        "dry_run", "explain", "master_timeout", "metric", "retry_failed", "timeout"
+        "dry_run",
+        "explain",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "metric",
+        "retry_failed",
+        "timeout",
     )
     def reroute(self, body=None, params=None, headers=None):
         """
@@ -179,8 +191,10 @@ class ClusterClient(NamespacedClient):
             resulting state
         :arg explain: Return an explanation of why the commands can or
             cannot be executed
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg metric: Limit the information returned to the specified
             metrics. Defaults to all but metadata  Valid choices: _all, blocks,
             metadata, nodes, routing_table, master_node, version
@@ -192,7 +206,13 @@ class ClusterClient(NamespacedClient):
             "POST", "/_cluster/reroute", params=params, headers=headers, body=body
         )
 
-    @query_params("flat_settings", "include_defaults", "master_timeout", "timeout")
+    @query_params(
+        "flat_settings",
+        "include_defaults",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "timeout",
+    )
     def get_settings(self, params=None, headers=None):
         """
         Returns cluster settings.
@@ -202,15 +222,19 @@ class ClusterClient(NamespacedClient):
             false)
         :arg include_defaults: Whether to return all default clusters
             setting.
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         return self.transport.perform_request(
             "GET", "/_cluster/settings", params=params, headers=headers
         )
 
-    @query_params("flat_settings", "master_timeout", "timeout")
+    @query_params(
+        "flat_settings", "master_timeout", "cluster_manager_timeout", "timeout"
+    )
     def put_settings(self, body, params=None, headers=None):
         """
         Updates the cluster settings.
@@ -220,8 +244,10 @@ class ClusterClient(NamespacedClient):
             or `persistent` (survives cluster restart).
         :arg flat_settings: Return settings in flat format (default:
             false)
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if body in SKIP_IN_PATH:
@@ -262,14 +288,15 @@ class ClusterClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_component_template(self, name, params=None, headers=None):
         """
         Deletes a component template
 
 
         :arg name: The name of the template
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if name in SKIP_IN_PATH:
@@ -282,7 +309,7 @@ class ClusterClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     def get_component_template(self, name=None, params=None, headers=None):
         """
         Returns one or more component templates
@@ -290,9 +317,11 @@ class ClusterClient(NamespacedClient):
 
         :arg name: The comma separated names of the component templates
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return self.transport.perform_request(
             "GET",
@@ -301,7 +330,7 @@ class ClusterClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("create", "master_timeout", "timeout")
+    @query_params("create", "master_timeout", "cluster_manager_timeout", "timeout")
     def put_component_template(self, name, body, params=None, headers=None):
         """
         Creates or updates a component template
@@ -311,7 +340,8 @@ class ClusterClient(NamespacedClient):
         :arg body: The template definition
         :arg create: Whether the index template should only be added if
             new or can also replace an existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         for param in (name, body):
@@ -326,7 +356,7 @@ class ClusterClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     def exists_component_template(self, name, params=None, headers=None):
         """
         Returns information about whether a particular component template exist
@@ -334,9 +364,11 @@ class ClusterClient(NamespacedClient):
 
         :arg name: The name of the template
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
diff --git a/opensearchpy/client/cluster.pyi b/opensearchpy/client/cluster.pyi
index 3fe9ee9e..49b27c54 100644
--- a/opensearchpy/client/cluster.pyi
+++ b/opensearchpy/client/cluster.pyi
@@ -37,6 +37,7 @@ class ClusterClient(NamespacedClient):
         level: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         wait_for_events: Optional[Any] = ...,
@@ -62,6 +63,7 @@ class ClusterClient(NamespacedClient):
         *,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -86,6 +88,7 @@ class ClusterClient(NamespacedClient):
         ignore_unavailable: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         wait_for_metadata_version: Optional[Any] = ...,
         wait_for_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -127,6 +130,7 @@ class ClusterClient(NamespacedClient):
         dry_run: Optional[Any] = ...,
         explain: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         metric: Optional[Any] = ...,
         retry_failed: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
@@ -149,6 +153,7 @@ class ClusterClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         include_defaults: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -169,6 +174,7 @@ class ClusterClient(NamespacedClient):
         body: Any,
         flat_settings: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -223,6 +229,7 @@ class ClusterClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -243,6 +250,7 @@ class ClusterClient(NamespacedClient):
         name: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -263,6 +271,7 @@ class ClusterClient(NamespacedClient):
         body: Any,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -283,6 +292,7 @@ class ClusterClient(NamespacedClient):
         *,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
diff --git a/opensearchpy/client/dangling_indices.py b/opensearchpy/client/dangling_indices.py
index cf779a28..4d1b5a36 100644
--- a/opensearchpy/client/dangling_indices.py
+++ b/opensearchpy/client/dangling_indices.py
@@ -29,7 +29,9 @@ from .utils import SKIP_IN_PATH, NamespacedClient, _make_path, query_params
 
 
 class DanglingIndicesClient(NamespacedClient):
-    @query_params("accept_data_loss", "master_timeout", "timeout")
+    @query_params(
+        "accept_data_loss", "master_timeout", "cluster_manager_timeout", "timeout"
+    )
     def delete_dangling_index(self, index_uuid, params=None, headers=None):
         """
         Deletes the specified dangling index
@@ -38,7 +40,8 @@ class DanglingIndicesClient(NamespacedClient):
         :arg index_uuid: The UUID of the dangling index
         :arg accept_data_loss: Must be set to true in order to delete
             the dangling index
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if index_uuid in SKIP_IN_PATH:
@@ -51,7 +54,9 @@ class DanglingIndicesClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("accept_data_loss", "master_timeout", "timeout")
+    @query_params(
+        "accept_data_loss", "master_timeout", "cluster_manager_timeout", "timeout"
+    )
     def import_dangling_index(self, index_uuid, params=None, headers=None):
         """
         Imports the specified dangling index
@@ -60,7 +65,8 @@ class DanglingIndicesClient(NamespacedClient):
         :arg index_uuid: The UUID of the dangling index
         :arg accept_data_loss: Must be set to true in order to import
             the dangling index
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if index_uuid in SKIP_IN_PATH:
diff --git a/opensearchpy/client/dangling_indices.pyi b/opensearchpy/client/dangling_indices.pyi
index c4dae3bf..56e4a72f 100644
--- a/opensearchpy/client/dangling_indices.pyi
+++ b/opensearchpy/client/dangling_indices.pyi
@@ -35,6 +35,7 @@ class DanglingIndicesClient(NamespacedClient):
         *,
         accept_data_loss: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -55,6 +56,7 @@ class DanglingIndicesClient(NamespacedClient):
         *,
         accept_data_loss: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/client/features.py b/opensearchpy/client/features.py
index ef29113b..a9e6ab95 100644
--- a/opensearchpy/client/features.py
+++ b/opensearchpy/client/features.py
@@ -29,15 +29,17 @@ from .utils import NamespacedClient, query_params
 
 
 class FeaturesClient(NamespacedClient):
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     def get_features(self, params=None, headers=None):
         """
         Gets a list of features which can be included in snapshots using the
         feature_states field when creating a snapshot
 
 
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return self.transport.perform_request(
             "GET", "/_features", params=params, headers=headers
diff --git a/opensearchpy/client/features.pyi b/opensearchpy/client/features.pyi
index 487f824a..8da34e42 100644
--- a/opensearchpy/client/features.pyi
+++ b/opensearchpy/client/features.pyi
@@ -33,6 +33,7 @@ class FeaturesClient(NamespacedClient):
         self,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
diff --git a/opensearchpy/client/indices.py b/opensearchpy/client/indices.py
index d78fc06b..138692e1 100644
--- a/opensearchpy/client/indices.py
+++ b/opensearchpy/client/indices.py
@@ -105,7 +105,9 @@ class IndicesClient(NamespacedClient):
             "POST", _make_path(index, "_flush"), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout", "wait_for_active_shards")
+    @query_params(
+        "master_timeout", "cluster_manager_timeout", "timeout", "wait_for_active_shards"
+    )
     def create(self, index, body=None, params=None, headers=None):
         """
         Creates an index with optional settings and mappings.
@@ -114,7 +116,8 @@ class IndicesClient(NamespacedClient):
         :arg index: The name of the index
         :arg body: The configuration for the index (`settings` and
             `mappings`)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for before the operation returns.
@@ -126,7 +129,9 @@ class IndicesClient(NamespacedClient):
             "PUT", _make_path(index), params=params, headers=headers, body=body
         )
 
-    @query_params("master_timeout", "timeout", "wait_for_active_shards")
+    @query_params(
+        "master_timeout", "cluster_manager_timeout", "timeout", "wait_for_active_shards"
+    )
     def clone(self, index, target, body=None, params=None, headers=None):
         """
         Clones an index
@@ -136,7 +141,8 @@ class IndicesClient(NamespacedClient):
         :arg target: The name of the target index to clone into
         :arg body: The configuration for the target index (`settings`
             and `aliases`)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the cloned index before the operation returns.
@@ -161,6 +167,7 @@ class IndicesClient(NamespacedClient):
         "include_defaults",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
     )
     def get(self, index, params=None, headers=None):
         """
@@ -180,8 +187,9 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether to return all default setting for
             each of the indices.
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         if index in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'index'.")
@@ -195,6 +203,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -212,7 +221,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: closed
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns.
@@ -229,6 +239,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -246,7 +257,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns. Set to `index-setting` to wait
@@ -265,6 +277,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
     )
     def delete(self, index, params=None, headers=None):
@@ -281,7 +294,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Ignore unavailable indexes (default:
             false)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if index in SKIP_IN_PATH:
@@ -317,7 +331,7 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether to return all default setting for
             each of the indices.
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         if index in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'index'.")
@@ -331,6 +345,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "write_index_only",
     )
@@ -351,7 +366,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg write_index_only: When true, applies mappings only to the
             write index of an alias or data stream
@@ -376,6 +392,7 @@ class IndicesClient(NamespacedClient):
         "ignore_unavailable",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
     )
     def get_mapping(self, index=None, params=None, headers=None):
         """
@@ -392,8 +409,9 @@ class IndicesClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return self.transport.perform_request(
             "GET",
@@ -427,7 +445,7 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether the default mapping values should
             be returned as well
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         if fields in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'fields'.")
@@ -439,7 +457,7 @@ class IndicesClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def put_alias(self, index, name, body=None, params=None, headers=None):
         """
         Creates or updates an alias.
@@ -451,7 +469,8 @@ class IndicesClient(NamespacedClient):
         :arg name: The name of the alias to be created or updated
         :arg body: The settings for the alias, such as `routing` or
             `filter`
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit timestamp for the document
         """
         for param in (index, name):
@@ -484,7 +503,7 @@ class IndicesClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -511,20 +530,21 @@ class IndicesClient(NamespacedClient):
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
+            from cluster_manager node (default: false)
         """
         return self.transport.perform_request(
             "GET", _make_path(index, "_alias", name), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def update_aliases(self, body, params=None, headers=None):
         """
         Updates index aliases.
 
 
         :arg body: The definition of `actions` to perform
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Request timeout
         """
         if body in SKIP_IN_PATH:
@@ -534,7 +554,7 @@ class IndicesClient(NamespacedClient):
             "POST", "/_aliases", params=params, headers=headers, body=body
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_alias(self, index, name, params=None, headers=None):
         """
         Deletes an alias.
@@ -544,7 +564,8 @@ class IndicesClient(NamespacedClient):
             wildcards); use `_all` for all indices
         :arg name: A comma-separated list of aliases to delete (supports
             wildcards); use `_all` to delete all aliases for the specified indices.
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit timestamp for the document
         """
         for param in (index, name):
@@ -555,7 +576,7 @@ class IndicesClient(NamespacedClient):
             "DELETE", _make_path(index, "_alias", name), params=params, headers=headers
         )
 
-    @query_params("create", "master_timeout", "order")
+    @query_params("create", "master_timeout", "cluster_manager_timeout", "order")
     def put_template(self, name, body, params=None, headers=None):
         """
         Creates or updates an index template.
@@ -565,7 +586,8 @@ class IndicesClient(NamespacedClient):
         :arg body: The template definition
         :arg create: Whether the index template should only be added if
             new or can also replace an existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg order: The order for this template when merging multiple
             matching ones (higher numbers are merged later, overriding the lower
             numbers)
@@ -582,7 +604,7 @@ class IndicesClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     def exists_template(self, name, params=None, headers=None):
         """
         Returns information about whether a particular index template exists.
@@ -592,9 +614,11 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -603,7 +627,7 @@ class IndicesClient(NamespacedClient):
             "HEAD", _make_path("_template", name), params=params, headers=headers
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     def get_template(self, name=None, params=None, headers=None):
         """
         Returns an index template.
@@ -613,22 +637,25 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return self.transport.perform_request(
             "GET", _make_path("_template", name), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_template(self, name, params=None, headers=None):
         """
         Deletes an index template.
 
 
         :arg name: The name of the template
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if name in SKIP_IN_PATH:
@@ -646,6 +673,7 @@ class IndicesClient(NamespacedClient):
         "include_defaults",
         "local",
         "master_timeout",
+        "cluster_manager_timeout",
     )
     def get_settings(self, index=None, name=None, params=None, headers=None):
         """
@@ -668,8 +696,9 @@ class IndicesClient(NamespacedClient):
         :arg include_defaults: Whether to return all default setting for
             each of the indices.
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Specify timeout for connection to master
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return self.transport.perform_request(
             "GET", _make_path(index, "_settings", name), params=params, headers=headers
@@ -681,6 +710,7 @@ class IndicesClient(NamespacedClient):
         "flat_settings",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "preserve_existing",
         "timeout",
     )
@@ -702,7 +732,8 @@ class IndicesClient(NamespacedClient):
             false)
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg preserve_existing: Whether to update existing settings. If
             set to `true` existing settings on an index remain unchanged, the
             default is `false`
@@ -1041,7 +1072,11 @@ class IndicesClient(NamespacedClient):
         )
 
     @query_params(
-        "copy_settings", "master_timeout", "timeout", "wait_for_active_shards"
+        "copy_settings",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "timeout",
+        "wait_for_active_shards",
     )
     def shrink(self, index, target, body=None, params=None, headers=None):
         """
@@ -1054,7 +1089,8 @@ class IndicesClient(NamespacedClient):
             and `aliases`)
         :arg copy_settings: whether or not to copy settings from the
             source index (defaults to false)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the shrunken index before the operation returns.
@@ -1072,7 +1108,11 @@ class IndicesClient(NamespacedClient):
         )
 
     @query_params(
-        "copy_settings", "master_timeout", "timeout", "wait_for_active_shards"
+        "copy_settings",
+        "master_timeout",
+        "cluster_manager_timeout",
+        "timeout",
+        "wait_for_active_shards",
     )
     def split(self, index, target, body=None, params=None, headers=None):
         """
@@ -1086,7 +1126,8 @@ class IndicesClient(NamespacedClient):
             and `aliases`)
         :arg copy_settings: whether or not to copy settings from the
             source index (defaults to false)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the shrunken index before the operation returns.
@@ -1106,6 +1147,7 @@ class IndicesClient(NamespacedClient):
     @query_params(
         "dry_run",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -1122,7 +1164,8 @@ class IndicesClient(NamespacedClient):
         :arg dry_run: If set to true the rollover action will only be
             validated but not actually performed even if a condition matches. The
             default is false
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Set the number of active shards to
             wait for on the newly created rollover index before the operation
@@ -1144,6 +1187,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -1162,7 +1206,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: closed
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns.
@@ -1179,6 +1224,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
         "wait_for_active_shards",
     )
@@ -1197,7 +1243,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: closed
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         :arg wait_for_active_shards: Sets the number of active shards to
             wait for before the operation returns.
@@ -1270,14 +1317,15 @@ class IndicesClient(NamespacedClient):
             "DELETE", _make_path("_data_stream", name), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_index_template(self, name, params=None, headers=None):
         """
         Deletes an index template.
 
 
         :arg name: The name of the template
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         if name in SKIP_IN_PATH:
@@ -1290,7 +1338,7 @@ class IndicesClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     def exists_index_template(self, name, params=None, headers=None):
         """
         Returns information about whether a particular index template exists.
@@ -1300,9 +1348,11 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -1311,7 +1361,7 @@ class IndicesClient(NamespacedClient):
             "HEAD", _make_path("_index_template", name), params=params, headers=headers
         )
 
-    @query_params("flat_settings", "local", "master_timeout")
+    @query_params("flat_settings", "local", "master_timeout", "cluster_manager_timeout")
     def get_index_template(self, name=None, params=None, headers=None):
         """
         Returns an index template.
@@ -1321,15 +1371,17 @@ class IndicesClient(NamespacedClient):
         :arg flat_settings: Return settings in flat format (default:
             false)
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return self.transport.perform_request(
             "GET", _make_path("_index_template", name), params=params, headers=headers
         )
 
-    @query_params("cause", "create", "master_timeout")
+    @query_params("cause", "create", "master_timeout", "cluster_manager_timeout")
     def put_index_template(self, name, body, params=None, headers=None):
         """
         Creates or updates an index template.
@@ -1341,7 +1393,8 @@ class IndicesClient(NamespacedClient):
             template
         :arg create: Whether the index template should only be added if
             new or can also replace an existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         for param in (name, body):
             if param in SKIP_IN_PATH:
@@ -1355,7 +1408,7 @@ class IndicesClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("cause", "create", "master_timeout")
+    @query_params("cause", "create", "master_timeout", "cluster_manager_timeout")
     def simulate_index_template(self, name, body=None, params=None, headers=None):
         """
         Simulate matching the given index name against the index templates in the
@@ -1371,7 +1424,8 @@ class IndicesClient(NamespacedClient):
         :arg create: Whether the index template we optionally defined in
             the body should only be dry-run added if new or can also replace an
             existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         if name in SKIP_IN_PATH:
             raise ValueError("Empty value passed for a required argument 'name'.")
@@ -1400,7 +1454,7 @@ class IndicesClient(NamespacedClient):
             "GET", _make_path("_data_stream", name), params=params, headers=headers
         )
 
-    @query_params("cause", "create", "master_timeout")
+    @query_params("cause", "create", "master_timeout", "cluster_manager_timeout")
     def simulate_template(self, body=None, name=None, params=None, headers=None):
         """
         Simulate resolving the given template name or body
@@ -1414,7 +1468,8 @@ class IndicesClient(NamespacedClient):
         :arg create: Whether the index template we optionally defined in
             the body should only be dry-run added if new or can also replace an
             existing one
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         """
         return self.transport.perform_request(
             "POST",
@@ -1453,6 +1508,7 @@ class IndicesClient(NamespacedClient):
         "expand_wildcards",
         "ignore_unavailable",
         "master_timeout",
+        "cluster_manager_timeout",
         "timeout",
     )
     def add_block(self, index, block, params=None, headers=None):
@@ -1471,7 +1527,8 @@ class IndicesClient(NamespacedClient):
             closed, hidden, none, all  Default: open
         :arg ignore_unavailable: Whether specified concrete indices
             should be ignored when unavailable (missing or closed)
-        :arg master_timeout: Specify timeout for connection to master
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Specify timeout for connection to master
+        :arg cluster_manager_timeout: Specify timeout for connection to cluster_manager
         :arg timeout: Explicit operation timeout
         """
         for param in (index, block):
diff --git a/opensearchpy/client/indices.pyi b/opensearchpy/client/indices.pyi
index a5ef8f94..2393537a 100644
--- a/opensearchpy/client/indices.pyi
+++ b/opensearchpy/client/indices.pyi
@@ -95,6 +95,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -117,6 +118,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -143,6 +145,7 @@ class IndicesClient(NamespacedClient):
         include_defaults: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -164,6 +167,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -187,6 +191,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -210,6 +215,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -256,6 +262,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         write_index_only: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -280,6 +287,7 @@ class IndicesClient(NamespacedClient):
         ignore_unavailable: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -323,6 +331,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -386,6 +395,7 @@ class IndicesClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -406,6 +416,7 @@ class IndicesClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -427,6 +438,7 @@ class IndicesClient(NamespacedClient):
         body: Any,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         order: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -448,6 +460,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -468,6 +481,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -486,6 +500,7 @@ class IndicesClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -512,6 +527,7 @@ class IndicesClient(NamespacedClient):
         include_defaults: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -535,6 +551,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         preserve_existing: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -786,6 +803,7 @@ class IndicesClient(NamespacedClient):
         body: Optional[Any] = ...,
         copy_settings: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -809,6 +827,7 @@ class IndicesClient(NamespacedClient):
         body: Optional[Any] = ...,
         copy_settings: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -832,6 +851,7 @@ class IndicesClient(NamespacedClient):
         new_index: Optional[Any] = ...,
         dry_run: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -855,6 +875,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -878,6 +899,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         wait_for_active_shards: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -953,6 +975,7 @@ class IndicesClient(NamespacedClient):
         name: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -974,6 +997,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -994,6 +1018,7 @@ class IndicesClient(NamespacedClient):
         flat_settings: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1015,6 +1040,7 @@ class IndicesClient(NamespacedClient):
         cause: Optional[Any] = ...,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1036,6 +1062,7 @@ class IndicesClient(NamespacedClient):
         cause: Optional[Any] = ...,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1075,6 +1102,7 @@ class IndicesClient(NamespacedClient):
         cause: Optional[Any] = ...,
         create: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -1115,6 +1143,7 @@ class IndicesClient(NamespacedClient):
         expand_wildcards: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/client/ingest.py b/opensearchpy/client/ingest.py
index 46131a5e..e40f1a3d 100644
--- a/opensearchpy/client/ingest.py
+++ b/opensearchpy/client/ingest.py
@@ -29,7 +29,7 @@ from .utils import SKIP_IN_PATH, NamespacedClient, _make_path, query_params
 
 
 class IngestClient(NamespacedClient):
-    @query_params("master_timeout", "summary")
+    @query_params("master_timeout", "cluster_manager_timeout", "summary")
     def get_pipeline(self, id=None, params=None, headers=None):
         """
         Returns a pipeline.
@@ -37,8 +37,10 @@ class IngestClient(NamespacedClient):
 
         :arg id: Comma separated list of pipeline ids. Wildcards
             supported
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg summary: Return pipelines without their definitions
             (default: false)
         """
@@ -46,7 +48,7 @@ class IngestClient(NamespacedClient):
             "GET", _make_path("_ingest", "pipeline", id), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def put_pipeline(self, id, body, params=None, headers=None):
         """
         Creates or updates a pipeline.
@@ -54,8 +56,10 @@ class IngestClient(NamespacedClient):
 
         :arg id: Pipeline ID
         :arg body: The ingest definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         for param in (id, body):
@@ -70,15 +74,17 @@ class IngestClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_pipeline(self, id, params=None, headers=None):
         """
         Deletes a pipeline.
 
 
         :arg id: Pipeline ID
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if id in SKIP_IN_PATH:
diff --git a/opensearchpy/client/ingest.pyi b/opensearchpy/client/ingest.pyi
index 6a179cb7..bbc5aba2 100644
--- a/opensearchpy/client/ingest.pyi
+++ b/opensearchpy/client/ingest.pyi
@@ -34,6 +34,7 @@ class IngestClient(NamespacedClient):
         *,
         id: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         summary: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -54,6 +55,7 @@ class IngestClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -73,6 +75,7 @@ class IngestClient(NamespacedClient):
         id: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
diff --git a/opensearchpy/client/snapshot.py b/opensearchpy/client/snapshot.py
index 96adb5eb..200fff96 100644
--- a/opensearchpy/client/snapshot.py
+++ b/opensearchpy/client/snapshot.py
@@ -29,7 +29,7 @@ from .utils import SKIP_IN_PATH, NamespacedClient, _make_path, query_params
 
 
 class SnapshotClient(NamespacedClient):
-    @query_params("master_timeout", "wait_for_completion")
+    @query_params("master_timeout", "cluster_manager_timeout", "wait_for_completion")
     def create(self, repository, snapshot, body=None, params=None, headers=None):
         """
         Creates a snapshot in a repository.
@@ -38,8 +38,10 @@ class SnapshotClient(NamespacedClient):
         :arg repository: A repository name
         :arg snapshot: A snapshot name
         :arg body: The snapshot definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg wait_for_completion: Should this request wait until the
             operation has completed before returning
         """
@@ -55,7 +57,7 @@ class SnapshotClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     def delete(self, repository, snapshot, params=None, headers=None):
         """
         Deletes a snapshot.
@@ -63,8 +65,10 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: A repository name
         :arg snapshot: A snapshot name
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         for param in (repository, snapshot):
             if param in SKIP_IN_PATH:
@@ -82,6 +86,7 @@ class SnapshotClient(NamespacedClient):
         "include_repository",
         "index_details",
         "master_timeout",
+        "cluster_manager_timeout",
         "verbose",
     )
     def get(self, repository, snapshot, params=None, headers=None):
@@ -98,8 +103,10 @@ class SnapshotClient(NamespacedClient):
             in the snapshot info. Defaults to true.
         :arg index_details: Whether to include details of each index in
             the snapshot, if those details are available. Defaults to false.
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg verbose: Whether to show verbose snapshot info or only show
             the basic info found in the repository index blob
         """
@@ -114,7 +121,7 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def delete_repository(self, repository, params=None, headers=None):
         """
         Deletes a repository.
@@ -122,8 +129,10 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: Name of the snapshot repository to unregister.
             Wildcard (`*`) patterns are supported.
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if repository in SKIP_IN_PATH:
@@ -136,7 +145,7 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("local", "master_timeout")
+    @query_params("local", "master_timeout", "cluster_manager_timeout")
     def get_repository(self, repository=None, params=None, headers=None):
         """
         Returns information about a repository.
@@ -144,15 +153,17 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: A comma-separated list of repository names
         :arg local: Return local information, do not retrieve the state
-            from master node (default: false)
-        :arg master_timeout: Explicit operation timeout for connection
+            from cluster_manager node (default: false)
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return self.transport.perform_request(
             "GET", _make_path("_snapshot", repository), params=params, headers=headers
         )
 
-    @query_params("master_timeout", "timeout", "verify")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout", "verify")
     def create_repository(self, repository, body, params=None, headers=None):
         """
         Creates a repository.
@@ -160,8 +171,10 @@ class SnapshotClient(NamespacedClient):
 
         :arg repository: A repository name
         :arg body: The repository definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         :arg verify: Whether to verify the repository after creation
         """
@@ -177,7 +190,7 @@ class SnapshotClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("master_timeout", "wait_for_completion")
+    @query_params("master_timeout", "cluster_manager_timeout", "wait_for_completion")
     def restore(self, repository, snapshot, body=None, params=None, headers=None):
         """
         Restores a snapshot.
@@ -186,8 +199,10 @@ class SnapshotClient(NamespacedClient):
         :arg repository: A repository name
         :arg snapshot: A snapshot name
         :arg body: Details of what to restore
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg wait_for_completion: Should this request wait until the
             operation has completed before returning
         """
@@ -203,7 +218,7 @@ class SnapshotClient(NamespacedClient):
             body=body,
         )
 
-    @query_params("ignore_unavailable", "master_timeout")
+    @query_params("ignore_unavailable", "master_timeout", "cluster_manager_timeout")
     def status(self, repository=None, snapshot=None, params=None, headers=None):
         """
         Returns information about the status of a snapshot.
@@ -214,8 +229,10 @@ class SnapshotClient(NamespacedClient):
         :arg ignore_unavailable: Whether to ignore unavailable
             snapshots, defaults to false which means a SnapshotMissingException is
             thrown
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         return self.transport.perform_request(
             "GET",
@@ -224,15 +241,17 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def verify_repository(self, repository, params=None, headers=None):
         """
         Verifies a repository.
 
 
         :arg repository: A repository name
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if repository in SKIP_IN_PATH:
@@ -245,15 +264,17 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout", "timeout")
+    @query_params("master_timeout", "cluster_manager_timeout", "timeout")
     def cleanup_repository(self, repository, params=None, headers=None):
         """
         Removes stale data from repository.
 
 
         :arg repository: A repository name
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         :arg timeout: Explicit operation timeout
         """
         if repository in SKIP_IN_PATH:
@@ -266,7 +287,7 @@ class SnapshotClient(NamespacedClient):
             headers=headers,
         )
 
-    @query_params("master_timeout")
+    @query_params("master_timeout", "cluster_manager_timeout")
     def clone(
         self, repository, snapshot, target_snapshot, body, params=None, headers=None
     ):
@@ -278,8 +299,10 @@ class SnapshotClient(NamespacedClient):
         :arg snapshot: The name of the snapshot to clone from
         :arg target_snapshot: The name of the cloned snapshot to create
         :arg body: The snapshot clone definition
-        :arg master_timeout: Explicit operation timeout for connection
+        :arg master_timeout (Deprecated: use cluster_manager_timeout): Explicit operation timeout for connection
             to master node
+        :arg cluster_manager_timeout: Explicit operation timeout for connection
+            to cluster_manager node
         """
         for param in (repository, snapshot, target_snapshot, body):
             if param in SKIP_IN_PATH:
diff --git a/opensearchpy/client/snapshot.pyi b/opensearchpy/client/snapshot.pyi
index 71d14ea5..b1db95c0 100644
--- a/opensearchpy/client/snapshot.pyi
+++ b/opensearchpy/client/snapshot.pyi
@@ -36,6 +36,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         wait_for_completion: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -56,6 +57,7 @@ class SnapshotClient(NamespacedClient):
         snapshot: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -78,6 +80,7 @@ class SnapshotClient(NamespacedClient):
         include_repository: Optional[Any] = ...,
         index_details: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         verbose: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -97,6 +100,7 @@ class SnapshotClient(NamespacedClient):
         repository: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -117,6 +121,7 @@ class SnapshotClient(NamespacedClient):
         repository: Optional[Any] = ...,
         local: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -136,6 +141,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         verify: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
@@ -158,6 +164,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         wait_for_completion: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -179,6 +186,7 @@ class SnapshotClient(NamespacedClient):
         snapshot: Optional[Any] = ...,
         ignore_unavailable: Optional[Any] = ...,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
@@ -197,6 +205,7 @@ class SnapshotClient(NamespacedClient):
         repository: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -216,6 +225,7 @@ class SnapshotClient(NamespacedClient):
         repository: Any,
         *,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
@@ -238,6 +248,7 @@ class SnapshotClient(NamespacedClient):
         *,
         body: Any,
         master_timeout: Optional[Any] = ...,
+        cluster_manager_timeout: Optional[Any] = ...,
         pretty: Optional[bool] = ...,
         human: Optional[bool] = ...,
         error_trace: Optional[bool] = ...,
diff --git a/opensearchpy/connection/http_requests.py b/opensearchpy/connection/http_requests.py
index a918a635..0ab835a7 100644
--- a/opensearchpy/connection/http_requests.py
+++ b/opensearchpy/connection/http_requests.py
@@ -66,6 +66,8 @@ class RequestsHttpConnection(Connection):
     :arg http_compress: Use gzip compression
     :arg opaque_id: Send this value in the 'X-Opaque-Id' HTTP header
         For tracing all requests made by this transport.
+    :arg pool_maxsize: Maximum connection pool size used by pool-manager
+        For custom connection-pooling on current session
     """
 
     def __init__(
@@ -82,6 +84,7 @@ class RequestsHttpConnection(Connection):
         headers=None,
         http_compress=None,
         opaque_id=None,
+        pool_maxsize=None,
         **kwargs
     ):
         if not REQUESTS_AVAILABLE:
@@ -94,6 +97,14 @@ class RequestsHttpConnection(Connection):
         for key in list(self.session.headers):
             self.session.headers.pop(key)
 
+        # Mount http-adapter with custom connection-pool size. Default=10
+        if pool_maxsize and isinstance(pool_maxsize, int):
+            pool_adapter = requests.adapters.HTTPAdapter(
+                pool_maxsize=pool_maxsize
+            )
+            self.session.mount("http://", pool_adapter)
+            self.session.mount("https://", pool_adapter)
+
         super(RequestsHttpConnection, self).__init__(
             host=host,
             port=port,
diff --git a/opensearchpy/connection/http_urllib3.py b/opensearchpy/connection/http_urllib3.py
index 51a4f2d9..6fc09e72 100644
--- a/opensearchpy/connection/http_urllib3.py
+++ b/opensearchpy/connection/http_urllib3.py
@@ -273,7 +273,7 @@ class Urllib3HttpConnection(Connection):
             method, full_url, url, orig_body, response.status, raw_data, duration
         )
 
-        return response.status, response.getheaders(), raw_data
+        return response.status, response.headers, raw_data
 
     def get_response_headers(self, response):
         return {header.lower(): value for header, value in response.headers.items()}
diff --git a/opensearchpy/transport.py b/opensearchpy/transport.py
index 3ffd097c..78c559d8 100644
--- a/opensearchpy/transport.py
+++ b/opensearchpy/transport.py
@@ -47,14 +47,14 @@ def get_host_info(node_info, host):
 
     Useful for filtering nodes (by proximity for example) or if additional
     information needs to be provided for the :class:`~opensearchpy.Connection`
-    class. By default master only nodes are filtered out since they shouldn't
+    class. By default cluster_manager only nodes are filtered out since they shouldn't
     typically be used for API operations.
 
     :arg node_info: node information from `/_cluster/nodes`
     :arg host: connection information (host, port) extracted from the node info
     """
-    # ignore master only nodes
-    if node_info.get("roles", []) == ["master"]:
+    # ignore cluster_manager only nodes
+    if node_info.get("roles", []) == ["cluster_manager"]:
         return None
     return host
 
diff --git a/setup.py b/setup.py
index 50a01f36..a359cfb6 100644
--- a/setup.py
+++ b/setup.py
@@ -115,5 +115,6 @@ setup(
         "develop": tests_require + docs_require + generate_require,
         "docs": docs_require,
         "async": async_require,
+        "kerberos": ["requests_kerberos"],
     },
 )


Test patch:
diff --git a/test_opensearchpy/test_async/test_transport.py b/test_opensearchpy/test_async/test_transport.py
index b5634a8d..85360d41 100644
--- a/test_opensearchpy/test_async/test_transport.py
+++ b/test_opensearchpy/test_async/test_transport.py
@@ -83,7 +83,7 @@ CLUSTER_NODES = """{
       "ip" : "127.0.0.1",
       "version" : "5.0.0",
       "build_hash" : "253032b",
-      "roles" : [ "master", "data", "ingest" ],
+      "roles" : [ "cluster_manager", "data", "ingest" ],
       "http" : {
         "bound_address" : [ "[fe80::1]:9200", "[::1]:9200", "127.0.0.1:9200" ],
         "publish_address" : "1.1.1.1:123",
@@ -108,7 +108,7 @@ CLUSTER_NODES_7x_PUBLISH_HOST = """{
       "ip" : "127.0.0.1",
       "version" : "5.0.0",
       "build_hash" : "253032b",
-      "roles" : [ "master", "data", "ingest" ],
+      "roles" : [ "cluster_manager", "data", "ingest" ],
       "http" : {
         "bound_address" : [ "[fe80::1]:9200", "[::1]:9200", "127.0.0.1:9200" ],
         "publish_address" : "somehost.tld/1.1.1.1:123",
diff --git a/test_opensearchpy/test_transport.py b/test_opensearchpy/test_transport.py
index 067b5d09..2c0892cf 100644
--- a/test_opensearchpy/test_transport.py
+++ b/test_opensearchpy/test_transport.py
@@ -71,7 +71,7 @@ CLUSTER_NODES = """{
       "ip" : "127.0.0.1",
       "version" : "5.0.0",
       "build_hash" : "253032b",
-      "roles" : [ "master", "data", "ingest" ],
+      "roles" : [ "cluster_manager", "data", "ingest" ],
       "http" : {
         "bound_address" : [ "[fe80::1]:9200", "[::1]:9200", "127.0.0.1:9200" ],
         "publish_address" : "1.1.1.1:123",
@@ -96,7 +96,7 @@ CLUSTER_NODES_7x_PUBLISH_HOST = """{
       "ip" : "127.0.0.1",
       "version" : "5.0.0",
       "build_hash" : "253032b",
-      "roles" : [ "master", "data", "ingest" ],
+      "roles" : [ "cluster_manager", "data", "ingest" ],
       "http" : {
         "bound_address" : [ "[fe80::1]:9200", "[::1]:9200", "127.0.0.1:9200" ],
         "publish_address" : "somehost.tld/1.1.1.1:123",
@@ -108,10 +108,10 @@ CLUSTER_NODES_7x_PUBLISH_HOST = """{
 
 
 class TestHostsInfoCallback(TestCase):
-    def test_master_only_nodes_are_ignored(self):
+    def test_cluster_manager_only_nodes_are_ignored(self):
         nodes = [
-            {"roles": ["master"]},
-            {"roles": ["master", "data", "ingest"]},
+            {"roles": ["cluster_manager"]},
+            {"roles": ["cluster_manager", "data", "ingest"]},
             {"roles": ["data", "ingest"]},
             {"roles": []},
             {},