/*
 * 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 route53-recovery-readiness-2019-12-02.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Net;
using Amazon.Route53RecoveryReadiness.Model;
using Amazon.Route53RecoveryReadiness.Model.Internal.MarshallTransformations;
using Amazon.Route53RecoveryReadiness.Internal;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
using Amazon.Runtime.Internal.Auth;
using Amazon.Runtime.Internal.Transform;
namespace Amazon.Route53RecoveryReadiness
{
    /// 
    /// Implementation for accessing Route53RecoveryReadiness
    ///
    /// Recovery readiness
    /// 
    public partial class AmazonRoute53RecoveryReadinessClient : AmazonServiceClient, IAmazonRoute53RecoveryReadiness
    {
        private static IServiceMetadata serviceMetadata = new AmazonRoute53RecoveryReadinessMetadata();
#if BCL45 || AWS_ASYNC_ENUMERABLES_API
        private IRoute53RecoveryReadinessPaginatorFactory _paginators;
        /// 
        /// Paginators for the service
        /// 
        public IRoute53RecoveryReadinessPaginatorFactory Paginators 
        {
            get 
            {
                if (this._paginators == null) 
                {
                    this._paginators = new Route53RecoveryReadinessPaginatorFactory(this);
                }
                return this._paginators;
            }
        }
#endif
        #region Constructors
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient 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 AmazonRoute53RecoveryReadinessClient()
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonRoute53RecoveryReadinessConfig()) { }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient 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 AmazonRoute53RecoveryReadinessClient(RegionEndpoint region)
            : base(FallbackCredentialsFactory.GetCredentials(), new AmazonRoute53RecoveryReadinessConfig{RegionEndpoint = region}) { }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient 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 AmazonRoute53RecoveryReadinessClient Configuration Object
        public AmazonRoute53RecoveryReadinessClient(AmazonRoute53RecoveryReadinessConfig config)
            : base(FallbackCredentialsFactory.GetCredentials(config), config){}
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Credentials
        /// 
        /// AWS Credentials
        public AmazonRoute53RecoveryReadinessClient(AWSCredentials credentials)
            : this(credentials, new AmazonRoute53RecoveryReadinessConfig())
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Credentials
        /// 
        /// AWS Credentials
        /// The region to connect.
        public AmazonRoute53RecoveryReadinessClient(AWSCredentials credentials, RegionEndpoint region)
            : this(credentials, new AmazonRoute53RecoveryReadinessConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Credentials and an
        /// AmazonRoute53RecoveryReadinessClient Configuration object.
        /// 
        /// AWS Credentials
        /// The AmazonRoute53RecoveryReadinessClient Configuration Object
        public AmazonRoute53RecoveryReadinessClient(AWSCredentials credentials, AmazonRoute53RecoveryReadinessConfig clientConfig)
            : base(credentials, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        public AmazonRoute53RecoveryReadinessClient(string awsAccessKeyId, string awsSecretAccessKey)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonRoute53RecoveryReadinessConfig())
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The region to connect.
        public AmazonRoute53RecoveryReadinessClient(string awsAccessKeyId, string awsSecretAccessKey, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, new AmazonRoute53RecoveryReadinessConfig() {RegionEndpoint=region})
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonRoute53RecoveryReadinessClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// The AmazonRoute53RecoveryReadinessClient Configuration Object
        public AmazonRoute53RecoveryReadinessClient(string awsAccessKeyId, string awsSecretAccessKey, AmazonRoute53RecoveryReadinessConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, clientConfig)
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Access Key ID and AWS Secret Key
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        public AmazonRoute53RecoveryReadinessClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonRoute53RecoveryReadinessConfig())
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient 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 AmazonRoute53RecoveryReadinessClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, RegionEndpoint region)
            : this(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, new AmazonRoute53RecoveryReadinessConfig{RegionEndpoint = region})
        {
        }
        /// 
        /// Constructs AmazonRoute53RecoveryReadinessClient with AWS Access Key ID, AWS Secret Key and an
        /// AmazonRoute53RecoveryReadinessClient Configuration object. 
        /// 
        /// AWS Access Key ID
        /// AWS Secret Access Key
        /// AWS Session Token
        /// The AmazonRoute53RecoveryReadinessClient Configuration Object
        public AmazonRoute53RecoveryReadinessClient(string awsAccessKeyId, string awsSecretAccessKey, string awsSessionToken, AmazonRoute53RecoveryReadinessConfig clientConfig)
            : base(awsAccessKeyId, awsSecretAccessKey, awsSessionToken, clientConfig)
        {
        }
        #endregion
        #region Overrides
        
        /// 
        /// Creates the signer for the service.
        /// 
        protected override AbstractAWSSigner CreateSigner()
        {
            return new AWS4Signer();
        }
        /// 
        /// Customize the pipeline
        /// 
        /// 
        protected override void CustomizeRuntimePipeline(RuntimePipeline pipeline)
        {
            pipeline.RemoveHandler();
            pipeline.AddHandlerAfter(new AmazonRoute53RecoveryReadinessEndpointResolver());
        }
        /// 
        /// 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  CreateCell
        /// 
        /// Creates a cell in an account.
        /// 
        /// Container for the necessary parameters to execute the CreateCell service method.
        /// 
        /// The response from the CreateCell service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// Updating or deleting a resource can cause an inconsistent state.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for CreateCell Operation
        public virtual CreateCellResponse CreateCell(CreateCellRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateCellResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateCell operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateCell operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateCell
        ///         operation.
        /// REST API Reference for CreateCell Operation
        public virtual IAsyncResult BeginCreateCell(CreateCellRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateCellResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateCell operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateCell.
        /// 
        /// Returns a  CreateCellResult from Route53RecoveryReadiness.
        /// REST API Reference for CreateCell Operation
        public virtual CreateCellResponse EndCreateCell(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateCrossAccountAuthorization
        /// 
        /// Creates a cross-account readiness authorization. This lets you authorize another account
        /// to work with Route 53 Application Recovery Controller, for example, to check the readiness
        /// status of resources in a separate account.
        /// 
        /// Container for the necessary parameters to execute the CreateCrossAccountAuthorization service method.
        /// 
        /// The response from the CreateCrossAccountAuthorization service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// Updating or deleting a resource can cause an inconsistent state.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for CreateCrossAccountAuthorization Operation
        public virtual CreateCrossAccountAuthorizationResponse CreateCrossAccountAuthorization(CreateCrossAccountAuthorizationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateCrossAccountAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateCrossAccountAuthorizationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateCrossAccountAuthorization operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateCrossAccountAuthorization operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateCrossAccountAuthorization
        ///         operation.
        /// REST API Reference for CreateCrossAccountAuthorization Operation
        public virtual IAsyncResult BeginCreateCrossAccountAuthorization(CreateCrossAccountAuthorizationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateCrossAccountAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateCrossAccountAuthorizationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateCrossAccountAuthorization operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateCrossAccountAuthorization.
        /// 
        /// Returns a  CreateCrossAccountAuthorizationResult from Route53RecoveryReadiness.
        /// REST API Reference for CreateCrossAccountAuthorization Operation
        public virtual CreateCrossAccountAuthorizationResponse EndCreateCrossAccountAuthorization(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateReadinessCheck
        /// 
        /// Creates a readiness check in an account. A readiness check monitors a resource set
        /// in your application, such as a set of Amazon Aurora instances, that Application Recovery
        /// Controller is auditing recovery readiness for. The audits run once every minute on
        /// every resource that's associated with a readiness check.
        /// 
        /// Container for the necessary parameters to execute the CreateReadinessCheck service method.
        /// 
        /// The response from the CreateReadinessCheck service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// Updating or deleting a resource can cause an inconsistent state.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for CreateReadinessCheck Operation
        public virtual CreateReadinessCheckResponse CreateReadinessCheck(CreateReadinessCheckRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateReadinessCheckResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateReadinessCheck operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateReadinessCheck operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateReadinessCheck
        ///         operation.
        /// REST API Reference for CreateReadinessCheck Operation
        public virtual IAsyncResult BeginCreateReadinessCheck(CreateReadinessCheckRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateReadinessCheckResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateReadinessCheck operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateReadinessCheck.
        /// 
        /// Returns a  CreateReadinessCheckResult from Route53RecoveryReadiness.
        /// REST API Reference for CreateReadinessCheck Operation
        public virtual CreateReadinessCheckResponse EndCreateReadinessCheck(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateRecoveryGroup
        /// 
        /// Creates a recovery group in an account. A recovery group corresponds to an application
        /// and includes a list of the cells that make up the application.
        /// 
        /// Container for the necessary parameters to execute the CreateRecoveryGroup service method.
        /// 
        /// The response from the CreateRecoveryGroup service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// Updating or deleting a resource can cause an inconsistent state.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for CreateRecoveryGroup Operation
        public virtual CreateRecoveryGroupResponse CreateRecoveryGroup(CreateRecoveryGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateRecoveryGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateRecoveryGroup operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateRecoveryGroup operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateRecoveryGroup
        ///         operation.
        /// REST API Reference for CreateRecoveryGroup Operation
        public virtual IAsyncResult BeginCreateRecoveryGroup(CreateRecoveryGroupRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateRecoveryGroupResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateRecoveryGroup operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateRecoveryGroup.
        /// 
        /// Returns a  CreateRecoveryGroupResult from Route53RecoveryReadiness.
        /// REST API Reference for CreateRecoveryGroup Operation
        public virtual CreateRecoveryGroupResponse EndCreateRecoveryGroup(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  CreateResourceSet
        /// 
        /// Creates a resource set. A resource set is a set of resources of one type that span
        /// multiple cells. You can associate a resource set with a readiness check to monitor
        /// the resources for failover readiness.
        /// 
        /// Container for the necessary parameters to execute the CreateResourceSet service method.
        /// 
        /// The response from the CreateResourceSet service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// Updating or deleting a resource can cause an inconsistent state.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for CreateResourceSet Operation
        public virtual CreateResourceSetResponse CreateResourceSet(CreateResourceSetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateResourceSetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the CreateResourceSet operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CreateResourceSet operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCreateResourceSet
        ///         operation.
        /// REST API Reference for CreateResourceSet Operation
        public virtual IAsyncResult BeginCreateResourceSet(CreateResourceSetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = CreateResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = CreateResourceSetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  CreateResourceSet operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCreateResourceSet.
        /// 
        /// Returns a  CreateResourceSetResult from Route53RecoveryReadiness.
        /// REST API Reference for CreateResourceSet Operation
        public virtual CreateResourceSetResponse EndCreateResourceSet(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteCell
        /// 
        /// Delete a cell. When successful, the response code is 204, with no response body.
        /// 
        /// Container for the necessary parameters to execute the DeleteCell service method.
        /// 
        /// The response from the DeleteCell service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for DeleteCell Operation
        public virtual DeleteCellResponse DeleteCell(DeleteCellRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteCellResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteCell operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteCell operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteCell
        ///         operation.
        /// REST API Reference for DeleteCell Operation
        public virtual IAsyncResult BeginDeleteCell(DeleteCellRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteCellResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteCell operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteCell.
        /// 
        /// Returns a  DeleteCellResult from Route53RecoveryReadiness.
        /// REST API Reference for DeleteCell Operation
        public virtual DeleteCellResponse EndDeleteCell(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteCrossAccountAuthorization
        /// 
        /// Deletes cross account readiness authorization.
        /// 
        /// Container for the necessary parameters to execute the DeleteCrossAccountAuthorization service method.
        /// 
        /// The response from the DeleteCrossAccountAuthorization service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for DeleteCrossAccountAuthorization Operation
        public virtual DeleteCrossAccountAuthorizationResponse DeleteCrossAccountAuthorization(DeleteCrossAccountAuthorizationRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteCrossAccountAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteCrossAccountAuthorizationResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteCrossAccountAuthorization operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteCrossAccountAuthorization operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteCrossAccountAuthorization
        ///         operation.
        /// REST API Reference for DeleteCrossAccountAuthorization Operation
        public virtual IAsyncResult BeginDeleteCrossAccountAuthorization(DeleteCrossAccountAuthorizationRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteCrossAccountAuthorizationRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteCrossAccountAuthorizationResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteCrossAccountAuthorization operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteCrossAccountAuthorization.
        /// 
        /// Returns a  DeleteCrossAccountAuthorizationResult from Route53RecoveryReadiness.
        /// REST API Reference for DeleteCrossAccountAuthorization Operation
        public virtual DeleteCrossAccountAuthorizationResponse EndDeleteCrossAccountAuthorization(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteReadinessCheck
        /// 
        /// Deletes a readiness check.
        /// 
        /// Container for the necessary parameters to execute the DeleteReadinessCheck service method.
        /// 
        /// The response from the DeleteReadinessCheck service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for DeleteReadinessCheck Operation
        public virtual DeleteReadinessCheckResponse DeleteReadinessCheck(DeleteReadinessCheckRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteReadinessCheckResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteReadinessCheck operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteReadinessCheck operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteReadinessCheck
        ///         operation.
        /// REST API Reference for DeleteReadinessCheck Operation
        public virtual IAsyncResult BeginDeleteReadinessCheck(DeleteReadinessCheckRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteReadinessCheckResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteReadinessCheck operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteReadinessCheck.
        /// 
        /// Returns a  DeleteReadinessCheckResult from Route53RecoveryReadiness.
        /// REST API Reference for DeleteReadinessCheck Operation
        public virtual DeleteReadinessCheckResponse EndDeleteReadinessCheck(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteRecoveryGroup
        /// 
        /// Deletes a recovery group.
        /// 
        /// Container for the necessary parameters to execute the DeleteRecoveryGroup service method.
        /// 
        /// The response from the DeleteRecoveryGroup service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for DeleteRecoveryGroup Operation
        public virtual DeleteRecoveryGroupResponse DeleteRecoveryGroup(DeleteRecoveryGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRecoveryGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteRecoveryGroup operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteRecoveryGroup operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteRecoveryGroup
        ///         operation.
        /// REST API Reference for DeleteRecoveryGroup Operation
        public virtual IAsyncResult BeginDeleteRecoveryGroup(DeleteRecoveryGroupRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteRecoveryGroupResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteRecoveryGroup operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteRecoveryGroup.
        /// 
        /// Returns a  DeleteRecoveryGroupResult from Route53RecoveryReadiness.
        /// REST API Reference for DeleteRecoveryGroup Operation
        public virtual DeleteRecoveryGroupResponse EndDeleteRecoveryGroup(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  DeleteResourceSet
        /// 
        /// Deletes a resource set.
        /// 
        /// Container for the necessary parameters to execute the DeleteResourceSet service method.
        /// 
        /// The response from the DeleteResourceSet service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for DeleteResourceSet Operation
        public virtual DeleteResourceSetResponse DeleteResourceSet(DeleteResourceSetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteResourceSetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the DeleteResourceSet operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the DeleteResourceSet operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndDeleteResourceSet
        ///         operation.
        /// REST API Reference for DeleteResourceSet Operation
        public virtual IAsyncResult BeginDeleteResourceSet(DeleteResourceSetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = DeleteResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = DeleteResourceSetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  DeleteResourceSet operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginDeleteResourceSet.
        /// 
        /// Returns a  DeleteResourceSetResult from Route53RecoveryReadiness.
        /// REST API Reference for DeleteResourceSet Operation
        public virtual DeleteResourceSetResponse EndDeleteResourceSet(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetArchitectureRecommendations
        /// 
        /// Gets recommendations about architecture designs for improving resiliency for an application,
        /// based on a recovery group.
        /// 
        /// Container for the necessary parameters to execute the GetArchitectureRecommendations service method.
        /// 
        /// The response from the GetArchitectureRecommendations service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetArchitectureRecommendations Operation
        public virtual GetArchitectureRecommendationsResponse GetArchitectureRecommendations(GetArchitectureRecommendationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetArchitectureRecommendationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetArchitectureRecommendationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetArchitectureRecommendations operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetArchitectureRecommendations operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetArchitectureRecommendations
        ///         operation.
        /// REST API Reference for GetArchitectureRecommendations Operation
        public virtual IAsyncResult BeginGetArchitectureRecommendations(GetArchitectureRecommendationsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetArchitectureRecommendationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetArchitectureRecommendationsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetArchitectureRecommendations operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetArchitectureRecommendations.
        /// 
        /// Returns a  GetArchitectureRecommendationsResult from Route53RecoveryReadiness.
        /// REST API Reference for GetArchitectureRecommendations Operation
        public virtual GetArchitectureRecommendationsResponse EndGetArchitectureRecommendations(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetCell
        /// 
        /// Gets information about a cell including cell name, cell Amazon Resource Name (ARN),
        /// ARNs of nested cells for this cell, and a list of those cell ARNs with their associated
        /// recovery group ARNs.
        /// 
        /// Container for the necessary parameters to execute the GetCell service method.
        /// 
        /// The response from the GetCell service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetCell Operation
        public virtual GetCellResponse GetCell(GetCellRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetCellResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetCell operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetCell operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetCell
        ///         operation.
        /// REST API Reference for GetCell Operation
        public virtual IAsyncResult BeginGetCell(GetCellRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetCellResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetCell operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetCell.
        /// 
        /// Returns a  GetCellResult from Route53RecoveryReadiness.
        /// REST API Reference for GetCell Operation
        public virtual GetCellResponse EndGetCell(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetCellReadinessSummary
        /// 
        /// Gets readiness for a cell. Aggregates the readiness of all the resources that are
        /// associated with the cell into a single value.
        /// 
        /// Container for the necessary parameters to execute the GetCellReadinessSummary service method.
        /// 
        /// The response from the GetCellReadinessSummary service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetCellReadinessSummary Operation
        public virtual GetCellReadinessSummaryResponse GetCellReadinessSummary(GetCellReadinessSummaryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetCellReadinessSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetCellReadinessSummaryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetCellReadinessSummary operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetCellReadinessSummary operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetCellReadinessSummary
        ///         operation.
        /// REST API Reference for GetCellReadinessSummary Operation
        public virtual IAsyncResult BeginGetCellReadinessSummary(GetCellReadinessSummaryRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetCellReadinessSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetCellReadinessSummaryResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetCellReadinessSummary operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetCellReadinessSummary.
        /// 
        /// Returns a  GetCellReadinessSummaryResult from Route53RecoveryReadiness.
        /// REST API Reference for GetCellReadinessSummary Operation
        public virtual GetCellReadinessSummaryResponse EndGetCellReadinessSummary(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetReadinessCheck
        /// 
        /// Gets details about a readiness check.
        /// 
        /// Container for the necessary parameters to execute the GetReadinessCheck service method.
        /// 
        /// The response from the GetReadinessCheck service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetReadinessCheck Operation
        public virtual GetReadinessCheckResponse GetReadinessCheck(GetReadinessCheckRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetReadinessCheckResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetReadinessCheck operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetReadinessCheck operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetReadinessCheck
        ///         operation.
        /// REST API Reference for GetReadinessCheck Operation
        public virtual IAsyncResult BeginGetReadinessCheck(GetReadinessCheckRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetReadinessCheckResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetReadinessCheck operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetReadinessCheck.
        /// 
        /// Returns a  GetReadinessCheckResult from Route53RecoveryReadiness.
        /// REST API Reference for GetReadinessCheck Operation
        public virtual GetReadinessCheckResponse EndGetReadinessCheck(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetReadinessCheckResourceStatus
        /// 
        /// Gets individual readiness status for a readiness check. To see the overall readiness
        /// status for a recovery group, that considers the readiness status for all the readiness
        /// checks in the recovery group, use GetRecoveryGroupReadinessSummary.
        /// 
        /// Container for the necessary parameters to execute the GetReadinessCheckResourceStatus service method.
        /// 
        /// The response from the GetReadinessCheckResourceStatus service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetReadinessCheckResourceStatus Operation
        public virtual GetReadinessCheckResourceStatusResponse GetReadinessCheckResourceStatus(GetReadinessCheckResourceStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetReadinessCheckResourceStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetReadinessCheckResourceStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetReadinessCheckResourceStatus operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetReadinessCheckResourceStatus operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetReadinessCheckResourceStatus
        ///         operation.
        /// REST API Reference for GetReadinessCheckResourceStatus Operation
        public virtual IAsyncResult BeginGetReadinessCheckResourceStatus(GetReadinessCheckResourceStatusRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetReadinessCheckResourceStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetReadinessCheckResourceStatusResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetReadinessCheckResourceStatus operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetReadinessCheckResourceStatus.
        /// 
        /// Returns a  GetReadinessCheckResourceStatusResult from Route53RecoveryReadiness.
        /// REST API Reference for GetReadinessCheckResourceStatus Operation
        public virtual GetReadinessCheckResourceStatusResponse EndGetReadinessCheckResourceStatus(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetReadinessCheckStatus
        /// 
        /// Gets the readiness status for an individual readiness check. To see the overall readiness
        /// status for a recovery group, that considers the readiness status for all the readiness
        /// checks in a recovery group, use GetRecoveryGroupReadinessSummary.
        /// 
        /// Container for the necessary parameters to execute the GetReadinessCheckStatus service method.
        /// 
        /// The response from the GetReadinessCheckStatus service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetReadinessCheckStatus Operation
        public virtual GetReadinessCheckStatusResponse GetReadinessCheckStatus(GetReadinessCheckStatusRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetReadinessCheckStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetReadinessCheckStatusResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetReadinessCheckStatus operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetReadinessCheckStatus operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetReadinessCheckStatus
        ///         operation.
        /// REST API Reference for GetReadinessCheckStatus Operation
        public virtual IAsyncResult BeginGetReadinessCheckStatus(GetReadinessCheckStatusRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetReadinessCheckStatusRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetReadinessCheckStatusResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetReadinessCheckStatus operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetReadinessCheckStatus.
        /// 
        /// Returns a  GetReadinessCheckStatusResult from Route53RecoveryReadiness.
        /// REST API Reference for GetReadinessCheckStatus Operation
        public virtual GetReadinessCheckStatusResponse EndGetReadinessCheckStatus(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetRecoveryGroup
        /// 
        /// Gets details about a recovery group, including a list of the cells that are included
        /// in it.
        /// 
        /// Container for the necessary parameters to execute the GetRecoveryGroup service method.
        /// 
        /// The response from the GetRecoveryGroup service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetRecoveryGroup Operation
        public virtual GetRecoveryGroupResponse GetRecoveryGroup(GetRecoveryGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetRecoveryGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetRecoveryGroup operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetRecoveryGroup operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetRecoveryGroup
        ///         operation.
        /// REST API Reference for GetRecoveryGroup Operation
        public virtual IAsyncResult BeginGetRecoveryGroup(GetRecoveryGroupRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetRecoveryGroupResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetRecoveryGroup operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetRecoveryGroup.
        /// 
        /// Returns a  GetRecoveryGroupResult from Route53RecoveryReadiness.
        /// REST API Reference for GetRecoveryGroup Operation
        public virtual GetRecoveryGroupResponse EndGetRecoveryGroup(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetRecoveryGroupReadinessSummary
        /// 
        /// Displays a summary of information about a recovery group's readiness status. Includes
        /// the readiness checks for resources in the recovery group and the readiness status
        /// of each one.
        /// 
        /// Container for the necessary parameters to execute the GetRecoveryGroupReadinessSummary service method.
        /// 
        /// The response from the GetRecoveryGroupReadinessSummary service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetRecoveryGroupReadinessSummary Operation
        public virtual GetRecoveryGroupReadinessSummaryResponse GetRecoveryGroupReadinessSummary(GetRecoveryGroupReadinessSummaryRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetRecoveryGroupReadinessSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetRecoveryGroupReadinessSummaryResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetRecoveryGroupReadinessSummary operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetRecoveryGroupReadinessSummary operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetRecoveryGroupReadinessSummary
        ///         operation.
        /// REST API Reference for GetRecoveryGroupReadinessSummary Operation
        public virtual IAsyncResult BeginGetRecoveryGroupReadinessSummary(GetRecoveryGroupReadinessSummaryRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetRecoveryGroupReadinessSummaryRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetRecoveryGroupReadinessSummaryResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetRecoveryGroupReadinessSummary operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetRecoveryGroupReadinessSummary.
        /// 
        /// Returns a  GetRecoveryGroupReadinessSummaryResult from Route53RecoveryReadiness.
        /// REST API Reference for GetRecoveryGroupReadinessSummary Operation
        public virtual GetRecoveryGroupReadinessSummaryResponse EndGetRecoveryGroupReadinessSummary(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  GetResourceSet
        /// 
        /// Displays the details about a resource set, including a list of the resources in the
        /// set.
        /// 
        /// Container for the necessary parameters to execute the GetResourceSet service method.
        /// 
        /// The response from the GetResourceSet service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetResourceSet Operation
        public virtual GetResourceSetResponse GetResourceSet(GetResourceSetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetResourceSetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the GetResourceSet operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetResourceSet operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetResourceSet
        ///         operation.
        /// REST API Reference for GetResourceSet Operation
        public virtual IAsyncResult BeginGetResourceSet(GetResourceSetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = GetResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetResourceSetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  GetResourceSet operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetResourceSet.
        /// 
        /// Returns a  GetResourceSetResult from Route53RecoveryReadiness.
        /// REST API Reference for GetResourceSet Operation
        public virtual GetResourceSetResponse EndGetResourceSet(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListCells
        /// 
        /// Lists the cells for an account.
        /// 
        /// Container for the necessary parameters to execute the ListCells service method.
        /// 
        /// The response from the ListCells service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListCells Operation
        public virtual ListCellsResponse ListCells(ListCellsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListCellsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListCellsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListCells operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListCells operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListCells
        ///         operation.
        /// REST API Reference for ListCells Operation
        public virtual IAsyncResult BeginListCells(ListCellsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListCellsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListCellsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListCells operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListCells.
        /// 
        /// Returns a  ListCellsResult from Route53RecoveryReadiness.
        /// REST API Reference for ListCells Operation
        public virtual ListCellsResponse EndListCells(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListCrossAccountAuthorizations
        /// 
        /// Lists the cross-account readiness authorizations that are in place for an account.
        /// 
        /// Container for the necessary parameters to execute the ListCrossAccountAuthorizations service method.
        /// 
        /// The response from the ListCrossAccountAuthorizations service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListCrossAccountAuthorizations Operation
        public virtual ListCrossAccountAuthorizationsResponse ListCrossAccountAuthorizations(ListCrossAccountAuthorizationsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListCrossAccountAuthorizationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListCrossAccountAuthorizationsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListCrossAccountAuthorizations operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListCrossAccountAuthorizations operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListCrossAccountAuthorizations
        ///         operation.
        /// REST API Reference for ListCrossAccountAuthorizations Operation
        public virtual IAsyncResult BeginListCrossAccountAuthorizations(ListCrossAccountAuthorizationsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListCrossAccountAuthorizationsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListCrossAccountAuthorizationsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListCrossAccountAuthorizations operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListCrossAccountAuthorizations.
        /// 
        /// Returns a  ListCrossAccountAuthorizationsResult from Route53RecoveryReadiness.
        /// REST API Reference for ListCrossAccountAuthorizations Operation
        public virtual ListCrossAccountAuthorizationsResponse EndListCrossAccountAuthorizations(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListReadinessChecks
        /// 
        /// Lists the readiness checks for an account.
        /// 
        /// Container for the necessary parameters to execute the ListReadinessChecks service method.
        /// 
        /// The response from the ListReadinessChecks service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListReadinessChecks Operation
        public virtual ListReadinessChecksResponse ListReadinessChecks(ListReadinessChecksRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListReadinessChecksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListReadinessChecksResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListReadinessChecks operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListReadinessChecks operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListReadinessChecks
        ///         operation.
        /// REST API Reference for ListReadinessChecks Operation
        public virtual IAsyncResult BeginListReadinessChecks(ListReadinessChecksRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListReadinessChecksRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListReadinessChecksResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListReadinessChecks operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListReadinessChecks.
        /// 
        /// Returns a  ListReadinessChecksResult from Route53RecoveryReadiness.
        /// REST API Reference for ListReadinessChecks Operation
        public virtual ListReadinessChecksResponse EndListReadinessChecks(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListRecoveryGroups
        /// 
        /// Lists the recovery groups in an account.
        /// 
        /// Container for the necessary parameters to execute the ListRecoveryGroups service method.
        /// 
        /// The response from the ListRecoveryGroups service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListRecoveryGroups Operation
        public virtual ListRecoveryGroupsResponse ListRecoveryGroups(ListRecoveryGroupsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListRecoveryGroupsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListRecoveryGroupsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListRecoveryGroups operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListRecoveryGroups operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListRecoveryGroups
        ///         operation.
        /// REST API Reference for ListRecoveryGroups Operation
        public virtual IAsyncResult BeginListRecoveryGroups(ListRecoveryGroupsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListRecoveryGroupsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListRecoveryGroupsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListRecoveryGroups operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListRecoveryGroups.
        /// 
        /// Returns a  ListRecoveryGroupsResult from Route53RecoveryReadiness.
        /// REST API Reference for ListRecoveryGroups Operation
        public virtual ListRecoveryGroupsResponse EndListRecoveryGroups(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListResourceSets
        /// 
        /// Lists the resource sets in an account.
        /// 
        /// Container for the necessary parameters to execute the ListResourceSets service method.
        /// 
        /// The response from the ListResourceSets service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListResourceSets Operation
        public virtual ListResourceSetsResponse ListResourceSets(ListResourceSetsRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListResourceSetsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListResourceSetsResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListResourceSets operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListResourceSets operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListResourceSets
        ///         operation.
        /// REST API Reference for ListResourceSets Operation
        public virtual IAsyncResult BeginListResourceSets(ListResourceSetsRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListResourceSetsRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListResourceSetsResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListResourceSets operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListResourceSets.
        /// 
        /// Returns a  ListResourceSetsResult from Route53RecoveryReadiness.
        /// REST API Reference for ListResourceSets Operation
        public virtual ListResourceSetsResponse EndListResourceSets(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListRules
        /// 
        /// Lists all readiness rules, or lists the readiness rules for a specific resource type.
        /// 
        /// Container for the necessary parameters to execute the ListRules service method.
        /// 
        /// The response from the ListRules service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListRules Operation
        public virtual ListRulesResponse ListRules(ListRulesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListRulesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListRules operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListRules operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListRules
        ///         operation.
        /// REST API Reference for ListRules Operation
        public virtual IAsyncResult BeginListRules(ListRulesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListRulesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListRulesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListRules operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListRules.
        /// 
        /// Returns a  ListRulesResult from Route53RecoveryReadiness.
        /// REST API Reference for ListRules Operation
        public virtual ListRulesResponse EndListRules(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  ListTagsForResources
        /// 
        /// Lists the tags for a resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResources service method.
        /// 
        /// The response from the ListTagsForResources service method, as returned by Route53RecoveryReadiness.
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListTagsForResources Operation
        public virtual ListTagsForResourcesResponse ListTagsForResources(ListTagsForResourcesRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourcesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourcesResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the ListTagsForResources operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResources operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListTagsForResources
        ///         operation.
        /// REST API Reference for ListTagsForResources Operation
        public virtual IAsyncResult BeginListTagsForResources(ListTagsForResourcesRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = ListTagsForResourcesRequestMarshaller.Instance;
            options.ResponseUnmarshaller = ListTagsForResourcesResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  ListTagsForResources operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListTagsForResources.
        /// 
        /// Returns a  ListTagsForResourcesResult from Route53RecoveryReadiness.
        /// REST API Reference for ListTagsForResources Operation
        public virtual ListTagsForResourcesResponse EndListTagsForResources(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  TagResource
        /// 
        /// Adds a tag to a resource.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by Route53RecoveryReadiness.
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for TagResource Operation
        public virtual TagResourceResponse TagResource(TagResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the TagResource operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the TagResource operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndTagResource
        ///         operation.
        /// REST API Reference for TagResource Operation
        public virtual IAsyncResult BeginTagResource(TagResourceRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = TagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = TagResourceResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  TagResource operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginTagResource.
        /// 
        /// Returns a  TagResourceResult from Route53RecoveryReadiness.
        /// REST API Reference for TagResource Operation
        public virtual TagResourceResponse EndTagResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UntagResource
        /// 
        /// Removes a tag from a resource.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by Route53RecoveryReadiness.
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for UntagResource Operation
        public virtual UntagResourceResponse UntagResource(UntagResourceRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UntagResource operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UntagResource operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUntagResource
        ///         operation.
        /// REST API Reference for UntagResource Operation
        public virtual IAsyncResult BeginUntagResource(UntagResourceRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UntagResourceRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UntagResourceResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UntagResource operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUntagResource.
        /// 
        /// Returns a  UntagResourceResult from Route53RecoveryReadiness.
        /// REST API Reference for UntagResource Operation
        public virtual UntagResourceResponse EndUntagResource(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateCell
        /// 
        /// Updates a cell to replace the list of nested cells with a new list of nested cells.
        /// 
        /// Container for the necessary parameters to execute the UpdateCell service method.
        /// 
        /// The response from the UpdateCell service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for UpdateCell Operation
        public virtual UpdateCellResponse UpdateCell(UpdateCellRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateCellResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateCell operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateCell operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdateCell
        ///         operation.
        /// REST API Reference for UpdateCell Operation
        public virtual IAsyncResult BeginUpdateCell(UpdateCellRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateCellRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateCellResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateCell operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateCell.
        /// 
        /// Returns a  UpdateCellResult from Route53RecoveryReadiness.
        /// REST API Reference for UpdateCell Operation
        public virtual UpdateCellResponse EndUpdateCell(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateReadinessCheck
        /// 
        /// Updates a readiness check.
        /// 
        /// Container for the necessary parameters to execute the UpdateReadinessCheck service method.
        /// 
        /// The response from the UpdateReadinessCheck service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for UpdateReadinessCheck Operation
        public virtual UpdateReadinessCheckResponse UpdateReadinessCheck(UpdateReadinessCheckRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateReadinessCheckResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateReadinessCheck operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateReadinessCheck operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdateReadinessCheck
        ///         operation.
        /// REST API Reference for UpdateReadinessCheck Operation
        public virtual IAsyncResult BeginUpdateReadinessCheck(UpdateReadinessCheckRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateReadinessCheckRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateReadinessCheckResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateReadinessCheck operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateReadinessCheck.
        /// 
        /// Returns a  UpdateReadinessCheckResult from Route53RecoveryReadiness.
        /// REST API Reference for UpdateReadinessCheck Operation
        public virtual UpdateReadinessCheckResponse EndUpdateReadinessCheck(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateRecoveryGroup
        /// 
        /// Updates a recovery group.
        /// 
        /// Container for the necessary parameters to execute the UpdateRecoveryGroup service method.
        /// 
        /// The response from the UpdateRecoveryGroup service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for UpdateRecoveryGroup Operation
        public virtual UpdateRecoveryGroupResponse UpdateRecoveryGroup(UpdateRecoveryGroupRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateRecoveryGroupResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateRecoveryGroup operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateRecoveryGroup operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdateRecoveryGroup
        ///         operation.
        /// REST API Reference for UpdateRecoveryGroup Operation
        public virtual IAsyncResult BeginUpdateRecoveryGroup(UpdateRecoveryGroupRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateRecoveryGroupRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateRecoveryGroupResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateRecoveryGroup operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateRecoveryGroup.
        /// 
        /// Returns a  UpdateRecoveryGroupResult from Route53RecoveryReadiness.
        /// REST API Reference for UpdateRecoveryGroup Operation
        public virtual UpdateRecoveryGroupResponse EndUpdateRecoveryGroup(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
        #region  UpdateResourceSet
        /// 
        /// Updates a resource set.
        /// 
        /// Container for the necessary parameters to execute the UpdateResourceSet service method.
        /// 
        /// The response from the UpdateResourceSet service method, as returned by Route53RecoveryReadiness.
        /// 
        /// User does not have sufficient access to perform this action.
        /// 
        /// 
        /// An unexpected error occurred.
        /// 
        /// 
        /// The requested resource does not exist.
        /// 
        /// 
        /// Request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for UpdateResourceSet Operation
        public virtual UpdateResourceSetResponse UpdateResourceSet(UpdateResourceSetRequest request)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateResourceSetResponseUnmarshaller.Instance;
            return Invoke(request, options);
        }
        /// 
        /// Initiates the asynchronous execution of the UpdateResourceSet operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateResourceSet operation on AmazonRoute53RecoveryReadinessClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdateResourceSet
        ///         operation.
        /// REST API Reference for UpdateResourceSet Operation
        public virtual IAsyncResult BeginUpdateResourceSet(UpdateResourceSetRequest request, AsyncCallback callback, object state)
        {
            var options = new InvokeOptions();
            options.RequestMarshaller = UpdateResourceSetRequestMarshaller.Instance;
            options.ResponseUnmarshaller = UpdateResourceSetResponseUnmarshaller.Instance;
            return BeginInvoke(request, options, callback, state);
        }
        /// 
        /// Finishes the asynchronous execution of the  UpdateResourceSet operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateResourceSet.
        /// 
        /// Returns a  UpdateResourceSetResult from Route53RecoveryReadiness.
        /// REST API Reference for UpdateResourceSet Operation
        public virtual UpdateResourceSetResponse EndUpdateResourceSet(IAsyncResult asyncResult)
        {
            return EndInvoke(asyncResult);
        }
        #endregion
        
    }
}