diff --git a/elasticsearch/_async/client/ilm.py b/elasticsearch/_async/client/ilm.py index 909f70fb..7274ecce 100644 --- a/elasticsearch/_async/client/ilm.py +++ b/elasticsearch/_async/client/ilm.py @@ -183,3 +183,23 @@ class IlmClient(NamespacedClient): return await self.transport.perform_request( "POST", "/_ilm/stop", params=params, headers=headers ) + + @query_params() + async def migrate_to_data_tiers(self, body=None, params=None, headers=None): + """ + Migrates the indices and ILM policies away from custom node attribute + allocation routing to data tiers routing + + ``_ + + :arg body: Optionally specify a legacy index template name to + delete and optionally specify a node attribute name used for index shard + routing (defaults to "data") + """ + return await self.transport.perform_request( + "POST", + "/_ilm/migrate_to_data_tiers", + params=params, + headers=headers, + body=body, + ) diff --git a/elasticsearch/_async/client/ilm.pyi b/elasticsearch/_async/client/ilm.pyi index fb147a8b..c7b22cad 100644 --- a/elasticsearch/_async/client/ilm.pyi +++ b/elasticsearch/_async/client/ilm.pyi @@ -191,3 +191,20 @@ class IlmClient(NamespacedClient): params: Optional[MutableMapping[str, Any]] = ..., headers: Optional[MutableMapping[str, str]] = ..., ) -> Any: ... + async def migrate_to_data_tiers( + self, + *, + body: Optional[Any] = ..., + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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: ... diff --git a/elasticsearch/_async/client/security.py b/elasticsearch/_async/client/security.py index cedefe93..841e9373 100644 --- a/elasticsearch/_async/client/security.py +++ b/elasticsearch/_async/client/security.py @@ -361,9 +361,9 @@ class SecurityClient(NamespacedClient): @query_params() async def get_user_privileges(self, params=None, headers=None): """ - Retrieves application privileges. + Retrieves security privileges for the logged in user. - ``_ + ``_ """ return await self.transport.perform_request( "GET", "/_security/user/_privileges", params=params, headers=headers @@ -782,3 +782,100 @@ class SecurityClient(NamespacedClient): headers=headers, body=body, ) + + @query_params() + async def saml_authenticate(self, body, params=None, headers=None): + """ + Exchanges a SAML Response message for an Elasticsearch access token and refresh + token pair + + ``_ + + :arg body: The SAML response to authenticate + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return await self.transport.perform_request( + "POST", + "/_security/saml/authenticate", + params=params, + headers=headers, + body=body, + ) + + @query_params() + async def saml_invalidate(self, body, params=None, headers=None): + """ + Consumes a SAML LogoutRequest + + ``_ + + :arg body: The LogoutRequest message + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return await self.transport.perform_request( + "POST", + "/_security/saml/invalidate", + params=params, + headers=headers, + body=body, + ) + + @query_params() + async def saml_logout(self, body, params=None, headers=None): + """ + Invalidates an access token and a refresh token that were generated via the + SAML Authenticate API + + ``_ + + :arg body: The tokens to invalidate + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return await self.transport.perform_request( + "POST", "/_security/saml/logout", params=params, headers=headers, body=body + ) + + @query_params() + async def saml_prepare_authentication(self, body, params=None, headers=None): + """ + Creates a SAML authentication request + + ``_ + + :arg body: The realm for which to create the authentication + request, identified by either its name or the ACS URL + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return await self.transport.perform_request( + "POST", "/_security/saml/prepare", params=params, headers=headers, body=body + ) + + @query_params() + async def saml_service_provider_metadata( + self, realm_name, params=None, headers=None + ): + """ + Generates SAML metadata for the Elastic stack SAML 2.0 Service Provider + + ``_ + + :arg realm_name: The name of the SAML realm to get the metadata + for + """ + if realm_name in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'realm_name'.") + + return await self.transport.perform_request( + "GET", + _make_path("_security", "saml", "metadata", realm_name), + params=params, + headers=headers, + ) diff --git a/elasticsearch/_async/client/security.pyi b/elasticsearch/_async/client/security.pyi index 42dd549f..dfd0c0e2 100644 --- a/elasticsearch/_async/client/security.pyi +++ b/elasticsearch/_async/client/security.pyi @@ -647,3 +647,88 @@ class SecurityClient(NamespacedClient): params: Optional[MutableMapping[str, Any]] = ..., headers: Optional[MutableMapping[str, str]] = ..., ) -> Any: ... + async def saml_authenticate( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_invalidate( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_logout( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_prepare_authentication( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_service_provider_metadata( + self, + realm_name: Any, + *, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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: ... diff --git a/elasticsearch/client/ilm.py b/elasticsearch/client/ilm.py index f9a6aaa2..9149c16a 100644 --- a/elasticsearch/client/ilm.py +++ b/elasticsearch/client/ilm.py @@ -183,3 +183,23 @@ class IlmClient(NamespacedClient): return self.transport.perform_request( "POST", "/_ilm/stop", params=params, headers=headers ) + + @query_params() + def migrate_to_data_tiers(self, body=None, params=None, headers=None): + """ + Migrates the indices and ILM policies away from custom node attribute + allocation routing to data tiers routing + + ``_ + + :arg body: Optionally specify a legacy index template name to + delete and optionally specify a node attribute name used for index shard + routing (defaults to "data") + """ + return self.transport.perform_request( + "POST", + "/_ilm/migrate_to_data_tiers", + params=params, + headers=headers, + body=body, + ) diff --git a/elasticsearch/client/ilm.pyi b/elasticsearch/client/ilm.pyi index 5b642a6b..6b37be52 100644 --- a/elasticsearch/client/ilm.pyi +++ b/elasticsearch/client/ilm.pyi @@ -191,3 +191,20 @@ class IlmClient(NamespacedClient): params: Optional[MutableMapping[str, Any]] = ..., headers: Optional[MutableMapping[str, str]] = ..., ) -> Any: ... + def migrate_to_data_tiers( + self, + *, + body: Optional[Any] = ..., + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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: ... diff --git a/elasticsearch/client/security.py b/elasticsearch/client/security.py index 5eb0286d..a3729f81 100644 --- a/elasticsearch/client/security.py +++ b/elasticsearch/client/security.py @@ -359,9 +359,9 @@ class SecurityClient(NamespacedClient): @query_params() def get_user_privileges(self, params=None, headers=None): """ - Retrieves application privileges. + Retrieves security privileges for the logged in user. - ``_ + ``_ """ return self.transport.perform_request( "GET", "/_security/user/_privileges", params=params, headers=headers @@ -776,3 +776,98 @@ class SecurityClient(NamespacedClient): headers=headers, body=body, ) + + @query_params() + def saml_authenticate(self, body, params=None, headers=None): + """ + Exchanges a SAML Response message for an Elasticsearch access token and refresh + token pair + + ``_ + + :arg body: The SAML response to authenticate + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return self.transport.perform_request( + "POST", + "/_security/saml/authenticate", + params=params, + headers=headers, + body=body, + ) + + @query_params() + def saml_invalidate(self, body, params=None, headers=None): + """ + Consumes a SAML LogoutRequest + + ``_ + + :arg body: The LogoutRequest message + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return self.transport.perform_request( + "POST", + "/_security/saml/invalidate", + params=params, + headers=headers, + body=body, + ) + + @query_params() + def saml_logout(self, body, params=None, headers=None): + """ + Invalidates an access token and a refresh token that were generated via the + SAML Authenticate API + + ``_ + + :arg body: The tokens to invalidate + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return self.transport.perform_request( + "POST", "/_security/saml/logout", params=params, headers=headers, body=body + ) + + @query_params() + def saml_prepare_authentication(self, body, params=None, headers=None): + """ + Creates a SAML authentication request + + ``_ + + :arg body: The realm for which to create the authentication + request, identified by either its name or the ACS URL + """ + if body in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'body'.") + + return self.transport.perform_request( + "POST", "/_security/saml/prepare", params=params, headers=headers, body=body + ) + + @query_params() + def saml_service_provider_metadata(self, realm_name, params=None, headers=None): + """ + Generates SAML metadata for the Elastic stack SAML 2.0 Service Provider + + ``_ + + :arg realm_name: The name of the SAML realm to get the metadata + for + """ + if realm_name in SKIP_IN_PATH: + raise ValueError("Empty value passed for a required argument 'realm_name'.") + + return self.transport.perform_request( + "GET", + _make_path("_security", "saml", "metadata", realm_name), + params=params, + headers=headers, + ) diff --git a/elasticsearch/client/security.pyi b/elasticsearch/client/security.pyi index a195fa96..2353067c 100644 --- a/elasticsearch/client/security.pyi +++ b/elasticsearch/client/security.pyi @@ -647,3 +647,88 @@ class SecurityClient(NamespacedClient): params: Optional[MutableMapping[str, Any]] = ..., headers: Optional[MutableMapping[str, str]] = ..., ) -> Any: ... + def saml_authenticate( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_invalidate( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_logout( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_prepare_authentication( + self, + *, + body: Any, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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 saml_service_provider_metadata( + self, + realm_name: Any, + *, + pretty: Optional[bool] = ..., + human: Optional[bool] = ..., + error_trace: Optional[bool] = ..., + format: Optional[str] = ..., + 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: ...