/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the kendra-ranking-2022-10-19.normal.json service model.
 */
using System;
using System.Runtime.ExceptionServices;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net;
using Amazon.KendraRanking.Model;
using Amazon.KendraRanking.Model.Internal.MarshallTransformations;
using Amazon.KendraRanking.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.KendraRanking
{
    /// 
    /// Implementation for accessing KendraRanking
    ///
    /// Amazon Kendra Intelligent Ranking uses Amazon Kendra semantic search capabilities
    /// to intelligently re-rank a search service's results.
    /// 
    public partial class AmazonKendraRankingClient : AmazonServiceClient, IAmazonKendraRanking
    {
        private static IServiceMetadata serviceMetadata = new AmazonKendraRankingMetadata();
        
        #region Constructors
        /// 
        /// Constructs AmazonKendraRankingClient with the credentials loaded from the application's
        /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
        /// 
        /// Example App.config with credentials set. 
        /// 
        /// <?xml version="1.0" encoding="utf-8" ?>
        /// <configuration>
        ///     <appSettings>
        ///         <add key="AWSProfileName" value="AWS Default"/>
        ///     </appSettings>
        /// </configuration>
        /// 
        ///
        /// 
        public AmazonKendraRankingClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonKendraRankingConfig()) { }
        /// 
        /// Constructs AmazonKendraRankingClient with the credentials loaded from the application's
        /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
        /// 
        /// Example App.config with credentials set. 
        /// 
        /// <?xml version="1.0" encoding="utf-8" ?>
        /// <configuration>
        ///     <appSettings>
        ///         <add key="AWSProfileName" value="AWS Default"/>
        ///     </appSettings>
        /// </configuration>
        /// 
        ///
        /// 
        /// The region to connect.
        public AmazonKendraRankingClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonKendraRankingConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonKendraRankingClient with the credentials loaded from the application's
        /// default configuration, and if unsuccessful from the Instance Profile service on an EC2 instance.
        /// 
        /// Example App.config with credentials set. 
        /// 
        /// <?xml version="1.0" encoding="utf-8" ?>
        /// <configuration>
        ///     <appSettings>
        ///         <add key="AWSProfileName" value="AWS Default"/>
        ///     </appSettings>
        /// </configuration>
        /// 
        ///
        /// 
        /// The AmazonKendraRankingClient Configuration Object
        public AmazonKendraRankingClient(AmazonKendraRankingConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonKendraRankingClient(AWSCredentials credentials)
            : this(credentials, new AmazonKendraRankingConfig())
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonKendraRankingClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonKendraRankingConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Credentials and an
        /// AmazonKendraRankingClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonKendraRankingClient Configuration Object
        public AmazonKendraRankingClient(AWSCredentials credentials, AmazonKendraRankingConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonKendraRankingClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonKendraRankingConfig())
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonKendraRankingClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonKendraRankingConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonKendraRankingClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonKendraRankingClient Configuration Object
        public AmazonKendraRankingClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonKendraRankingConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonKendraRankingClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonKendraRankingConfig())
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The region to connect.
        public AmazonKendraRankingClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonKendraRankingConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonKendraRankingClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonKendraRankingClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonKendraRankingClient Configuration Object
        public AmazonKendraRankingClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonKendraRankingConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
        {
        }
        #endregion
#if AWS_ASYNC_ENUMERABLES_API
        private IKendraRankingPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IKendraRankingPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new KendraRankingPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Overrides
        /// 
        /// Creates the signer for the service.
        /// 
        protected override AbstractAWSSigner CreateSigner()
        {
            return new AWS4Signer();
        } 
        /// 
        /// Customizes the runtime pipeline.
        /// 
        /// Runtime pipeline for the current client.
        protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
        {
            pipeline.RemoveHandler();
            pipeline.AddHandlerAfter(new AmazonKendraRankingEndpointResolver());
        }
        /// 
        /// Capture metadata for the service.
        /// 
        protected override IServiceMetadata ServiceMetadata
        {
            get
            {
                return serviceMetadata;
            }
        }
        #endregion
        #region Dispose
        /// 
        /// Disposes the service client.
        /// 
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }
        #endregion
        #region  CreateRescoreExecutionPlan
        internal virtual CreateRescoreExecutionPlanResponse CreateRescoreExecutionPlan(CreateRescoreExecutionPlanRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateRescoreExecutionPlanResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Creates a rescore execution plan. A rescore execution plan is an Amazon Kendra Intelligent
        /// Ranking resource used for provisioning the Rescore API. You set the number
        /// of capacity units that you require for Amazon Kendra Intelligent Ranking to rescore
        /// or re-rank a search service's results.
        /// 
        ///  
        /// 
        /// For an example of using the CreateRescoreExecutionPlan API, including
        /// using the Python and Java SDKs, see Semantically
        /// ranking a search service's results.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateRescoreExecutionPlan service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateRescoreExecutionPlan service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// A conflict occurred with the request. Please fix any inconsistencies with your resources
        /// and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// You have exceeded the set limits for your Amazon Kendra Intelligent Ranking service.
        /// Please see Quotas
        /// for more information, or contact Support
        /// to inquire about an increase of limits.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for CreateRescoreExecutionPlan Operation
        public virtual Task CreateRescoreExecutionPlanAsync(CreateRescoreExecutionPlanRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateRescoreExecutionPlanResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DeleteRescoreExecutionPlan
        internal virtual DeleteRescoreExecutionPlanResponse DeleteRescoreExecutionPlan(DeleteRescoreExecutionPlanRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRescoreExecutionPlanResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Deletes a rescore execution plan. A rescore execution plan is an Amazon Kendra Intelligent
        /// Ranking resource used for provisioning the Rescore API.
        /// 
        /// Container for the necessary parameters to execute the DeleteRescoreExecutionPlan service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteRescoreExecutionPlan service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// A conflict occurred with the request. Please fix any inconsistencies with your resources
        /// and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use doesn't exist. Please check you have provided the correct
        /// resource and try again.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for DeleteRescoreExecutionPlan Operation
        public virtual Task DeleteRescoreExecutionPlanAsync(DeleteRescoreExecutionPlanRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRescoreExecutionPlanResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  DescribeRescoreExecutionPlan
        internal virtual DescribeRescoreExecutionPlanResponse DescribeRescoreExecutionPlan(DescribeRescoreExecutionPlanRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRescoreExecutionPlanResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets information about a rescore execution plan. A rescore execution plan is an Amazon
        /// Kendra Intelligent Ranking resource used for provisioning the Rescore
        /// API.
        /// 
        /// Container for the necessary parameters to execute the DescribeRescoreExecutionPlan service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeRescoreExecutionPlan service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use doesn't exist. Please check you have provided the correct
        /// resource and try again.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for DescribeRescoreExecutionPlan Operation
        public virtual Task DescribeRescoreExecutionPlanAsync(DescribeRescoreExecutionPlanRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DescribeRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DescribeRescoreExecutionPlanResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListRescoreExecutionPlans
        internal virtual ListRescoreExecutionPlansResponse ListRescoreExecutionPlans(ListRescoreExecutionPlansRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListRescoreExecutionPlansRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListRescoreExecutionPlansResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Lists your rescore execution plans. A rescore execution plan is an Amazon Kendra Intelligent
        /// Ranking resource used for provisioning the Rescore API.
        /// 
        /// Container for the necessary parameters to execute the ListRescoreExecutionPlans service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListRescoreExecutionPlans service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for ListRescoreExecutionPlans Operation
        public virtual Task ListRescoreExecutionPlansAsync(ListRescoreExecutionPlansRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListRescoreExecutionPlansRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListRescoreExecutionPlansResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  ListTagsForResource
        internal virtual ListTagsForResourceResponse ListTagsForResource(ListTagsForResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Gets a list of tags associated with a specified resource. A rescore execution plan
        /// is an example of a resource that can have tags associated with it.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListTagsForResource service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use is unavailable. Please check you have provided the correct
        /// resource information and try again.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for ListTagsForResource Operation
        public virtual Task ListTagsForResourceAsync(ListTagsForResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  Rescore
        internal virtual RescoreResponse Rescore(RescoreRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = RescoreRequestMarshaller.Instance;
            options.ResponseUnmarshaller = RescoreResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Rescores or re-ranks search results from a search service such as OpenSearch (self
        /// managed). You use the semantic search capabilities of Amazon Kendra Intelligent Ranking
        /// to improve the search service's results.
        /// 
        /// Container for the necessary parameters to execute the Rescore service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the Rescore service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// A conflict occurred with the request. Please fix any inconsistencies with your resources
        /// and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use doesn't exist. Please check you have provided the correct
        /// resource and try again.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for Rescore Operation
        public virtual Task RescoreAsync(RescoreRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = RescoreRequestMarshaller.Instance;
            options.ResponseUnmarshaller = RescoreResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  TagResource
        internal virtual TagResourceResponse TagResource(TagResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Adds a specified tag to a specified rescore execution plan. A rescore execution plan
        /// is an Amazon Kendra Intelligent Ranking resource used for provisioning the Rescore
        /// API. If the tag already exists, the existing value is replaced with the new value.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the TagResource service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use is unavailable. Please check you have provided the correct
        /// resource information and try again.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for TagResource Operation
        public virtual Task TagResourceAsync(TagResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UntagResource
        internal virtual UntagResourceResponse UntagResource(UntagResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Removes a tag from a rescore execution plan. A rescore execution plan is an Amazon
        /// Kendra Intelligent Ranking resource used for provisioning the Rescore
        /// operation.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UntagResource service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use is unavailable. Please check you have provided the correct
        /// resource information and try again.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for UntagResource Operation
        public virtual Task UntagResourceAsync(UntagResourceRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
        #region  UpdateRescoreExecutionPlan
        internal virtual UpdateRescoreExecutionPlanResponse UpdateRescoreExecutionPlan(UpdateRescoreExecutionPlanRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateRescoreExecutionPlanResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Updates a rescore execution plan. A rescore execution plan is an Amazon Kendra Intelligent
        /// Ranking resource used for provisioning the Rescore API. You can update
        /// the number of capacity units you require for Amazon Kendra Intelligent Ranking to
        /// rescore or re-rank a search service's results.
        /// 
        /// Container for the necessary parameters to execute the UpdateRescoreExecutionPlan service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateRescoreExecutionPlan service method, as returned by KendraRanking.
        /// 
        /// You don’t have sufficient access to perform this action. Please ensure you have the
        /// required permission policies and user accounts and try again.
        /// 
        /// 
        /// A conflict occurred with the request. Please fix any inconsistencies with your resources
        /// and try again.
        /// 
        /// 
        /// An issue occurred with the internal server used for your Amazon Kendra Intelligent
        /// Ranking service. Please wait a few minutes and try again, or contact Support
        /// for help.
        /// 
        /// 
        /// The resource you want to use doesn't exist. Please check you have provided the correct
        /// resource and try again.
        /// 
        /// 
        /// You have exceeded the set limits for your Amazon Kendra Intelligent Ranking service.
        /// Please see Quotas
        /// for more information, or contact Support
        /// to inquire about an increase of limits.
        /// 
        /// 
        /// The request was denied due to request throttling. Please reduce the number of requests
        /// and try again.
        /// 
        /// 
        /// The input fails to satisfy the constraints set by the Amazon Kendra Intelligent Ranking
        /// service. Please provide the correct input and try again.
        /// 
        /// REST API Reference for UpdateRescoreExecutionPlan Operation
        public virtual Task UpdateRescoreExecutionPlanAsync(UpdateRescoreExecutionPlanRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateRescoreExecutionPlanRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateRescoreExecutionPlanResponseUnmarshaller.Instance;
            return InvokeAsync(request, options, cancellationToken);
        }
        #endregion
        
    }
}