async fn describe_cluster_versions(
        &self,
        input: DescribeClusterVersionsMessage,
    ) -> Result<ClusterVersionsMessage, RusotoError<DescribeClusterVersionsError>> {
        let mut request = SignedRequest::new("POST", "redshift", &self.region, "/");
        let params = self.new_params("DescribeClusterVersions");
        let mut params = params;
        DescribeClusterVersionsMessageSerializer::serialize(&mut params, "", &input);
        request.set_payload(Some(serde_urlencoded::to_string(&params).unwrap()));
        request.set_content_type("application/x-www-form-urlencoded".to_owned());

        let response = self
            .sign_and_dispatch(request, DescribeClusterVersionsError::from_response)
            .await?;

        let mut response = response;
        let result = xml_util::parse_response(&mut response, |actual_tag_name, stack| {
            xml_util::start_element(actual_tag_name, stack)?;
            let result = ClusterVersionsMessageDeserializer::deserialize(
                "DescribeClusterVersionsResult",
                stack,
            )?;
            skip_tree(stack);
            xml_util::end_element(actual_tag_name, stack)?;
            Ok(result)
        })
        .await?;

        drop(response); // parse non-payload
        Ok(result)
    }
<p>Returns descriptions of the available Amazon Redshift cluster versions. You can call this operation even before creating any clusters to learn more about the Amazon Redshift versions. For more information about managing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
rusoto/services/redshift/src/generated.rs